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

1693453-20190927171625114-62195511.png

最近正在用nltk 对中文网络商品评论进行褒贬情感分类,计算评论的信息熵(entropy)、互信息(point mutual information)和困惑值(perplexity)等(不过这些概念我其实也还理解不深...只是nltk提供了相应方法)。

我感觉用nltk 处理中文是完全可用的。其重点在于中文分词和文本表达的形式。

中文和英文主要的不同之处是中文需要分词。因为nltk 的处理粒度一般是词,所以必须要先对文本进行分词然后再用nltk来处理(不需要用nltk来做分词,直接用分词包就可以了。严重推荐结巴分词,非常好用)。

中文分词之后,文本就是一个由每个词组成的长数组:[word1, word2, word3…… wordn]。之后就可以使用nltk里面的各种方法来处理这个文本了。比如用FreqDist统计文本词频,用bigrams把文本变成双词组的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。

再之后就可以用这些来计算文本词语的信息熵、互信息等。

再之后可以用这些来选择机器学习的特征,构建分类器,对文本进行分类(商品评论是由多个独立评论组成的多维数组,网上有很多情感分类的实现例子用的就是nltk 中的商品评论语料库,不过是英文的。但整个思想是可以一致的)。

另外还有一个困扰很多人的Python 中文编码问题。多次失败后我总结出一些经验。

Python 解决中文编码问题基本可以用以下逻辑:

utf8(输入)——> unicode(处理)——>(输出)utf8

Python 里面处理的字符都是都是unicode编码,因此解决编码问题的方法是把输入的文本(无论是什么编码)解码为(decode)unicode编码,然后输出时再编码(encode)成所需编码。

由于处理的一般为txt 文档,所以最简单的方法,是把txt文档另存为utf-8编码,然后使用Python处理的时候解码为unicode(sometexts.decode('utf8')),输出结果回txt的时候再编码成utf8(直接用str()函数就可以了)。

另外这篇文章也有很详细的讲到nltk 的中文应用,很值得参考:http://blog.csdn.net/huyoo/article/details/12188573

1.NLTK

NLTK 在使用Python处理自然语言的工具中处于领先的地位。它提供了WordNet这种方便处理词汇资源的接口,以及分类、分词、词干提取、标注、语法分析、语义推理等类库。

网站

http://www.nltk.org/

安装 NLTK: sudo pip install -U nltk

安装 Numpy (可选): sudo pip install -U numpy

安装测试: python then type import nltk

2.Pattern

Pattern 拥有一系列的自然语言处理工具,比如说词性标注工具(Part-Of-Speech Tagger),N元搜索(n-gram search),情感分析(sentiment analysis),WordNet。它也支持机器学习的向量空间模型,聚类,向量机。

网站:

https://github.com/clips/pattern

安装:

pip install pattern

3.TextBlob

TextBlob 是一个处理文本数据的Python库。它提供了一个简单的api来解决一些常见的自然语言处理任务,例如词性标注、名词短语抽取、情感分析、分类、翻译等等。

网站:

http://textblob.readthedocs.org/en/dev/

安装:

pip install -U textblob

4.Gensim

Gensim 是一个Python库,用于对大型语料库进行主题建模、文件索引、相似度检索等。它可以处理大于内存的输入数据。作者说它是“纯文本上无监督的语义建模最健壮、高效、易用的软件。”

网站:

https://github.com/piskvorky/gensim

安装:

pip install -U gensim

5.PyNLPI

它的全称是:Python 自然语言处理库(Python Natural Language Processing Library,音发作: pineapple) 是一个用于自然语言处理任务库。它集合了各种独立或松散互相关的,那些常见的、不常见的、对NLP任务有用的模块。PyNLPI可以用来处理N元搜索,计算频率表和分布,建立语言模型。它还可以处理向优先队列这种更加复杂的数据结构,或者像Beam搜索这种更加复杂的算法。

安装:

LInux:sudo apt-get install pymol

Fedora:yum install pymol

6.spaCy

这是一个商业的开源软件。结合了Python 和Cython优异的NLP工具。是快速的,最先进的自然语言处理工具。

网站:

https://github.com/proycon/pynlpl

安装:

pip install spacy

7.Polyglot(可以做印尼分词,不过需要安装包,基于Linux系统)

Polyglot 支持大规模多语言应用程序的处理。它支持165种语言的分词,196中语言的辨识,40种语言的专有名词识别,16种语言的词性标注,136种语言的情感分析,137种语言的嵌入,135种语言的形态分析,以及69种语言的翻译。

网站:

https://pypi.python.org/pypi/polyglot

安装

pip install polyglot

8.MontyLingua

MontyLingua 是一个免费的、功能强大的、端到端的英文处理工具。在MontyLingua输入原始英文文本 ,输出就会得到这段文本的语义解释。它适用于信息检索和提取,请求处理,问答系统。从英文文本中,它能提取出主动宾元组,形容词、名词和动词短语,人名、地名、事件,日期和时间等语义信息。

网站:

http://web.media.mit.edu/~hugo/montylingua/

9.BLLIP Parser

BLLIP Parser(也叫做Charniak-Johnson parser)是一个集成了生成成分分析器和最大熵排序的统计自然语言分析器。它包括命令行和python接口。

10.Quepy

Quepy 是一个Python框架,提供了将自然语言问题转换成为数据库查询语言中的查询。它可以方便地自定义自然语言中不同类型的问题和数据库查询。所以,通过Quepy,仅仅修改几行代码,就可以构建你自己的自然语言查询数据库系统。

网站

https://github.com/machinalis/quepy

http://quepy.machinalis.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android代码清除锁屏密码,清除Android手机锁屏密码的三个小妙招

大家有没有把锁屏密码忘记过?发生这种情况的概率应该很小吧,但为了以防万一大家还是看一下本文的解锁教程吧!这种解锁的方法要求,被锁上的手机是联网的状态,并登录了google账号,账号密码已知。如果以上条件…

android退出app代码,Android应用退出代码各种方式

1. 点击按钮最小化app返回到home//并不会退出app,只是最小化findViewById(R.id.button3).setOnClickListener(new OnClickListener(){public void onClick(View v){Intent intent new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);startA…

c语言数组最大可定义多少位_C语言求数组的最大值三种方法

/* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);int maxDividAndConquerValue(int* arr, int left, int right);int main(void) { int arr[] {500, -1, 30, 7, 99, 12}; printf("数组中的元素最大…

android 百度map 一个layout加载多个mapview,android 百度地图API 使用Marker和InfoWindow

前言:在android开发过程中,百度地图的使用是比较普遍的,但是如何使用,使用什么版本的百度API还是需要一些讲究。在项目过程中,需要用到百度地图的marker和InfoWindow的功能。标注覆盖物(百度地图官方图)布局文件很简单…

python数据的格式输出_Python格式化输出

“%”的使用 格式符 描述 %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符及其ASCII码 %u 整数(无符号) %b 二进制整数 %o 八进制数(无符号) %d 十进制整数 %i 十进制整数 %x 十六进制数(无符号) %X 十六进制数大写(无符号) %e 指数 (基底写为e)&#x…

android代码移除焦点,android-如何从单个editText移除焦点

android-如何从单个editText移除焦点在我的应用程序中,我只有一个button.seFocusableInTouchMode(),以及一些button.requestFocus(),按钮和一个微调器。 我认为,我的EditText获得关注,因为它是此活动中唯一可关注的视图…

python数据分析实验报告_Python 数据分析入门实战

本训练营中,我们将学习怎么样使用 Python 进行数据分析。课程将从数据分析基础开始,一步步深入讲解。从 Python 的基础用法到数据分析的各种算法,并结合各种实例,讲解数据分析过程中的方方面面。 课程内容将分为以下四个部分&…

unistd.h linux,Linux 标准库下的unistd.h

unistd.h在unix中类似于Window中的windows.h!#ifdef WIN32#include#else#include#endifunistd.h含有的常量与函数:ssize_t read(int, void *,size_t);ssize_t write(int, const void *,size_t);int unlink(const char *);int us…

go 写文件_如何在 Ubuntu 20.04 上安装 Go

本文最先发布在:如何在 Ubuntu 20.04 上安装 Go​www.itcoder.techGo,通常被称为 golang,它是一门由 Google 创建的现代化的开源编程语言,它允许你构建实时并且高效的应用。很多流行的应用程序,例如 Kubernetes&#x…

android纹理存储,Android:OpenGL存储纹理多长时间?

openGL存储纹理多长时间?离开活动时纹理内存是否会被回收?例如,如果我有以下代码:mGL.glGenTextures(1, mTextures, 0);mGL.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[0]); // A bound texture is// an active texture//mGL.glTexImage2D(GL10.GL_TE…

python获取文件夹名_python基础之获取文件目录及名称

准备 被引用的文件:D:\gogncheng\apiAutoMate\api\a\bePerform.py 执行的文件: D:\gogncheng\apiAutoMate\common\b\perform.py 适用场景:在perform.py下引用文件bePerform.py运行代码,分别获取引用文件与执行文件的目录及名称 be…

android调用fragment的方法,AndroidX下使用Activity和Fragment的变化

原标题:AndroidX下使用Activity和Fragment的变化原文:How AndroidX changes the way we work with Activities and Fragments作者:Miłosz Lewandowski译者:Fly_with24链接:https://juejin.im/post/5e5a0c316fb9a07cd2…

java汽车管理系统_坑爹!花费2亿耗时2年,网站没建完Java都写不好,顶级咨询公司埃森哲被告上法庭...

乾明 发自 凹非寺 量子位 报道 | 公众号 QbitA耗费2个多亿,耗时2年多,连一个可用的网站或者APP都没有交付出来。想要完工?那就再交1000万美元。这件事的受害方、美国汽车租赁公司赫兹(Hertz)一怒之下, 将顶级咨询公司埃森哲(Accen…

Android接口一般定义格式,Android开发规范

原标题:Android开发规范一.书写规范1. 编码方式统一用UTF-8.2. 花括号不要单独一行,和它前面的代码同一行。而且,花括号与前面的代码之间用一个空格隔开。3. 空格的使用if、else、for、switch、while等逻辑关键字与后面的语句留一个空格隔开。…

c++将小写转换为大写函数_必须掌握的基础函数组合应用技巧,提高效率,准时下班...

点击上方"Excel函数公式"免费订阅货币,生活中必不可少的东西,是物品价值等的直接体现,在实际的工作中也经常遇到,如果给定的数据中,要对其进行格式的设置,你会怎么做?一、Dollar函数&…

android 关闭软键盘失去焦点,Android - html输入在软键盘打开时失去焦点(ASP.net)...

使用Nexus 4,Android 4.2.1本机Chrome浏览器 - 当我点击字段时,软键盘出现,然后该字段立即失去焦点。我必须再次点击字段,并且已经打开键盘才能输入文字。这不会发生在桌面上的Chrome中。我在ASP用户控制下的登录表单:…

jenkins使用哪个版本号_Linux下安装JDK及jenkins

往期相关文章推荐:Linux ping不通域名安装JDK依赖(8/11)一.(推荐)// 查看yum仓库中可安装的jdk版本yum -y list java*// 安装示例yum install -y java-1.8.0-openjdk-devel.x86_64java --version 二.1.获取JDK安装包,可以win下下载,再用scp…

骁龙660鸿蒙系统,骁龙660双摄测试机偷跑 核心数/GPU证实

中关村在线消息:高通会在今年推出一款全新的中端处理器——骁龙660。此前有网友在微博上曝光一组疑似骁龙660的跑分,安兔兔总成绩为105576分。现在,微博上又出现搭载骁龙660双摄工程机的谍照,该机支持2K分辨率,采用6GB…

tensorflow 模型可视化_基于tensorflow-2.x的yolov3实现

YOLO v3可以说是单阶段检测器中的佼佼者,融合了多个框架的优势,在保持模型简洁性的同时,性能上也在当时达到了stoa。YOLO v3的主干网络是darknet-53的前面的52层,所以它是一个全卷积网络,并且为了降低池化带来的梯度负…