java - OpenNLP 与斯坦福 CoreNLP

标签 java stanford-nlp opennlp

我一直在对这两个包进行一些比较,但不确定该往哪个方向发展。我正在寻找的简要内容是:

  1. 命名实体识别(人、地点、组织等)。
  2. 性别识别。
  3. 一个不错的培训 API。

据我所知,OpenNLP 和 Stanford CoreNLP 具有非常相似的功能。然而,Stanford CoreNLP 看起来有更多的 Activity ,而 OpenNLP 在过去六个月中只有少数提交。

根据我所看到的,OpenNLP 似乎更容易训练新模型,并且可能仅仅因为这个原因就更具吸引力。但是,我的问题是其他人会从什么开始作为将 NLP 功能添加到 Java 应用程序的基础?我最担心的是 OpenNLP 是“刚刚成熟”还是半废弃。

最佳答案

坦白地说,我是 CoreNLP 的贡献者,所以这是一个有偏见的答案。但是,在我看来,您的三个标准是:

  1. 命名实体识别:我认为 CoreNLP 在准确性和易用性方面明显胜出。一方面,OpenNLP 每个 NER 标签都有一个模型,而 CoreNLP 使用单个注释器检测所有标签。此外,SUTime 的时间分辨率是 CoreNLP 中的一项不错的福利。在准确性方面,我的轶事经验是 CoreNLP 在通用文本上做得更好。

  2. 性别识别。我认为这两种工具在这方面的记录都很少。 OpenNLP 似乎有一个 GenderModel 类; CoreNLP 有一个性别注释器。

  3. 培训 API。我怀疑 OpenNLP 培训 API 对于非现成的培训更易于使用。但是,如果您只想从 CoNLL 文件训练模型,那么两者都应该很简单。与我尝试过的其他工具相比,使用 CoreNLP 的训练速度往往更快,但我还没有正式对它进行基准测试,所以对此持保留态度。

关于java - OpenNLP 与斯坦福 CoreNLP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025981/

相关文章:

java - 遍历LinkedStack并显示整个堆栈

java - Stanford Parser - 遍历类型依赖图

java - 斯坦福 CoreNLP 不存在

java - 斯坦福 coreNLP 无需拆分句子的情感

java - 在 Java 中将单词转换为名词/形容词/动词形式

machine-learning - 使用 SentiWordNet 和 Apache OpenNLP 的情感分析工具

java - 基于自定义特征的文本分类

java - java -cp 与 java -jar 之间的区别

java - 在链接列表中查找最小值

java - 粒子发射器 libgdx Java