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

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

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

如何安装/设置一个nlp系统,它可以 –

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

你说你需要’解析’每个句子。 您可能已经知道这一点,但只是为了明确,在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,所以如果它对您有用,请尝试一下并与我联系,提出问题,意见,建议等。

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

  • 无上下文语法: http : //en.wikipedia.org/wiki/Stochastic_context-free_grammar

  • 依赖语法: http : //en.wikipedia.org/wiki/Dependency_grammar

通常,您可以按其他顺序执行这两项任务:

  1. 进行词性标注
  2. 使用POS标记作为输入运行解析器

OpenNLP的文档并不是那么彻底,而且由于切换到apache,其中一些很难找到。 旧的SF wiki中提供了一些(可能稍微过时)的教程。

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

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

请参阅Illinois-Curator: http : //cogcomp.cs.illinois.edu/page/software_view/Curator

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

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

最受欢迎的是:

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