spaCy link 只能命名实体吗?

Can spaCy link only named entities?

以下是一篇(据说)有趣的餐厅评论的摘录:

I'd like to personally shake Mr Tofu's hand. While I cannot medically prove it, I am 100% certain that their soondubu contains undefined healing properties. Some how some way, I always feel better after a meal here. Got a cold? Screw the Nyquil and get the spicy kimchi soondubu.

我想提取重要的实体并将它们 link 到维基百科实体。我在 Wikipedia/WikiData 和 运行 实体的小样本上训练了 spaCy link 评论:

[('Tofu', 'PERSON', 'Q177378'), 
('Nyquil', 'WORK_OF_ART', 'NIL')]

我希望提取和 link编辑其他实体,例如:

kimchi -> Kimchi
cold -> Common cold
healing -> medicine 
medically -> medicine

看起来 spaCy 只能 link 命名实体。我试图明确列出其他命名的实体(这显然不能很好地扩展):

ruler = EntityRuler(nlp)
patterns = [{"label": "ORG", "pattern": "kimchi"}, {"label": "ORG", "pattern": "cold"}]
ruler.add_patterns(patterns)
nlp.add_pipe(ruler)

然而,spaCy 似乎根本 link 新实体:

[ ('Tofu', 'PERSON', 'Q177378'),
  ('cold', 'ORG', ''),
  ('Nyquil', 'WORK_OF_ART', 'NIL'),
  ('kimchi', 'ORG', '')]
  1. 如何让 Spacy 识别其他实体?
  2. 这应该在训练实体 linking 模型之前完成,还是可以用已经训练好的模型完成?
  3. spaCy 是否适合我的任务?

理论上是可以的。首先,你需要确保你有一个组件来标记这些实体。您可以 train an NER model 为此,但请注意,它在诸如“寒冷”之类的事物上的表现可能不如在诸如“伦敦”之类的实际命名实体上表现出色。

为了从 Wikipedia/Wikidata 创建知识库和实体链接器,example scripts 不限于命名实体 - 他们试图解析出现在维基内部的任何内容 link.如果“感冒”一词 link 进入“普通感冒”页面,它应该能够学习。存储在 KB 中并用于训练 EL 模型的确切实体取决于实体识别器组件找到的实体。因此,如果您根据您的用例进行调整,实体 linking 组件将自动跟随。