Python简单文本分析朱自清写《匆匆》的情感状态
目录
分词是自然语言处理(NLP)中最底层、最基本的模块,分词精度的好坏将直接影响文本分析的结果。有好多大型的分词系统(比如北京理工大学张华平博士开发的中文分词系统:ICTCLAS,是一个很优秀的分词系统),这里介绍Python中使用的小巧、强大的jieba中文分词。
首先获得jieba包:
[code]C:\Users\26015> pip install jieba
下载后,就能加载使用了。
1、jieba中文分词的三种常用模式
(1) 精确模式:试图将句子最精确地切开,适合文本分析;
(2) 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义问题;
(3) 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
注:同时结巴分词支持繁体分词和自定义字典方法。
首先需要导入模块:import jieba
(1)、精确模式
[code]>>> test = '小天于2014年毕业于北京大学' >>> cut1 = jie.cut(test) >>> cut1 = jieba.cut(test) >>> type(cut1) <class 'generator'> >>> print('精确模式分词结果:',' '.join(cut1))
精确模式分词结果:小天于 2014 年 毕业 于 北京大学
这里的' '.join()函数指用空格分开cut1里面的元素,是个字符串连接函数。
举个小小的例子予以说明;
[code]>>> a1 = 'abc' >>> a2 = 'def' >>> '/'.join(a1+a2) 'a/b/c/d/e/f'
如果加一个参数cut_all = False
[code]>>> cut1 = jieba.cut(test,cut_all = False) >>> print(' '.join(cut1))
小天于 2014 年 毕业 于 北京大学
可以看出cut_all = False这个参数加与没加都一样,它是个默认参数。
(2)、全模式
[code]>>> cut1 = jieba.cut(test,cut_all = True) >>> print('全模式分词结果:',' '.join(cut1))
全模式分词结果: 小 天 于 2014 年 毕业 于 北京 北京大学 大学
显然,全模式不管分词后意思会不会有歧义,只管快速分出所有可能的词,不适合做文本分析。
(3)、搜索引擎模式
[code]>>> cut1 = jieba.cut_for_search(test) >>> print('搜索引擎模式分词结果:',' '.join(cut1))
搜索引擎模式分词结果: 小天于 2014 年 毕业 于 北京 大学 北京大学
搜索引擎模式也会给出所有可能的分词结果,但是搜索引擎模式对于词典中不存在的词,比如一些很少见、新词,却能给出正确的分词结果。
2、简单文本分析朱自清写《匆匆》的情感状态
这是网上下载的《匆匆》原文:
由于Python不像R语言那样强大的可视化功能,R中还能画个词云什么的。所以,这里对《匆匆》里面每段话统计词频,取每段话词频最高的前五个词。导入必要的分次及词频统计包:
[code]import jieba import jieba.analyse
发现开始时候将朱自清这个大作家分开了,应该是一个完整的人名词。就要加入自定义词典:自己新建一个add_dict.txt文档,里面写上朱自清即可。以后遇到类似需要人工加词典,只需要每行放一个词即可。
注意:add_dict.txt默认ANSI编码,需要另存为utf-8编码格式;
[code]import jieba import jieba.analyse path1 = 'D:\\Program Files\\python\\codes\\匆匆.txt' #添加自定义词典,解决默认词典没有特殊词的问题 path2 = 'D:\\Program Files\\python\\codes\\add_dict.txt' jieba.load_userdict (path2) a = open(path1,'r') dat = a.readline() while(dat): dat = jieba.cut(dat,cut_all = False) print('/'.join(dat)) dat = a.readline() a.close()
分词结果
下面统计词频
[code]import jieba import jieba.analyse path1 = 'D:\\Program Files\\python\\codes\\匆匆.txt' #添加自定义词典,解决默认词典没有特殊词的问题 path2 = 'D:\\Program Files\\python\\codes\\add_dict.txt' jieba.load_userdict (path2) a = open(path1,'r') dat = a.readline() while(dat): #提取前topK = n个关键词 tags = jieba.analyse.extract_tags(dat,topK = 5) print(' '.join(tags)) dat = a.readline() a.close()
分词并提取词语结果:
匆匆
朱自清
时候 一去不复返 杨柳 桃花 燕子
日子潸潸 里算 八千多 流里
过去 太阳 日子 叹息 匆匆
赤裸裸 痕迹 徘徊 匆匆 罢了
一去不复返 聪明 日子 为什么 告诉
给我们反映的信息就是:
日子 过去 一去不复返 罢了
情感状态:
《匆匆》表达了作者对时间过去的感叹与无奈!
Python的jieba中文分词就简单介绍到这里,关于Python中基于jieba分词在文本分类中的应用会在后面慢慢介绍!每次学习一点点,学的轻松,写的轻松!
- 用python实现简单的文本情感分析
- 用python实现简单的文本情感分析
- 【转】用python实现简单的文本情感分析
- 用python实现简单的文本情感分析
- Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
- Python 文本挖掘:使用机器学习方法进行情感分析(一、特征提取和选择)
- word2Vec--(1) nltk实现简单的切词,情感分析,文本相似度(TF-IDF)
- [机器学习]基于TextBlob简单文本情感分析
- Python实现简单的文本相似度分析操作详解
- 用Python进行简单的文本相似度分析
- 用python做文本情感分析
- Python做文本挖掘的情感极性分析
- 文本情感分析+python+正面和负面新闻+新浪微博+情感字典+机器学习
- python - 对 '数码大冒险tri 泡泡评论' 进行简单的情感分析
- 朴素贝叶斯分类器简单实现文本情感分析
- Python 文本挖掘:使用情感词典进行情感分析(算法及程序设计)
- 中文文本情感分析:基于机器学习方法的思路
- Python实现的文本简单可逆加密算法示例
- python数据分析之(7)简单绘图pylab
- Python迭代器定义与简单用法分析