C ++中的自然语言处理

时间:2009-10-21 10:46:48

标签: java c++ nlp gate uima

我正在开发一个已经拥有C ++基础的项目。我想有一个插件用于一些自然语言处理。我非常喜欢GATE,但我不确定是否值得启动JVM并将项目拆分为C ++和Java部分。我注意到UIMA有一个C ++框架,但没有尝试过,但似乎比GATE少了。

有没有人知道比在C ++中以某种方式包装GATE更好的选择(例如在C ++中更好的NLP库)?如果我用C ++包装GATE,最好的方法是什么? SOA?

由于

3 个答案:

答案 0 :(得分:5)

克里斯托弗曼宁用C ++和其他语言编写的resources for NLP(POS标记,NP分块,序列模型,解析器......)列表。维基百科中的Another one

还有String and text processing的Boost页面。

答案 1 :(得分:1)

当然,这取决于你想要做什么。

GATE和UIMA都是NLP的框架,主要是围绕信息管理和提取的理念而设计的。说GATE比UIMA具有更多功能并不公平,因为严格来说它们都只是框架。然而,GATE与ANNIE捆绑在一起,它有很多很好的功能,可能对你有用(同样,取决于你想做什么)。 UIMA与OpenNLP库捆绑在一起,这些库反映了这些功能中的一些(但不是全部),但是用Java编写,因此需要加载JVM。

您可以使用C ++库找到与GATE / ANNIE或UIMA / OpenNLP类似的功能,但这两个框架的优点在于它们是连贯的,并且不需要大量的“粘合代码”来使单个库通话彼此。

不想在C ++代码中包装GATE的原因是什么?我可以理解它会增加项目的复杂性,但如果你担心性能/内存,那么JVM可能是你最不担心的。 NLP工具往往会非常耗费内存,期望放弃NER模型的半场演出,更多的是统计解析器。

答案 2 :(得分:0)

也许您想看看NLP ++,这是一种为自然语言处理和文本分析量身定制的编程语言。

我想从这里开始:

Getting Started Package for NLP++

此软件包包含开始使用NLP ++所需的一切。是的,您必须学习一种新的编程语言,但它与C ++类似,您不必使用黑盒API。此外,VisualText中的编译文本分析器创建了一个Visual Studio解决方案,您可以将其包含在其他C ++项目中。

您可以免费使用VisualText和NLP ++进行非商业项目。

加入NLP ++社区,提出问题,讨论分析器并了解有关NLP ++的更多信息:

NLP++ Community

亲切的问候,

Dominik Holenstein

NLP ++社区经理