[英]Is there a bridge between Stanford's CoreNLP and OpenNLP parsers?
[英]OpenNLP vs Stanford CoreNLP
我一直在对这两个包进行一些比较,并且不确定要进入哪个方向。我正在寻找的是:
据我所知,OpenNLP和Stanford CoreNLP提供了非常相似的功能。 然而,斯坦福CoreNLP似乎有更多活动,而OpenNLP在过去六个月中只有一些提交。
根据我所看到的,OpenNLP似乎更容易训练新模型,仅凭这个原因可能更具吸引力。 但是,我的问题是其他人会将其作为添加NLP功能到Java应用程序的基础? 我最担心的是OpenNLP是“刚刚成熟”还是半成熟。
在完全披露中,我是CoreNLP的贡献者,所以这是一个有偏见的答案。 但是,在我看来你的三个标准:
命名实体识别:我认为CoreNLP在准确性和易用性方面明显胜出。 例如,OpenNLP每个NER标签都有一个模型,而CoreNLP使用一个Annotator检测所有标签。 此外,使用SUTime的时间分辨率是CoreNLP中的一个很好的特权。 准确性方面,我的轶事经验是CoreNLP在通用文本方面做得更好。
性别认同。 我认为这两种工具在这方面都很难记录。 OpenNLP似乎有一个GenderModel类; CoreNLP有一个性别注释器。
培训API。 我怀疑OpenNLP培训API更易于使用而不是现成的培训。 但是,如果你想做的只是,例如,从CoNLL文件中训练模型,两者都应该是直截了当的。 CoreNLP的训练速度往往比我尝试过的其他工具更快,但是我还没有正式对它进行基准测试,所以请稍等一下。
这里有点晚了,但我最近看看OpenNLP仅基于斯坦福获得GPL许可的事实 - 如果这对您的项目来说可行,那么斯坦福通常被称为NLP的基准/最先进技术。
也就是说,预训练模型的性能将取决于您的目标文本,因为它是特定于域的。 如果您的目标文本与模型所训练的数据类似,那么您应该获得不错的结果,但如果没有,那么您将不得不自己训练模型,这将取决于训练数据。
OpenNlp的优势在于它非常易于扩展,并且易于与其他库一起使用而编写,并且具有良好的集成API - 使用OpenNLP进行培训非常简单(一旦获得了训练数据)( 我在这里写了一下 - 与一个非常糟糕的生成数据集我能够获得确定食物的结果 ,并且它非常易于配置 - 您可以非常容易地配置训练周围的所有参数,并且您可以使用一系列算法(感知器,最大熵和在快照版本中他们添加了Naive Bayes )
如果你发现你确实需要自己训练模型,我会考虑尝试OpenNlp,看看它是如何进行比较的,就像微调一样,你可以得到相当不错的结果。
这取决于你的目的和需要,我对这两者的了解是OpenNLP
是开源的,而CoreNLP
当然不是。
但是如果你看一下准确度, Stanford CoreNLP
检测精度比OpenNLP
更准确。 最近我对两者的Part Of Speech (POS)
标记做了比较,并且肯定是任何NLP任务中最重要的部分,所以在我的分析中,获胜者是CoreNLP
。
展望未来的NER
有作为CoreNLP
有更准确的结果比较OpenNLP
。
因此,如果您刚刚开始,可以在以后根据需要使用OpenNLP
,您可以迁移到Stanford CoreNLP
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.