2009-10-21 197 views
2

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

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

感谢

回答

1

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

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

你可以找到类似的功能,GATE/ANNIE或UIMA/OpenNLP使用C++库,但关于这两个框架的好处是,他们是一致的,并不需要大量的“胶水代码”,使个别图书馆搭腔。

不想在C++代码中包装GATE的背后是什么原因?我可以理解,这会增加项目的复杂性,但如果您担心性能/内存问题,那么JVM可能是您最担心的问题。 NLP工具倾向于非常渴望内存,期望放弃NER模型的一半演出,更多的是用于统计分析器。

+1

我是NLP新手,所以我感谢你的见解!我对Java的担心是通过添加更多的语言/编译器/等等,使项目的内存/速度减半,并且项目的一半复杂性。 你知道C++中的UIMA是否比GATE少一点资源?是否有显着差异(CPU时间或RAM消耗量的20%或更多)? – User1 2009-10-21 13:37:46

+0

对不起,我从来没有使用过C++版本。出于某种原因,大多数最好的NLP库都是用Java编写的。 – Stompchicken 2009-10-21 14:00:45

0

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

我receommend从这里开始:

Getting Started Package for NLP++

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

您可以将VisualText和NLP ++免费用于非商业项目。

加入NLP ++社区提问,讨论你的分析和了解更多关于NLP ++:

NLP++ Community

亲切的问候,

多米尼克Holenstein

NLP ++社区经理