SpaCy不承认预期的金钱和国家

问题描述 投票:0回答:1

我正在使用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$2.500 cuando en realidad está a $180."
doc = nlp(text)
displacy.serve(doc, style='ent')

请注意,我正在加载西班牙语模型。我的配置如下:spacy info

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

所以,输出是:enter image description here

预期的是,SpaCy正确识别MONEY(AR $ 2500是2500阿根廷比索,180美元也是钱)。 “Junto”这个词不是LOCATION,也不是“SU PRIMO”。 “Junto a su primo”就像“与他的堂兄”一样用英语。此外,Fernet Branca是一个BRAND,而不是一个人。

所以,我的问题是:我做错了什么?我应该使用其他库吗?

提前致谢。

python nlp spacy ner
1个回答
2
投票

根据西班牙语模型的spacy文档,它支持PER,LOC,ORG和MISC实体的识别。它在AnCora和WikiNER语料库上进行培训。

在发行说明中提到:

“因为该模型是在维基百科上训练的,所以它可能在许多类型上表现不一致,例如社交媒体文本。”

由于您的数据结果不理想,您需要为您的数据进行训练。这可以按照here的建议完成

为了钱,你实际上可以为美元钱写一个简单的正则表达式

^\$?[0-9][0-9\,]*(\.\d{1,2})?$|^\$?[\.]([\d][\d]?)$
© www.soinside.com 2019 - 2024. All rights reserved.