用于实时解析自然语言问题的工具

时间:2013-03-14 10:23:34

标签: nlp stanford-nlp opennlp

photos in washington VS show me photos in washington VS I wanna see all my photos in washington taken day before yesterday

what:photos
entities:washington (dont want to be too assuming)
when: 2013-03-14

我想将预设查询解析为条件(如上所述)。我想要这些品质:

  1. 即使存在绒毛(“我想看”)和小写名词
  2. ,我也可以提取相关条款
  3. 热门程序可以通过HTTP接受请求或允许我添加一些网络通信
  4. 温暖程序在50ms内响应,并且需要最多500Mb的内存才能获得合理的句子
  5. 我在Python方面经验丰富,在Java方面则不那么熟悉
  6. 分析器数据结构易于处理
  7. 我使用NLTK,但速度很慢。我认为StanfordNLP和OpenNLP是可行的替代品,但我发现程序启动延迟太高了。如果我别无选择,我不介意将它们整合到servlet上。

1 个答案:

答案 0 :(得分:0)

Stanford Parser是一个不错的选择,而且得到很好的支持(正如研究代码所示)。但听起来低延迟对你来说是一个重要的要求,所以我建议你看看BUBS Parser(完全披露 - 我是从事BUBS工作的主要研究人员之一)。

我没有直接与NLTK进行比较,但我认为您可能会发现Stanford Parser无法满足您的性能需求。 This paper发现总吞吐量约为60字/秒(约2-3个句子/秒)。这些时间已经相当陈旧,所以更新的硬件肯定会改进,但可能仍然不会接近50毫秒的延迟。

正如您所说,任何解析器的启动时间都是一个问题 - 高精度模型必然非常大。 500 MB也可能非常紧凑(我通常使用1-1.2 GB运行BUBS)。但是一旦加载,BUBS延迟通常在每个句子10毫秒附近(对于大约20-25个单词的句子),并且我们可以在准确度开始下降之前将总吞吐量提高大约2500字/秒。我认为这些数字可能会满足您的性能需求,而且我不知道任何其他高精度(F1> = 88-89)解析器的速度接近。

注意:最快的结果是最近的修剪模型尚未发布到网站上,但如果您需要,我可以为您提供模型。希望有所帮助,如果您有更多问题,请随时提出。