比较斯坦福大学coreNLP、SpaCy和谷歌云的NER库



我想从文本中识别人名。但我弄不清楚我必须使用哪一个NLP库来进行NER。我发现以下是NER的最佳NLP库1.斯坦福大学核心NLP2.Spacy3.谷歌云。

我无法找出哪个库会给出更准确的结果和更好的性能。请帮我一下。

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。看见https://rajpurkar.github.io/SQuAD-explorer/以获取复杂NLP任务的基准测试的更新列表。因此,由于SOTA算法每个月都在变化;最精确的系统(库(";也必须经常改变。此外,数据的准确性不仅取决于系统,还取决于以下方面:

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

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

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

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

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

我个人使用过spaCy和AllenNLP。如果你想从spaCy开始,我会说去吧。

希望这能有所帮助。

最新更新