Java的简单自然语言处理启动

时间:2011-04-29 13:59:44

标签: java nlp

我愿意开始开发NLP项目。我不太了解可用的工具。谷歌搜索大约一个月后。我意识到openNLP可以成为我的解决方案。

不幸的是,我没有看到任何关于使用API​​的完整教程。所有这些都缺乏一些一般步骤。我需要从地面开始的教程。我在网站上看到过很多下载但不知道如何使用它们?我需要训练什么吗?这是我想知道的 -

如何安装/设置可以 -

的nlp系统
  1. 解析英语句子
  2. 识别不同的词性

4 个答案:

答案 0 :(得分:11)

你说你需要'解析'每个句子。您可能已经知道这一点,但只是为了明确,在NLP中,术语“解析”通常意味着恢复一些分层的句法结构。最常见的类型是组成结构(例如,通过无上下文语法)和依赖结构。

如果您需要分层结构,我建议您考虑从解析器开始。我所知道的大多数解析器都包括解析期间的POS标记,并且可能提供比有限状态POS标记更高的准确性标记(警告 - 我对组成解析器比熟悉依赖解析器更熟悉。有可能一些或大多数依赖解析器会需要POS标签作为输入。

解析的一大缺点是时间复杂度。有限状态POS标记器通常以每秒数千个字的速度运行。即使是贪婪的依赖解析器也相当慢,组成解析器通常以每秒1-5个句子运行。因此,如果您不需要分层结构,您可能希望坚持使用有限状态POS标记符来提高效率。

如果您确定需要解析结构,请提出一些建议:

我认为@aab建议的斯坦福解析器包括一个组成解析器和一个依赖解析器。

Berkeley Parser(http://code.google.com/p/berkeleyparser/)是一个非常着名的PCFG成分解析器,达到了最先进的精度(我相信与斯坦福解析器相同或更优),并且效率相当高(每秒〜3-5个句子。)

BUBS Parser(http://code.google.com/p/bubs-parser/)也可以使用高精度的Berkeley语法运行,并将效率提高到大约15-20秒/秒。完全披露 - 我是研究这个解析器的主要研究人员之一。

警告:这两个解析器都是研究代码,会产生所有问题。但是我很乐意看到人们真正使用BUBS,所以如果它对您有用,请尝试一下并与我联系,提出问题,意见,建议等。

如果需要,还有几个维基百科参考背景:

答案 1 :(得分:5)

一般来说,你会按照其他顺序执行这两项任务:

  1. 进行词性标注
  2. 使用POS标记作为输入运行解析器
  3. OpenNLP的文档并不是那么彻底,而且由于切换到apache,其中一些很难找到。旧版SF wiki中提供了一些(可能稍微过时)的教程。

    您可能需要查看Stanford NLP tools,特别是Stanford POS Tagger和Stanford Parser。两者都有包含预先训练的模型文件的下载,并且它们还在顶级目录中有演示文件,用于说明如何开始使用API​​以及显示如何使用命令行中的工具的简短shell脚本。

    LingPipe可能是另一个很好的工具包。在这里快速搜索将引导您到许多类似的问题,并链接到其他替代方案!

答案 2 :(得分:1)

见伊利诺伊州策展人: http://cogcomp.cs.illinois.edu/page/software_view/Curator

演示: http://cogcomp.cs.illinois.edu/curator/demo/

它几乎可以在一个地方提供所有东西。

答案 3 :(得分:0)

最受欢迎的是:

  • GATE:易于使用且开始时很快
  • UIMA:学习曲线缓慢,但效率更高,更通用