当前位置: 首页 > 科技观察

自然语言处理的12大开源工具_0

时间:2023-03-20 13:02:17 科技观察

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