自然语言处理(NLP)是一种支持所有聊天机器人,语音助理,预测文本以及其他渗透到我们生活中的语音/文本应用程序的技术,在过去几年中不断发展。本文推荐一些开源NLP工具来帮助您规划语音或基于文本的应用程序。
首先,Python工具
1.自然语言工具包(NLTK)
自然语言工具包(NLTK)是功能最全面的工具。它几乎可以实现您需要的任何NLP组件,例如分类,标记化,解析和语义推理。并且每种方法通常都有多个实现,因此您可以选择要使用的确切算法或方法。它还支持多种语言。但它以字符串的形式表示所有数据,这对于简单的体系结构很有用,但很难使用某些高级功能。与其他工具相比,它发展缓慢。通常,这是一个很好的工具包,适用于需要特定算法组合的实验,探索和应用程序。
2. SpaCy
SpaCy是NLTK的主要竞争对手。在大多数情况下,它更快,但每个NLP组件只有一个实现。此外,它将所有内容表示为对象而不是字符串,这简化了构建应用程序的界面。它还有助于它与许多其他框架和数据科学工具集成,因此您可以通过更好地理解文本数据来做更多事情。但是,SpaCy不支持与NLTK一样多的语言。它确实有一个简单的界面,一组简化的选择和优秀的文档,以及语言处理和分析的各种组件的多个神经模型。通常,对于需要高性能生产且不需要特定算法的新应用程序,这是一个很好的工具。
SpaCy
3. TextBlob
TextBlob是NLTK的扩展。可以通过TextBlob以简化的方式访问许多NLTK函数,TextBlob还包含Pattern库中的功能。如果您刚刚开始,这可能是一个很好的学习工具,它可以在生产中用于不需要过度执行的应用程序。通常,TextBlob随处可用,非常适合小型项目。
4.纹理
Textacy也是一个很棒的工具。它使用SpaCy作为其核心NLP功能,但它在处理之前和之后处理大量工作。如果您打算使用SpaCy,您还可以使用Textacy,这样可以轻松地引入多种类型的数据,而无需编写其他帮助代码。5. PyTorch-NLP
PyTorch-NLP已经存在了一段时间,但它已经有了一个庞大的社区。它是快速原型制作的绝佳工具。它也经常更新最新的研究,顶级公司和研究人员已经发布了许多其他工具,用于惊人的处理,如图像转换。总体而言,PyTorch面向研究人员,但它也可用于原型和初始生产工作负载,并提供最先进的算法。在它之上创建的图书馆也许值得研究。
第二,Node工具
6.改写
改造是统一集体的一部分。 Unified是一个界面,允许多个工具和插件有效地集成和协同工作。 Retext是统一工具使用的三种语法之一;其他是Markmark的备注和HTML的Rehype。 Retext使用插件来实现您可能使用NLP定位的结果,而不是暴露其许多底层技术。它很容易做一些事情,比如检查拼写,修复排版,检测情绪,或确保简单的插件可以读取文本。一般来说,如果您只需要做一些工作而不必了解底层流程中的所有内容,那么这是一个很好的工具和社区。
7.妥协
妥协肯定不是最复杂的工具。如果您正在寻找最先进的算法或最完整的系统,这可能不适合您。但是,如果您想要一个具有多种功能且可以在客户端上运行的高性能工具,那么您应该查看妥协。
8.自然
Natural包含您在一般NLP库中可能期望的大多数功能。它主要侧重于英语,但其他语言已经可用,社区对其他贡献持开放态度。它支持标记化,词干化,分类,语音,术语频率——逆文档频率,WordNet,字符串相似性和一些变体。它可能与NLTK最具可比性,因为它试图将所有内容都包含在一个包中,但它更容易使用,并不一定专注于研究。一般来说,这是一个非常完整的库,但它仍处于活跃的开发阶段,可能需要额外的底层实现知识才能完全有效。
9. Nlp.js
Nlp.js建立在其他几个NLP库之上,包括Franc和Brain.js。它为NLP的许多组件提供了良好的界面,例如分类,情感分析,词干化,命名实体识别和自然语言生成。它还支持多种语言,如果您计划使用英语以外的语言,这将非常有用。总的来说,这是一个很好的通用工具,可以简化与其他几个工具的接口。在您需要更强大或更灵活的功能之前,这可能会在您的应用程序中使用很长时间。三,Java工具
10. OpenNLP
OpenNLP由Apache Foundation托管,因此很容易将其集成到Apache Flink,Apache NiFi和Apache Spark等其他Apache项目中。它是一个通用的NLP工具,涵盖了NLP的所有常见处理组件,可以从命令行或应用程序中用作库。它还支持多种语言。总的来说,OpenNLP是一个功能强大的工具,具有许多功能,如果您使用Java,您可以为生产工作负载做好准备。
11. StanfordNLP
Stanford CoreNLP是一组提供统计NLP,深度学习NLP和基于规则的NLP功能的工具。已经创建了许多其他编程语言绑定,因此可以在Java之外使用此工具。它是精英研究机构创建的一个非常强大的工具,但它可能不是生产工作负载的最佳选择。此工具具有双重许可证和商业用途的特殊许可证。一般来说,这是一个很好的研究和实验工具,但它可能会在生产系统中产生额外的成本。
12. CogCompNLP
由伊利诺伊大学开发的CogCompNLP也有一个具有类似功能的Python库。它可以用于本地或远程系统上的文本处理,这可以消除本地设备的巨大负担。它提供处理功能,如标记化,词性标记,分块,命名实体标记,形态恢复,依赖和选择分析以及语义角色标记。一般来说,这是一个很好的研究工具,它有很多你可以探索的组件。我不确定它是否适合生产工作负载,但如果您打算使用Java,那么值得尝试。