Python系技术生态中有很多的NLP资源,该如何选择呢?本文将介绍用于分析文本的最佳Python库以及如何使用它们。

0.导引

自然语言处理,或简称为NLP,最好描述为“用于处理语音和文本的人工智能”。语音命令、语音和文本翻译、情感分析、文本总结以及许多其他语言应用和分析、自然语言处理等背后的魔力,已经通过深度学习得到了显著改善。

Python语言为包括NLP在内的各种机器学习提供了一个方便的前端。事实上,在Python生态系统中,正是由于NLP丰富的资源而带来了一个尴尬的选择。在本文中,我们将探讨python可用的每个NLP库——它们的用例场景、它们的优点、它们的缺点以及它们的普遍流行程度,为大数据工程师、程序员和产品研发相关人员提供相关对比参考。

请注意,这些库中的某些库提供了其他库公开的相同功能的高级版本,从而使该功能更容易使用,但却牺牲了某些精度或性能。您需要选择一个既适合您的专业水平又适合项目性质的库。

另外,国内的一些大厂比如阿里、百度、讯飞等都有不错的自然语言处理产品,并提供API服务,有兴趣的可以理解一下。下面开始8大库的概略简介。

1.CoreNLP

CoreNLP库是斯坦福大学的一个产品,它被构建为可用于生产级的自然语言处理解决方案,能够大规模地提供NLP预测和分析。CoreNLP是用Java编写的,但是有多种Python包和api可供使用,包括一个名为StanfordNLP的原生Python NLP库。

CoreNLP包括广泛的语言工具——语法标记、命名实体识别、解析、情感分析等等。它被设计为与人类语言无关的,目前除了英语之外还支持阿拉伯语、汉语、法语、德语和西班牙语(第三方还提供俄语、瑞典语和丹麦语支持)。CoreNLP还包括一个web API服务器,这是一种不需要太多额外工作就可以提供预测的方便方法。

用CoreNLP的Python包装器最容易开始的地方是StanfordNLP,它是由Stanford NLP组创建的参考实现。除了有良好的文档记录,StanfordNLP还定期进行维护,而CoreNLP的许多其他Python库已经有一段时间没有更新了。

CoreNLP还支持使用NLTK,这是下面讨论的一个主要的Python NLP库。从3.2.3版本开始,NLTK在其解析器中包含了CoreNLP的接口。一定要确保使用正确的API。

CoreNLP的明显缺点是,您需要对Java有一定的了解才能启动和运行它,但是仔细阅读文档就可以做到这一点。另一个障碍可能是CoreNLP的许可证问题。整个工具包都是在GPLv3下许可的,这意味着您分发给其他人的任何用于专有软件的使用都需要商业许可。

2.Gensim

Gensim只做了两件事,但做得非常好。它的重点是统计语义——分析文档的结构,然后根据相似度对其他文档进行评分。

Gensim可以通过将文档流化到它的分析引擎并对它们进行增量的无监督学习来处理非常大的文本。它可以创建多种类型的模型,每种模型适合于不同的场景:Word2Vec、Doc2Vec、FastText和Latent Dirichlet Allocation。

Gensim的详细文档包含教程和操作指南,它们解释了关键概念并通过实际示例加以说明。通用方法也可以在Gensim GitHub库中找到。

3.NLTK

自然语言工具包(Natural Language Toolkit,简称NLTK)是Python自然语言处理库中最著名和最强大的库之一。许多语料库(数据集)和训练过的模型可以开箱即用地使用NLTK,因此您可以马上开始试验NLTK。

正如文档所述,NLTK提供了处理文本的各种工具:“分类、标记、词干、标记、解析和语义推理。它还可以与一些第三方工具一起工作,以增强其功能。

请记住,NLTK是由学术研究受众创建的,并且是为学术研究受众服务的。它不是为生产环境中的NLP模型设计的。文档也有些稀疏;甚至连“如何做”都很简单。此外,没有64位二进制;您需要安装Python的32位版本才能使用它。最后,NLTK也不是最快的库,但是可以通过并行处理来加速。

如果您决定利用NLTK中的内容,那么可以从TextBlob开始(下面将讨论)。

4.Pattern

如果你所需要做的只是抓取一个流行的网站,然后分析你所发现的内容,找到模式。这个自然语言处理库比这里介绍的其他库要小得多,但这也意味着它专注于很好地完成一项常见的工作。

Pattern附带了内置插件,用于抓取大量流行的web服务和资源(谷歌、Wikipedia、Twitter、Facebook、通用RSS等),所有这些都可以作为Python模块使用(例如,from pattern.web import Twitter)。你不需要重新发明轮子从这些网站获取数据,因为它们都有各自的怪癖。然后可以对数据执行各种常见的NLP操作,比如情绪分析。

Pattern公开了一些较低级的功能,允许您直接使用NLP函数、n-gram搜索、向量和图。它还有一个内置的帮助库,用于处理公共数据库(MySQL、SQLite和将来的MongoDB),使使用以前的会话存储的或从第三方获得的表格数据变得容易。

5.Polyglot

顾名思义,Polyglot支持同时处理多种语言的自然语言处理应用程序。

Polyglot中的NLP特性与其他NLP库中的特性相呼应:记号化、命名实体识别、词性标记、情绪分析、单词嵌入等。对于这些操作中的每一个,Polyglot都提供了使用所需语言的模型。

注意,不同的特性对Polyglot语言的支持有很大的不同。例如,分词系统支持近200种语言(主要是因为它使用Unicode文本分割算法),情绪分析支持136种语言,但词性标记只支持16种。

6.PyNLPI

PyNLPI(发音为“pineapple”)只有一些基本的自然语言处理函数,但是它有一些真正有用的NLP数据格式的数据转换和数据处理特性。

PyNLPI中的大多数NLP函数用于基本任务,如标记化或n-gram提取,以及一些在NLP中有用的统计函数,如字符串之间的Levenshtein距离或马尔科夫链。为了方便起见,这些函数是用纯Python实现的,因此它们不太可能具有生产级的性能。

但PyNLPI因其处理NLP领域中涌现的一些更奇特的数据类型和格式而大出风头。PyNLPI可以读取和处理GIZA、Moses++、SoNaR、Taggerdata和TiMBL数据格式,并将整个模块用于处理FoLiA, FoLiA是用于注释语言资源的XML文档格式,如corpora(用于翻译或其他分析的文本体)。

在处理这些数据类型时,您可能希望使用PyNLPI。

7.SpaCy

SpaCy利用Python提供便利,Cython提供速度,被称为“工业级自然语言处理”。它的发明者声称,它在速度、模型大小和准确性方面都优于NLTK、CoreNLP和其他竞争对手。SpaCy的主要缺点是它相对较新,所以它只涵盖英语和其他一些语言(主要是欧洲语言)。另外,在撰写本文时,SpaCy已经发布了2.2版本。

SpaCy包含了在这些竞争框架中发现的几乎所有特性:语音标记、依赖解析、命名实体识别、分词、句子分割、基于规则的匹配操作、单词向量等等。SpaCy还包括对GPU操作的优化——加速计算和在GPU上存储数据以避免复制。

Spacy的文档非常出色。安装向导为Windows、Linux和macOS以及不同的Python环境(pip、conda等)生成命令行安装操作。语言模型作为Python包安装,因此它们可以作为应用程序依赖项列表的一部分进行跟踪。

8.TextBlob

TextBlob是Pattern和NLTK库的友好前端,将这两个库包装在高级的、易于使用的接口中。使用TextBlob,您可以花费更少的时间来处理复杂的Pattern和NLTK,而可以花更多的时间来获得结果。

TextBlob通过利用原生Python对象和语法简化了这种方式。快速入门示例展示了如何简单地将要处理的文本作为字符串处理,以及常见的NLP方法(如词性标记)可以作为这些字符串对象的方法。

TextBlob的另一个优点是,当您变得更加能力自信时,可以“深入进去”更改其功能。许多默认组件,如情绪分析系统或记号赋予器,可以根据需要更换。您还可以创建组合组件(这个情感分析器、那个分类器等等)的高级对象,并以最小的努力重用它们。这样,就可以用TextBlob快速地创建原型,然后再对其进行优化。

9.0小结

本文主要概略的介绍了Python中8个主要的自然语言处理库,有需要的或想从事相关领域研究的人员可以大体做一了解,以便更好的进行参照选择。

你有何好的推荐或思考,分享出来吧。记得顺手点赞、转发和关注@牛旦IT课堂啊,谢谢啦。^_^

NLP判断语言情绪_Python的8大牛叉的自然语言处理库概览相关推荐

  1. NLP判断语言情绪_网易严选nlp预训练语言模型的应用

    随着2018年底bert的发布,预训练(pre-train)成为nlp领域最为热门的方向之一,大规模的无监督语料加上少量有标注的语料成为了nlp模型的标配.本文将介绍几种常见的语言模型的基本原理和使用 ...

  2. NLP判断语言情绪_最新中文NLP开源工具箱来了!支持6大任务,面向工业应用 | 资源...

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 对于开发者来说,又有一个新的NLP工具箱可以使用了,代号PaddleNLP,目前已开源. 在这个基于百度深度学习平台飞桨(PaddlePad ...

  3. NLP判断语言情绪_挽回怎么用NLP神经语言程序学(一)

    NLP属于一个学派.建立于艾瑞克森催眠的基础上.嗯.说穿了.如果要用NLP的方式来挽回.那就等同于清醒催眠挽回的方式了.总得来说.就我个人观点而言.我比较赞成心理学界的看法.NLP根本就是一套伪心理学 ...

  4. NLP判断语言情绪_健玲:NLP的基本精神12条前提假设,打破你的思维墙

    有一句NLP名言:"没有事情是绝对的." NLP追求效果--在三赢基础上(我好.你好.世界好)的效果. NLP也不相信绝对 "绝对"是把焦点放在超越这一次(当下 ...

  5. NLP判断语言情绪_机器学习中的NLP简介

    在1970年代,许多程序员开始编写"概念本体",将现实世界的信息结构化为计算机可理解的数据.例子有MARGIE(Schank,1975),SAM(Cullingford,1978) ...

  6. 甘超波:NLP检定语言模式

    哈喽,大家好我是甘超波,一名NLP爱好者,每天一篇文章,分享我的NLP实战经验和案例,希望给你些启发和帮助,这是第120篇原创文章 今天我们主要分享NLP检定语言模式,在进入主题之前,先来做1个体验 ...

  7. python自然语言处理库_Python 自然语言处理(NLP)工具库汇总

    最近正在用nltk 对中文网络商品评论进行褒贬情感分类,计算评论的信息熵(entropy).互信息(point mutual information)和困惑值(perplexity)等(不过这些概念我 ...

  8. 知物由学 | 再造巴别塔,我们如何进行NLP跨语言知识迁移?

    知物由学 | 再造巴别塔,我们如何进行NLP跨语言知识迁移? 自以 BERT 为代表的预训练语言模型诞生起,关于其跨语言版本的探索研究就从未停止过.2020 年 4 月,Google 发布了 XTRE ...

  9. 王常在主任提醒家长要警惕孩子语言发育迟缓!怎样判断语言发育是否迟缓?

    王常在主任提醒家长要警惕孩子语言发育迟缓!怎样判断语言发育是否迟缓? 家长要怎么判断孩子语言发育是否迟缓?语言发育是孩子成长中至关重要的一个阶段,许多家长都不清楚孩子语言发展的具体过程.正常情况下,孩 ...

最新文章

  1. antd 动态添加表单_ZooTeam 拍了拍你,来看看如何设计动态化表单
  2. SQL查询库、表,列等的一些操作
  3. 【NLP】【七】fasttext源码解析
  4. iOS 问题整理04----Runtime
  5. Java Set接口详细讲解 TreeSet的定制排序和自然排序
  6. chmod命令文件权限属性设置
  7. linux systemd命令,systemd命令
  8. java将数据写入csv文件,从csv文件中读取数据
  9. [swustoj 1091] 土豪我们做朋友吧
  10. 线索化二叉树的创建与遍历
  11. xdp-ebpf 简介
  12. nginx安装nginx-vts实现监控并打包镜像
  13. java查询mongodb数据_从mongodb中查询数据
  14. 市场已经统一-网博汇智
  15. C++ 将二叉树以前序遍历的顺序转换成链表
  16. 睡梦音乐声悠悠...
  17. 如何装配一台计算机和安装操作系统,组装机怎么安装系统?手把手教你组装机安装系统教程...
  18. i910980hk和r9 4900h哪个好
  19. freemarker生成word,表格分页靠谱
  20. 读书笔记专业投机原理

热门文章

  1. javaSE/ javaEE/ javaME
  2. 树莓派安装opencv4.3.0
  3. 2022-2028全球类脑智能芯片行业调研及趋势分析报告
  4. 车牌识别系统不能连接服务器,车牌识别系统常见问题及其解决方法
  5. 蓝牙模块在cubemx中应用
  6. 好用工具第4期:全能播放器PotPlayer
  7. aspectsof的意思_aspects of
  8. 浏览器回退出现ERR_CACHE_MISS 解决方案
  9. 外链推广员的主要工作是什么?
  10. [思维模式-19]:《复盘》-7- “积”篇 - 操作复盘- 如何做好复盘