0

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

我想亲自和豆腐先生握手。虽然我无法在医学上证明这一点,但我 100% 确定他们的 Soondubu 含有未定义的治疗特性。不知何故,在这里用餐后我总是感觉好多了。感冒了?拧Nyquil,得到辣泡菜soondubu。

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

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

我也希望提取和链接其他实体,例如:

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

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

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

然而,spaCy 似乎根本没有链接新实体:

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

1 回答 1

1

理论上是可以的。首先,您需要确保您有一个标记这些实体的组件。您可以为此训练一个 NER 模型,但请注意,它在“冷”之类的事物上的性能可能不如“伦敦”等实际命名实体的性能好。

要从 Wikipedia/Wikidata 创建知识库和实体链接器,示例脚本不限于命名实体——它们会尝试解析出现在内部 wiki 链接中的任何内容。如果“感冒”这个词被链接到“普通感冒”页面,它应该能够学习它。存储在 KB 中并用于训练 EL 模型的确切实体取决于您的实体识别器组件找到的实体。因此,如果您根据用例进行调整,实体链接组件将自动跟随。

于 2020-03-23T08:15:53.760 回答