Spacy NER 不识别小写实体
Spacy NER doesn't identify lowercase entities
我在检测以小写字母开头的命名实体时遇到问题。我试过 link https://github.com/explosion/spaCy/issues/701 上提供的解决方案。它似乎不适合我。
=====关于spaCy的信息=============
spaCy version 2.1.4
Platform Darwin-16.7.0-x86_64-i386-64bit
Python version 3.6.5
Models en
import spacy
from spacy import displacy
nlp = spacy.load('en_core_web_sm')
sk = nlp.vocab[u'south korea']
SK = nlp.vocab[u'South Korea']
sk.is_lower = SK.is_lower
sk.shape = SK.shape
sk.shape_ = SK.shape_
sk.is_upper =SK.is_upper
sk.cluster = SK.cluster
sk.is_title = SK.is_title
doc = nlp(u'south korea is a country in asia')
for word in doc:
print(word.text, word.tag_, word.ent_type_)
预期输出为:
south NNP GPE
korea NNP GPE
is VBZ
a DT
country NN
in IN
asia NNP
但是上面代码的输出是:
south JJ
korea NN
is VBZ
a DT
country NN
in IN
asia NNP
NE 识别器是机器学习的,因此依赖于它在训练数据中看到的最强特征。
您可以使用 truecaser/recaser,一种固定小写文本大小写并将输出传递给 spacy 的静态模型。您可以使用:
- sacremoses,机器翻译预处理工具
- nreimers/truecaser,一个使用 NLTK
的 truecaser 实现
或者,您可以尝试 train your recognizer 并修改您的训练数据,使其也有 lower-cased 个实体,但这是一个相当乏味的过程。
我在检测以小写字母开头的命名实体时遇到问题。我试过 link https://github.com/explosion/spaCy/issues/701 上提供的解决方案。它似乎不适合我。
=====关于spaCy的信息=============
spaCy version 2.1.4
Platform Darwin-16.7.0-x86_64-i386-64bit
Python version 3.6.5
Models en
import spacy
from spacy import displacy
nlp = spacy.load('en_core_web_sm')
sk = nlp.vocab[u'south korea']
SK = nlp.vocab[u'South Korea']
sk.is_lower = SK.is_lower
sk.shape = SK.shape
sk.shape_ = SK.shape_
sk.is_upper =SK.is_upper
sk.cluster = SK.cluster
sk.is_title = SK.is_title
doc = nlp(u'south korea is a country in asia')
for word in doc:
print(word.text, word.tag_, word.ent_type_)
预期输出为:
south NNP GPE
korea NNP GPE
is VBZ
a DT
country NN
in IN
asia NNP
但是上面代码的输出是:
south JJ
korea NN
is VBZ
a DT
country NN
in IN
asia NNP
NE 识别器是机器学习的,因此依赖于它在训练数据中看到的最强特征。
您可以使用 truecaser/recaser,一种固定小写文本大小写并将输出传递给 spacy 的静态模型。您可以使用:
- sacremoses,机器翻译预处理工具
- nreimers/truecaser,一个使用 NLTK 的 truecaser 实现
或者,您可以尝试 train your recognizer 并修改您的训练数据,使其也有 lower-cased 个实体,但这是一个相当乏味的过程。