Spacy:日期未按预期工作的命名实体识别

2024-04-25 07:43:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定我是否完全理解spacy如何在文本中识别命名实体,在我的例子中,尤其是日期

我试图在文本文档中提取教育+相应日期。我有类似的东西

text = 'University of A  2019 - 2020
        University of B  2016 - 2019
        College A        2013 - 2016
        College B        2008 - 2013'
doc = nlp(text)
for ent in doc.ents:
     print(ent.text, ent.label_)

这给了我一个输出:

University of A  ORG
University of B  ORG
2016 - 2019      DATE
2013 - 2016      DATE
2008 - 2013      DATE

正如所料,大学被公认为组织,我希望斯帕西不会承认学院,因为它没有大学名称那么明显。然而,我不明白为什么我失去了第一次约会,但其他人都很好

我尝试了另一个类似这样的文本:

1997 : any text
1998 : any text
1999 : any text
...
2018 : any text

除2013年和2018年外,此处所有日期均已确认,尽管行的格式与所有其他日期相同

有没有办法训练spacy更好地识别日期,或者我应该使用其他工具?我已经在为同一程序的其他部分使用spacy。我现在没有使用正则表达式,因为日期可以有很多不同的格式(只有年份、年初-年末,有时也有月份和天数,等等)


Tags: oftextorg文本实体datedocspacy
1条回答
网友
1楼 · 发布于 2024-04-25 07:43:24

您需要一个功能更丰富的模型类型,即带有_md_lg后缀的spacy 2.x和带有_trf后缀的spacy 3.x

例如,您可以安装

python -m spacy download en_core_web_trf

那么,你可以使用

import spacy
nlp = spacy.load('en_core_web_trf')
text = '''University of A  2019 - 2020
         University of B  2016 - 2019
         College A        2013 - 2016
         College B        2008 - 2013'''
doc = nlp(text)
for ent in doc.ents:
    print(ent.text, ent.label_)

输出:

2019 - 2020 DATE
2016 - 2019 DATE
2013 - 2016 DATE
2008 - 2013 DATE

相关问题 更多 >