Spacy NER 无法识别姓名

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

任何人都可以帮我理解为什么 Spacy NER 拒绝识别句子中的最后一个名字“Hagrid”,无论使用什么模型(sm、md、lg)?:

“赫敏买了一辆车,然后赫敏和海格都在赛道上比赛。汤姆·布雷迪今年对海格非常满意。”

import spacy
nlp = spacy.load('en_core_web_md')

test_data = "Hermione bought a car, then both Hermione and Hagrid raced it on the track. Tom Brady was very happy with Hagrid this year."

doc = nlp(test_data)
for ent in doc.ents:
        print(ent.text, ent.start_char, ent.end_char, ent.label_)

python nlp artificial-intelligence spacy named-entity-recognition
1个回答
1
投票

神经网络模型基本上是一个黑匣子,因此无法确定这一点。

我可以想象,如果模型是根据新闻或网络数据进行训练的,那么最后一句中的语法有点太“花哨”/类似文学,并且可能会导致模型失败。难以将句子上下文视为后面跟着一个名字的东西,以及“Hagrid”是一种不寻常的名字这一事实可能就是原因。

您可以尝试其他一些模型,例如 Flair 中集成的模型:

https://huggingface.co/flair/ner-english-large?text=Hermione+bought+a+car%2C+then+both+Hermione+and+Hagrid+raced+it+on+the+track。 +汤姆+布雷迪+曾经+非常+快乐+和+海格+今年+。

或者这个经过微调的 BERT 模型:

https://huggingface.co/dslim/bert-large-NER?text=Hermione+bought+a+car%2C+then+both+Hermione+and+Hagrid+raced+it+on+the+track。 +汤姆+布雷迪+曾经+非常+快乐+和+海格+今年+。 它们更强大并且做得正确,根据我的经验,SpaCy 是一个不错的工具,而且速度相当快,但对于 NER 来说并不是最精确的。

© www.soinside.com 2019 - 2024. All rights reserved.