EntityLinker Spacy 返回的实体不正确

Incorrect entity being returned by EntityLinker Spacy

我一直在使用 Spacy 训练一个实体链接器,它有 6,000 个来自维基数据的实体。

训练数据包含 30,000 个句子。

我正在关注 Spacy 提供的笔记本 https://github.com/explosion/projects/blob/v3/tutorials/nel_emerson/notebooks/notebook_video.ipynb

训练进行得很顺利,而且准确性似乎相当不错,直到我在一个明显不正确的字符串上测试模型。比如“barack obama is a french born florist living in Spain with 36 cats and 2 hamsters”,但是模型预测这个字符串中的人为 https://www.wikidata.org/wiki/Q76

我尝试在配置中添加其他参数,例如 n_sents

entity_linker = nlp.add_pipe("entity_linker", config={"incl_prior": False, "n_sents": 6}, last=True)

有什么办法可以改善吗? return NIL 而不是错误答案会更好。或者是否有一个可以输出的置信度分数?

实体链接器的工作方式是,给定一个实体的所有潜在候选者,它会选择最有可能的一个。

您 运行 遇到的问题是模特不认识您的花店,因此他不是候选人。因为模型只知道美国前总统巴拉克·奥巴马,所以模型可以肯定地说“巴拉克·奥巴马”一定是指总统。

该模型没有机制来判断引用是否指的是不在知识库中的实体。它也永远不会弃权,如果有候选人,它会选择一个。 “NIL”不是弃权,它是指参考资料在知识库中没有条目,所以没有什么可以选择的。

如果您查看以“爱默生”为例的 example project,这可能会更清楚。该模型不会决定“Emerson”是否是它认识的人 - 它假定它一定是它认识的人之一,并且它必须选择最有可能的人。