Python文本挖掘:词云图

Python文本挖掘:词云图一、什么叫词云图?词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成”关键词的渲染”就类似云一样的彩色图片,从而过滤掉大量的文本信息,,使人一眼就可以领略文本数据的主要表达意思。二、开发环境准备已有:Win10+Python3.6.164bit+PyCharm需要:①直接导入两个强大的Python库jieba分词和词云生成Worl…

一、什么叫词云图?

词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成”关键词的渲染”就类似云一样的彩色图片,从而过滤掉大量的文本信息,,使人一眼就可以领略文本数据的主要表达意思。

Python文本挖掘:词云图


二、开发环境准备

已有:Win10+Python 3.6.1  64bit+PyCharm

需要:①直接导入两个强大的Python库jieba分词和词云生成WorldCloud(可自定义背景)

          ②准备好文本数据,此处用的文本文件是我偶像周杰伦的歌词集合   jay.txt

若使用PyCharm,从左上角的File–>Setting–>Project:工程名–>Project Interpreter,点击右侧的“+”,在弹出界面的搜索栏中输入“jieba”和“WorldCloud”,Install Package即可


三、上代码,老司机开车

互联网上有很多的现成的词云图制作工具,但我想私人订制。

1、只用十行代码,真滴有灵性

import matplotlib.pyplot as plt     #数学绘图库
import jieba               #分词库
from wordcloud import WordCloud   #词云库

#1、读入txt文本数据
text = open(r'D:\Python\test\wordcloud\data\jay.txt',"r").read()

#2、结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径
# 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒

cut_text= jieba.cut(text)
result= "/".join(cut_text)#必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
#print(result)

#3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库
#无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
wc = WordCloud(font_path=r"D:\Python\test\wordcloud\data\ttf\yahei.ttf",background_color='white',width=800,height=600,max_font_size=50,
               max_words=1000)#,min_font_size=10)#,mode='RGBA',colormap='pink')
wc.generate(result)
wc.to_file(r"D:\Python\test\wordcloud\output\wordcloud.png") #按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰

# 4、显示图片
plt.figure("词云图") #指定所绘图名称
plt.imshow(wc)       # 以图片的形式显示词云
plt.axis("off")      #关闭图像坐标系
plt.show()

前方到站,词云街A:

Python文本挖掘:词云图

2、进阶:自定义背景图

import matplotlib.pyplot as plt                          #数学绘图库
from PIL import Image
import numpy as np                                      #科学数值计算包,可用来存储和处理大型矩阵
import jieba                                            #分词库
from wordcloud import WordCloud, ImageColorGenerator   #词云库

#1、读入txt文本数据
text = open(r'D:\Python\test\wordcloud\data\english.txt',"r").read()

# 2、结巴分词:cut_all参数可选, True为全模式,False为精确模式,默认精确模式
cut_text= jieba.cut(text,cut_all=False)
result= "/".join(cut_text)#必须给个符号分隔开分词结果,否则不能绘制词云

#3、初始化自定义背景图片
image = Image.open(r'D:\Python\test\wordcloud\data\backgroud\image1.png')
graph = np.array(image)

#4、产生词云图
#有自定义背景图:生成词云图由自定义背景图像素大小决定
wc = WordCloud(font_path=r"D:\Python\test\wordcloud\data\ttf\yahei.ttf",background_color='white',max_font_size=50,mask=graph)
wc.generate(result)

#5、绘制文字的颜色以背景图颜色为参考
image_color = ImageColorGenerator(graph)#从背景图片生成颜色值
wc.recolor(color_func=image_color)
wc.to_file(r"D:\Python\test\wordcloud\output\wordcloud.png") #按照背景图大小保存绘制好的词云图,比下面程序显示更清晰

# 6、显示图片
plt.figure("词云图")   #指定所绘图名称
plt.imshow(wc)         # 以图片的形式显示词云
plt.axis("off")       # 关闭图像坐标系
plt.show()

前方到站,词云街B:

Python文本挖掘:词云图

原图:其他背景都是纯色

Python文本挖掘:词云图


四、遇到的bug

①用Pycharm,不再使用命令行pip install xxx导入包特别方便,但是我遇到安装错误:Mircroft Viscal C++ 14.0 is required,以前我用Visual studio 2015写C语言的时候有,后来换系统就不想再下了,所以我直接去下twisted对应版本的whl文件(wordcloud-1.3.2-cp36-cp36m-win_amd64),cp是Python版本,amd64代表64位。然后Windows+R打开cmd执行命令:pip install 完整路径\wordcloud-1.3.2-cp36-cp36m-win_amd6。

②需要注意的是WordCloud默认不支持中文,所以需要去网上中文字体下载下载好中文字库,我下的是微软雅黑。

否则就会出现展示英文字体没有任何错误,但是展示中文字体会出现下面这种框框。

Python文本挖掘:词云图


五、结巴分词简介

1、中英文皆可分词

Python文本挖掘:词云图

2、支持自定义词典

Python文本挖掘:词云图


六、词云图学习总结

无自定义背景图,要指定WordCloud的像素宽高度来决定词云图大小;

有自定义背景图,由背景图像素大小决定词云图大小。

突然发现,我开始慢慢地对Python能做的许多有趣的事越来越感兴趣φ(≧ω≦*)♪。

然后接触了几个数据分析领域常用的Python库,Numpy、MatPlotlib、pandas等等

所以,想坚持关注这个过程:

理解 Python 3基础  

学习 Numpy  

学习 Pandas

学习 Matplol


七、互联网在线词云制作工具

不翻墙:目前在试用Tagul,感觉词频分析有问题,再看看。

翻墙:Tagxedo在业界的口碑很高,操作界面是英文,改天试试

9个优秀的词云图免费生成工具介绍

国内外5款经典词云工具测评

看看百度上的词云图:

Python文本挖掘:词云图

 

今天的文章Python文本挖掘:词云图分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9044.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注