我需要在当前模块中实现一些NLP。 我正在寻找一些可以帮助我的好图书馆。 我遇到了'LingPipe',但无法完全遵循如何使用它。
基本上,我们需要实现一个功能,其中应用程序可以解释用简体中文输入的客户指令(交付说明)。 例如:
将于明天中午12点起床
请在6月10日之后发货
请不要在星期三之前发送
在订单中再添加10个XYZ单位
请参阅stackoverflow.com/questions/22904025/
LingPipe非常好,文档齐全。你也可以看看:
OpenNLP
斯坦福大学NLP
Apache UIMA
门
CogComp,NLP
框架网络
最后一个可能是您感兴趣的,虽然我不知道是否有任何现成的Java实现(也许这对你的问题来说太大了枪:-)
保罗使用DSL的想法可能更容易,更快速地实施,并且更可靠地为您的客户使用。我也会建议首先考虑一下。
我根据我从这个论坛和网上其他地方收集的意见提交了我的报告。我还提出了你建议的其他选项,并且Biz已经决定暂停这一选择(现在开始研发以找到最佳候选者)。
如果你比较LingPipe和其他你列出哪一个你更喜欢?我这个问题并不仅仅针对@Winnie的问题,我认为它是出于一般目的。
查看MALLET:mallet.cs.umass.edu
我认为您是否选择使用NLP可能取决于您系统的具体要求。是否要求接受自由形式的英语,或者只接受某些指令?构建支持用户需要传达的领域的特定于语言的语言可能比对自由格式文本进行全面的语义分析更容易。
在Java领域,Groovy对构建DSL有一些支持。
以下是需求文档中的几行:'..并且用户应该能够以简单的英语输入注释或特殊指令。然后,系统应解析用户指令并使用正确的值填充订单的相关字段(如果有)。"
这是一个非常模糊的要求。例如,音符必须在语法上正确吗?我不确定提出要求的各方是否熟悉NLP的状态,但他们描述的问题主要是阅读理解或自然语言理解,这是被描述为"圣洁"的问题之一。 NLP的圣杯。我很怀疑你会找到一个可以为你"做到这一点"的软件包 - 给用户提供一个可以指定有限数量的特殊指令的用户界面可能更为现实。
对于其他JVM语言,请参阅
Scala:Scala NLP - Breeze and Epic(相关spark-project.org)
Clojure:clojure-opennlp
Scala NLP的NLP部分名为Epic似乎仍然很快就会到来。