如何过滤命名实体识别结果

数据挖掘 nlp 命名实体识别
2021-10-14 19:37:19

我建立了一个管道,最终输出一堆(数千到数万或更多)命名实体。我想对那些命名实体进行聚合(查看,例如在我的语料库中提到了多少次特定的命名实体)。我遇到的一个问题;但是,即使它们是同一个实体,命名实体通常也不会相互匹配。例如,命名实体的一个实例可能是“Dr. John Smith”,而另一个实例是“John Smith”,或者一个实例可能是“Google”,而另一个实例可能是“Google Inc.”。这使得聚合非常困难。

为了处理这个问题并将“Dr. John Smith”设置为与“John Smith”相同的实体,我正在考虑在我的命名实体之间进行单词匹配。即,我将检查命名实体 A 是否与命名实体 B 有共同的词,以及它们是否将它们设置为同一个实体。这种方法显然存在严重缺陷。我会将“John Nguyen”和“John Smith”等同于同一个实体,尽管它们显然不是。但是,这种方法可能更糟糕的是,我可能会遇到相似链,其中我将“John Smith”与“Richard Smith”链接到“Richard Sporting Goods Inc.”链接。与“Google Inc.”相关联 等等等等……虽然我可能愿意让以前的问题引起的问题通过,

NLP 社区中是否有任何公认的技术来处理这个问题?

1个回答

最先进(也是最复杂)的方法是某种弱监督系统,例如Holoclean这似乎很有希望,但并不容易。

光谱的另一端是启发式方法,就像您提出的那样。如果您想使用您描述的字符串距离方法,我将创建一些度量标准,为字符串编辑距离和匹配单词提供分数。如果您可以将管道分成更小的步骤,也许您可​​以使用某种主题分析,然后在知识图中查找两个相似的实体和该主题,并查看该点是否指向同一区域。

2018 年 Alexa 奖得主论文Gunrock充满了聪明的启发式方法,你可能会觉得合适。

编辑:您还应该查看Entity Linking,这或多或少是您描述的问题。