开源最前线(ID:OpenSourceTop) 猿妹 编译
编译自:https://www.kdnuggets.com/2018/07/comparison-top-6-python-nlp-libraries.html
如今,自然语言处理(NLP)变得越来越流行,在深度学习的背景下变得更加引人注目。NLP是人工智能的其中一个领域,旨在从文本中理解和提取重要信息,并基于文本数据进行进一步训练。NLP的主要任务包括语音识别和生成,文本分析,情感分析,机器翻译等
在过去的几十年里,只有受过一定语言教育的专家才能从事自然语言处理的工作。除了数学和机器学习,他们还应该熟悉一些关键的语言概念。现在,我们可以使用已编写的NLP库。它们的主要目的是简化文本预处理,让我们可以专注于构建机器学习模型和超参数微调。
有许多工具和库可以解决NLP问题。今天,我们将根据我们的经验概述,对6个流行热门的自然语言处理库进行比较
总体概述
NLTK(自然语言工具包)用于诸如标记化、词形还原、词干提取、解析、POS标记等任务。该库具备可用于几乎所有 NLP 任务的工具。
● spaCy 是 NLTK 的主要竞争者。这两个库可用于相同的任务。
● scikit-learn 为机器学习提供了一个大型库,还提供了用于文本预处理的工具。
● gensim 是一个相当专业的主题模型Python工具包,用于话题空间建模、向量空间建模。
● Pattern 库是作为 web 挖掘模块提供服务的,因此它支持 NLP 任务。
● polyglot 是另一个 NLP 的 Python 包。它不是很流行,但也可以用于各种 NLP 任务。
下面我们举几个开源库的优缺点比较下:
NLTK的优点:
● 最知名和完整的NLP图书馆
● 许多第三方扩展
● 每个NLP任务都有很多方法
● 快速标记的句子
● 与其他库相比,支持的语言数量最多
缺点
● 学习和使用起来很复杂
● 非常慢
● 在句法符号化中,NLTK只对句子进行拆分,没有对语义结构进行分析
● 处理字符串,这对面向对象语言python来说不是很典型
● 不提供神经网络模型
● 没有集成词向量
spaCy 优点
● 最快的nlp框架
● 易于学习和使用,因为它有一个高度优化的工具为每个任务
● 相比其他库,更多的面向对象
● 使用神经网络训练一些模型
● 提供内置的词向量
● 积极支持和发展
缺点
● 与NLTKSentence标记化相比,缺乏灵活性,比NLTK更慢
● 不支持多种语言
● 仅适用于7种语言和“多语言”模型
结论
在本文中,我们比较了几个流行的NLP库的一些功能。虽然它们中大多数的功能会有重叠,但同样也都具备独特的方法来解决相应问题的特性,当然,如今最受欢迎的NLP软件包是NLTK和Spacy。他们是NLP领域的主要竞争对手。在我们看来,它们之间的区别在于解决问题的一般哲学。
NLTK更具学术性。你可以使用它来尝试不同的方法和算法,将它们组合起来等等。相反,Spacy为每个问题提供了一个开箱即用的解决方案。你不必考虑哪种方法更好:Spacy的作者已经解决了这个问题。此外,Spacy速度非常快(比NLTK快几倍),但有一个缺点是Spacy支持的语言数量有限,不过好在如今支持的语言数量也一直在增加。所以,我们认为Spacy在大多数情况下都是最佳选择,但如果你想尝试一些特别的东西,你可以使用NLTK。
虽然这两个库都非常流行,但依然有很多其他不同的选择,选择使用哪个 NLP 包取决于你要解决的问题类型。
●编号651,输入编号直达本文
●输入m获取文章目录