比较Stanford coreNLP,SpaCy和Google云的NER库

问题描述 投票:0回答:2

我想从文本中识别名称。但是我感到困惑,我必须为NER使用哪个NLP库。我发现了针对NER的最佳NLP库1.斯坦福大学核心自然语言处理2.空间3. Google云端。

我无法找出哪个库可以提供更准确的结果和更好的性能。请在这里帮助我。

nlp stanford-nlp spacy ner google-natural-language
2个回答
3
投票

空间]在NLP方面具有行业优势,而在NER方面显然更快,更准确。它还与多语言模型捆绑在一起。检查spaCy

[此外,AllenNLP随附了最新的NER模型,但使用起来有点复杂。检查AllenNLP demo

如果不是付费壁垒,那么我建议使用Google的Cloud Natural Language(当然,它更快更准确)。

我个人使用过spaCy和AllenNLP。我想说的是,如果您只是想开始使用spaCy。

希望这会有所帮助。


2
投票

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

您问的是哪个系统将提供最准确的结果,同时又不需要太多的计算能力。就您而言,是从文本中识别人名。自然语言处理(NLP)领域正在迅速变化。为了说明这一点,我们可以看看命名实体识别(NER)的最新技术(SOTA)。ThisGithub页面为CONLL03 NER数据集提供了一个不错的摘要,由于易于记忆,我将在此处复制并使用公司名称:

  1. Zalando。 F1得分:0.931日期:2018年6月24日
  2. Google。 F1得分:0.928日期:2018年10月31日
  3. Stanford / Google Brain。 F1得分:0.926。日期:2018年9月22日

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

  • Used algorithm。可能是Google已发布SOTA研究,但尚未实施。确定这一点的唯一方法是不断测试所有系统。
  • 训练数据大小。尽管越大越好,但是某些算法可以更好地处理几个示例(少量学习)。
  • Domain。一种算法可能更适合于处理正式的政府文本,而不是不太正式的Wikipedia文本。
  • 数据语言。由于大多数研究着重于在公共数据集上显示SOTA,因此它们通常针对英语进行了优化。它们在其他语言上的表现可能会有所不同。

由于考虑到所有这些因素,我建议您选择一个现有系统,然后根据价格和易用性进行选择。

© www.soinside.com 2019 - 2024. All rights reserved.