我正在开发一个已经拥有 C++ 基础的项目。我想要一个用于一些自然语言处理的插件。我真的很喜欢GATE,但我不确定是否值得启动 JVM 并将项目拆分为 C++ 和 Java 部分。我注意到UIMA有一个 C++ 框架,但没有尝试过,但功能似乎比 GATE 少。
有谁知道比尝试在 C++ 中以某种方式包装 GATE 更好的选择(例如 C++ 中更好的 NLP 库)?如果我用 C++ 包装 GATE,最好的方法是什么?SOA?
谢谢
Christopher Manning 的 C++ 和其他语言的NLP(POS 标记器、NP 分块、序列模型、解析器...)资源列表。维基百科中的另一个。
还有用于字符串和文本处理的 Boost 页面。
当然,这取决于您到底想做什么。
GATE 和 UIMA 都是 NLP 的框架,主要围绕信息管理和提取的思想设计。说 GATE 比 UIMA 有更多的功能是不公平的,因为严格来说它们都只是框架。然而,GATE 与 ANNIE 捆绑在一起,它确实有很多不错的功能可能对您有用(同样,取决于您想要做什么)。UIMA 与 OpenNLP 库捆绑在一起,这些库反映了其中一些(但不是全部)功能,但使用 Java 编写,因此需要加载 JVM。
您可以使用 C++ 库找到与 GATE/ANNIE 或 UIMA/OpenNLP 类似的功能,但是这两个框架的好处是它们是连贯的,并且不需要大量“胶水代码”来使各个库相互通信.
不想在 C++ 代码中包装 GATE 的原因是什么?我可以理解这会增加项目的复杂性,但如果您担心性能/内存,那么 JVM 可能是您最不担心的问题。NLP 工具往往非常消耗内存,预计会为 NER 模型放弃一半,更多用于统计解析器。
也许您想看看 NLP++,这是一种为自然语言处理和文本分析量身定制的编程语言。
我建议从这里开始:
该软件包包含您开始使用 NLP++ 所需的一切。是的,您必须学习一门新的编程语言,但它类似于 C++,您不必使用黑盒 API。此外,VisualText 中的已编译文本分析器会创建一个 Visual Studio 解决方案,您可以将其包含在您的其他 C++ 项目中。
您可以免费将 VisualText 和 NLP++ 用于非商业项目。
加入 NLP++ 社区提出问题、讨论您的分析器并了解有关 NLP++ 的更多信息:
亲切的问候,
多米尼克·霍伦斯坦
NLP++ 社区经理