SpaCy 没有像预期的那样识别金钱和国家
SpaCy doesn't recognize money and countries as expected
我正在使用 SpaCy 从示例文本中提取不同的命名实体。问题是 SpaCy 不能识别所有预期的实体。它在资金和某些地点方面存在问题。这是我的代码:
# encoding: utf-8
import spacy
from spacy import displacy
nlp = spacy.load('es') #cargo el modelo en español.
text = u"Una vez un personaje le preguntó a Agustín Chirichigno si estaba en su casa. El nombre de este personaje es Lucas Picchi y es de Mar del Plata. Junto a SU PRIMO, DE ESTADOS UNIDOS hacen cosas re locas como por ejemplo comprar un Fernet Branca a AR.500 cuando en realidad está a 0."
doc = nlp(text)
displacy.serve(doc, style='ent')
请注意,我正在加载西班牙模型。我的配置如下:
空间信息
Info about spaCy
Python version 2.7.6
Platform Linux-4.4.0-112-generic-x86_64-with-Ubuntu-14.04-trusty
spaCy version 2.0.9
Location /usr/local/lib/python2.7/dist-packages/spacy
Models es, en
所以,输出是:
预期的是 SpaCy 正确识别 MONEY
(2500 美元是 2500 阿根廷比索,180 美元也是货币)。 "Junto" 不是 LOCATION
也不是 "SU PRIMO"。 "Junto a su primo" 相当于英文的 "with his cousin"。此外,Fernet Branca 是一个 BRAND
,而不是一个人。
所以,我的问题是:我做错了什么?我应该使用额外的库吗?
提前致谢。
根据西班牙模型的 spacy 文档,它支持识别 PER、LOC、ORG 和 MISC 实体。它是在 AnCora 和 WikiNER 语料库上训练的。
在发行说明中提到:
"Because the model is trained on Wikipedia, it may perform inconsistently on many genres, such as social media text."
由于您的数据结果不令人满意,您需要针对您的数据对其进行训练。这可以按照 here
中的建议完成
对于金钱,您实际上可以为美元货币编写一个像这样的简单正则表达式
^$?[0-9][0-9\,]*(\.\d{1,2})?$|^$?[\.]([\d][\d]?)$
我正在使用 SpaCy 从示例文本中提取不同的命名实体。问题是 SpaCy 不能识别所有预期的实体。它在资金和某些地点方面存在问题。这是我的代码:
# encoding: utf-8
import spacy
from spacy import displacy
nlp = spacy.load('es') #cargo el modelo en español.
text = u"Una vez un personaje le preguntó a Agustín Chirichigno si estaba en su casa. El nombre de este personaje es Lucas Picchi y es de Mar del Plata. Junto a SU PRIMO, DE ESTADOS UNIDOS hacen cosas re locas como por ejemplo comprar un Fernet Branca a AR.500 cuando en realidad está a 0."
doc = nlp(text)
displacy.serve(doc, style='ent')
请注意,我正在加载西班牙模型。我的配置如下: 空间信息
Info about spaCy
Python version 2.7.6
Platform Linux-4.4.0-112-generic-x86_64-with-Ubuntu-14.04-trusty
spaCy version 2.0.9
Location /usr/local/lib/python2.7/dist-packages/spacy
Models es, en
所以,输出是:
预期的是 SpaCy 正确识别 MONEY
(2500 美元是 2500 阿根廷比索,180 美元也是货币)。 "Junto" 不是 LOCATION
也不是 "SU PRIMO"。 "Junto a su primo" 相当于英文的 "with his cousin"。此外,Fernet Branca 是一个 BRAND
,而不是一个人。
所以,我的问题是:我做错了什么?我应该使用额外的库吗?
提前致谢。
根据西班牙模型的 spacy 文档,它支持识别 PER、LOC、ORG 和 MISC 实体。它是在 AnCora 和 WikiNER 语料库上训练的。
在发行说明中提到:
"Because the model is trained on Wikipedia, it may perform inconsistently on many genres, such as social media text."
由于您的数据结果不令人满意,您需要针对您的数据对其进行训练。这可以按照 here
中的建议完成对于金钱,您实际上可以为美元货币编写一个像这样的简单正则表达式
^$?[0-9][0-9\,]*(\.\d{1,2})?$|^$?[\.]([\d][\d]?)$