有没有一个好的自然语言处理库?

92

我需要在我的当前模块中实现一些自然语言处理。 我正在寻找一些能够帮助我的好库。 我找到了“LingPipe”,但无法完全理解如何使用它。
基本上,我们需要实现一个功能,该应用程序可以解读以纯英文输入的客户指示(交货指令)。例如:

  • 将于明天中午12:00接送
  • 要求在6月10日之后交付
  • 请勿在周三之前发送
  • 将订单中的XYZ产品增加10个单位

请参考以下链接:https://dev59.com/bWAh5IYBdhLWcg3wBfeM - alvas
3个回答

80

LingPipe非常好用且文档详细,你也可以看看以下内容:

最后一个可能特别适合你,但我不知道是否有现成的Java实现(也许这对你的问题来说太过强大了:-)

使用DSL的想法可能更容易实现、更快速,并且对于你的客户来说更加可靠。我也建议先研究一下这个。


1
我根据从这个论坛和互联网其他地方收集的信息提交了我的报告。我还提出了您建议的其他选项,但公司已决定暂缓决定(现在开始研发以找到最佳候选人)。 - Vini
1
如果你比较LingPipe和你列出的其他库,你更喜欢哪一个?我问这个问题不仅仅是为了回答@Winnie的问题,也是为了一般性的目的。 - kamaci
1
请查看MALLET:mallet.cs.umass.edu - Samik R

11
我认为您是否选择使用NLP可能取决于系统的具体要求。是否需要接受自由形式的英语,还是只接受特定的一组指令?建立支持用户需要传达的内容的特定领域语言可能比对自由形式文本进行全面的语义分析更容易。
在Java领域中,Groovy提供了构建DSLs的一些支持。

以下是需求文档中的几行内容: “...用户应该能够用普通英语输入注释或特殊指令。然后,系统应解析用户指令并使用正确的值填充订单的相关字段(如果有的话)。” - Vini
10
这是一个非常模糊的要求。例如,这个备注必须符合语法规则吗?我不确定提出这些要求的人是否了解自然语言处理的现状,但是他们所描述的问题本质上是阅读理解或自然语言理解,这是自然语言处理中被描述为“圣杯”之一的问题。 我认为你很难找到一个可以直接“做到这一点”的软件包——为用户提供一个界面,在其中可以指定有限数量的特殊指令,可能更加现实可行。 - Paul Morie

8

Scala NLP的NLP部分名为Epic,似乎仍在即将推出的状态。 - Erik Kaplun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接