0

我想从文本中识别人名但我很困惑我必须为 NER 使用哪个 NLP 库。我发现以下最佳 NLP 库适用于 NER 1. Stanford coreNLP 2. Spacy 3. Google cloud。

我无法找出哪个库会给出更准确的结果和良好的性能。请在这里帮助我。

4

2 回答 2

4

TL;DR:只需选择一个对您来说似乎很容易实现并且似乎具有合理准确性的现有系统。这可以是云产品(例如,IBM Watson Conversation、Google DialogFlow)或库或可执行文件(例如,RASA NLU 或自然语言工具包)。仅根据准确性选择系统并非易事,如果您总是想要最好的,那么您应该经常在系统之间切换。

您的问题是哪个系统将给出最准确的结果,同时不需要太多的计算能力。在您的情况下,用于从文本中识别人名。自然语言处理 (NLP) 领域正在迅速变化。为了证明这一点,我们可以查看命名实体识别 (NER) 的当前最新技术 (SOTA)。这个Github 页面对 CONLL03 NER 数据集有一个很好的总结,我将它复制到这里并使用公司名称,因为它们更容易记住:

  1. 扎兰多。F1 分数:0.931。日期:2018 年 6 月 24 日
  2. 谷歌。F1 分数:0.928。日期:2018 年 10 月 31 日
  3. 斯坦福/谷歌大脑。F1 分数:0.926。日期:2018 年 9 月 22 日

根据此列表,我们观察到,在 2019 年初,每隔几个月就会获得一个新的 SOTA。有关复杂 NLP 任务的基准更新列表,请参阅https://rajpurkar.github.io/SQuAD-explorer/。所以,由于 SOTA 算法每个月都在变化,“最准确的系统(库)”也不得不经常变化。此外,数据的准确性不仅取决于系统,还取决于以下因素:

  • 使用的算法。可能是 Google 发布了 SOTA 研究但未实施。当然,解决这个问题的唯一方法是不断测试所有系统。
  • 训练数据大小。尽管越大越好,但一些算法可以更好地处理少数示例(少样本学习)。
  • 领域。算法可能更适合处理正式的政府文本,而不是不太正式的维基百科文本。
  • 数据语言。由于大多数研究都集中在公共数据集上显示 SOTA,因此它们通常针对英语进行了优化。它们在其他语言上的表现可能会有所不同。

由于需要考虑所有这些因素,我建议选择现有系统并根据定价和易用性等许多要求进行选择。

于 2018-12-01T16:13:05.210 回答
2

spaCy 在 NLP 方面具有工业实力,在 NER 方面显然更快更准确。它还与多语言模型捆绑在一起。检查spaCy

此外,AllenNLP 带有最先进的 NER 模型,但使用起来有些复杂。检查AllenNLP 演示

如果付费墙不是问题,那么我建议使用谷歌的云自然语言(当然它更快更准确)。

我个人使用过 spaCy 和 AllenNLP。如果您想从头开始,我会说使用 spaCy。

希望这可以帮助。

于 2018-11-22T13:26:55.280 回答