我一直在对这两个包进行一些比较,但不确定该往哪个方向发展。我正在寻找的简要内容是:
- 命名实体识别(人、地点、组织等)。
- 性别识别。
- 一个不错的培训 API。
据我所知,OpenNLP 和 Stanford CoreNLP 具有非常相似的功能。然而,Stanford CoreNLP 看起来有更多的 Activity ,而 OpenNLP 在过去六个月中只有少数提交。
根据我所看到的,OpenNLP 似乎更容易训练新模型,并且可能仅仅因为这个原因就更具吸引力。但是,我的问题是其他人会从什么开始作为将 NLP 功能添加到 Java 应用程序的基础?我最担心的是 OpenNLP 是“刚刚成熟”还是半废弃。
最佳答案
坦白地说,我是 CoreNLP 的贡献者,所以这是一个有偏见的答案。但是,在我看来,您的三个标准是:
命名实体识别:我认为 CoreNLP 在准确性和易用性方面明显胜出。一方面,OpenNLP 每个 NER 标签都有一个模型,而 CoreNLP 使用单个注释器检测所有标签。此外,SUTime 的时间分辨率是 CoreNLP 中的一项不错的福利。在准确性方面,我的轶事经验是 CoreNLP 在通用文本上做得更好。
性别识别。我认为这两种工具在这方面的记录都很少。 OpenNLP 似乎有一个 GenderModel 类; CoreNLP 有一个性别注释器。
培训 API。我怀疑 OpenNLP 培训 API 对于非现成的培训更易于使用。但是,如果您只想从 CoNLL 文件训练模型,那么两者都应该很简单。与我尝试过的其他工具相比,使用 CoreNLP 的训练速度往往更快,但我还没有正式对它进行基准测试,所以对此持保留态度。
关于java - OpenNLP 与斯坦福 CoreNLP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025981/