如果我说的话,你一定能理解我的!但是电脑呢?它能听懂我在说什么吗?通常答案是否定的,因为计算机并不意味着会说或理解人类语言。但是自然语言处理是使计算机不仅能够理解人类在说什么而且还能做出回应的领域! NLP 是人工智能的一个子类别,旨在向计算机教授人类语言及其所有复杂性。这是为了让机器能够理解和解释我们的语言,最终以更好的方式理解人类的交流。
但问题是 NLP 是如何实际实现的?嗯,有许多库提供了自然语言处理的基础。这些库具有多种功能,可以通过根据文本的语法对文本进行拆分、提取重要短语、去除多余的单词等来使计算机理解自然语言。本文特别提供了Python流行的 NLP 库。因此,请查看这些库,谁知道呢,您甚至可以使用它们来创建自己的自然语言处理项目!
1. 自然语言工具包(NLTK)
Natural Language Toolkit 是最流行的平台,用于创建处理人类语言的应用程序。 NLTK 有各种不同的库来执行文本功能,包括词干提取、标记化、解析、分类、语义推理等。最重要的是 NLTK 是免费和开源的,可供学生、专业人士、语言学家、研究人员等。这个工具包对于刚开始接触自然语言处理的人来说是一个完美的选择,但对于行业级项目来说有点慢。但是,它确实有一个陡峭的学习曲线,因此可能需要一些时间才能完全熟悉它。
2. 文本块
TextBlob 是一个Python库,其创建的目的是处理文本数据和处理具有各种功能的自然语言处理,例如名词短语提取、标记化、翻译、情感分析、词性标注、词形还原、分类、拼写校正等。TextBlob 是在 NLTK 和 Pattern 的基础上创建的,因此可以轻松地与这两个库集成。总而言之,TextBlob 是初学者了解 NLP 的复杂性并为其项目创建原型的完美选择。然而,这个库在工业级 NLP 生产项目中使用速度太慢。
3. Gensim
Gensim 是一个专门为信息检索和自然语言处理而创建的Python库。无论语料库是语言数据的集合,它有许多可以使用的算法,无论语料库的大小如何。 Gensim 依赖于 NumPy 和 SciPy 这两个用于科学计算的Python包,因此在安装 Gensim 之前必须安装它们。这个库也非常高效,它具有一流的内存优化和处理速度。
4.空间
spaCy 是Python中的自然语言处理库,旨在用于实际的行业项目并获得有用的见解。 spaCy 是用内存管理的 Cython 编写的,这使得它非常快。它的网站声称它是世界上最快的,也是自然语言处理领域的 Ruby on Rails! spaCy 为 NLP 中的各种功能提供支持,例如标记化、命名实体识别、词性标注、依赖解析、使用语法的句子分割等。它可用于在Python创建复杂的 NLP 模型,也可与其他 NLP 模型集成Python生态系统中的库,如 TensorFlow、scikit-learn、PyTorch 等。
5. 多语言
Polyglot 是一个免费的 NLP 包,可以支持不同的多语言应用程序。它在自然语言处理中提供了不同的分析选项以及对多种语言的覆盖。 Polyglot 速度非常快,因为它基于 NumPy,这是一个用于科学计算的Python包。 Polyglot 支持 NLP 中固有的各种功能,例如语言检测、命名实体识别、情感分析、标记化、词嵌入、音译、标记词性等。这个包与 spaCy 非常相似,是 spaCy 所做的那些语言的绝佳选择不支持,因为它提供了广泛的种类。
6. 核心NLP
CoreNLP 是一个用Java创建的自然语言处理库,但它仍然为Python提供了一个包装器。该库提供了 NLP 的许多功能,例如为具有标记和句子边界、命名实体、词性、共指、情感、数值和时间值、关系等的文本创建语言注释。 CoreNLP 是由斯坦福创建的,它可以由于其良好的速度,在各种行业级实现中使用。还可以将 CoreNLP 与自然语言工具包集成,使其比其基本形式更高效。
7. Quepy
Quepy 是一个专业的Python框架,可用于将自然语言的问题转换为查询语言以查询数据库。这显然是自然语言处理的一个利基应用,它可以用于数据库查询的各种自然语言问题。 Quepy 目前支持 SPARQL,用于查询资源描述框架格式的数据,MQL 是 Cloud Monitoring 时序数据的监控查询语言。对其他查询语言的支持尚不可用,但将来可能会提供。
8. 词汇
Vocabulary 基本上是Python自然语言处理的字典。使用这个库,你可以获取任何单词的词义、同义词、反义词、翻译、词性、用法示例、发音、连字符等。 这也可以使用 Wordnet 但词汇表可以在简单的 JSON 对象中返回所有这些因为它通常返回这些值或Python字典和列表。 Vocabulary 也很容易安装,而且使用起来非常快速和简单。
9. PyNPl
PyNPl 是一个自然语言处理库,实际上发音为“Pineapple”。它有各种不同的模型来执行 NLP 任务,包括 pynlpl.datatype、pynlpl.evaluation、pynlpl.formats.folia、pynlpl.formats.fql 等。 FQL 是 FoLiA 查询语言,可以使用 FoLiA 格式或 Format for语言注释。与其他自然语言处理库相比,这是 PyNPl 的一个非常独特的字符集。
10. 图案
Pattern 是一个Python网络挖掘库,它还具有用于自然语言处理、数据挖掘、机器学习、网络分析等的工具。 Pattern 可以管理 NLP 的所有过程,包括标记化、翻译、情感分析、词性分析标记、词形还原、分类、拼写更正等。但是,仅使用 Pattern 可能不足以进行自然语言处理,因为它主要是为了记住网络挖掘而创建的。
结论
这些自然语言编程库是Python最流行的。 NLP 中还有许多其他不同编程语言的库,例如 Node 中的 Retext 和 Compromise, Java的OpenNLP,以及 R 中的一些库,例如 Quanteda、Text2vec 等。 但是,本文特别关注 NLP 库在Python,因为它是人工智能中最流行的编程语言,也是最常用于工业项目的语言。