本人所用环境如下:
jieba分词库
wordcloud绘制词云库
numpy常用于处理数组
PIL为图像处理标准库
pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install wordclud -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install PIL -i https://pypi.tuna.tsinghua.edu.cn/simple
import jieba
import numpy as np
from PIL import Image
from wordcloud import WordCloud
#读取标点符号库
f=open("E:/MyWork/SelfStudy/Python/stopwords.txt","r",encoding='UTF-8')
stopwords={}.fromkeys(f.read().split("\n"))
f.close()
#打开数据文件进行分词
text = (open('E:/MyWork/SelfStudy/Python/df.txt','r',encoding='utf-8')).read()
segs=jieba.cut(text)
mytext_list=[]
#文本清洗
for seg in segs:
if seg not in stopwords and seg!=" " and len(seg)!=1:
mytext_list.append(seg.replace(" ",""))
cloud_text=",".join(mytext_list)
#加载背景图片
cloud_mask = np.array(Image.open("E:/MyWork/SelfStudy/Python/bg1.png"))
wc = WordCloud(
background_color="white", #背景颜色
mask=cloud_mask,
max_words=1000, #显示最大词数
font_path="qihei55.ttf", #使用字体
min_font_size=15,
max_font_size=50,
width=600, #图幅宽度
height=400
)
wc.generate(cloud_text)
wc.to_file("E:/MyWork/SelfStudy/Python/pic.png")
头四行是引用需要的库:
import jieba
import numpy as np
from PIL import Image
from wordcloud import WordCloud
接下来是用jieba库进行分词:
先读取标点符号库,将特殊符号剔除掉
标点符号库的下载地址:https://download.csdn.net/download/weixin_37986926/10194654
将该txt文件的下载路径填到f=open的第一个引号里。
#读取标点符号库
f=open("你的标点符号库的txt文件的下载路径","r",encoding='UTF-8')
stopwords={}.fromkeys(f.read().split("\n"))
f.close()
接下来需要打开你要进行分词的txt数据文件进行分词处理(比如导出和室友的聊天记录emmm)
将该txt文件的路径填到text=(open('')的第一个单引号里。
#打开数据文件进行分词
text = (open('你的需要进行分词的txt文件的路径','r',encoding='utf-8')).read()
segs=jieba.cut(text)
mytext_list=[]
接下来是文本清洗过程,完成这一步后,分词的工作就做完了
#文本清洗
for seg in segs:
if seg not in stopwords and seg!=" " and len(seg)!=1:
mytext_list.append(seg.replace(" ",""))
cloud_text=",".join(mytext_list)
接下来你可以选取一张图片,作为词云的形状,此处放上转载的图片,我把它起名叫bg1.png
打开这张图片:
#加载背景图片
cloud_mask = np.array(Image.open("你的背景图片的路径"))
然后就可以绘制词云啦~
代码里注释比较清晰,可以自己调整参数玩:
wc = WordCloud(
background_color="white", #背景颜色
mask=cloud_mask, #背景图片
max_words=1000, #显示最大词数
font_path="qihei55.ttf", #使用汉仪旗黑字体,下载地址在下面
min_font_size=15,
max_font_size=50,
width=600, #图幅宽度
height=400
)
wc.generate(cloud_text)
最后一行就是把生成的词云图片放到你的文件夹里,我给我的词云图片起名叫pic.png:
wc.to_file("E:/MyWork/SelfStudy/Python/pic.png")
# wc.to_file("你打算将词云图片放的文件夹/你打算给词云图片起的名字")
此时大概率会报错:OSError: cannot open resource
这是因为无法打开字体文件
本人亲测成功的解决方法:下载汉仪旗黑字体:https://download.csdn.net/download/jiajikang_jjk/10412251
然后将下载好的字体文件粘贴到C:\Windows\Fonts\路径里(这里专门存放字体文件)
(还有一种本人亲测不成功的方法:把参数改成font_path="arial.ttf",发现生成的词云是很多方块乱码。)
再次运行.py文件,没有报错,如下所示:
此时会发现词云图片在你设定的文件夹内成功生成,如下所示:
由上图可以看出博主平常打打游戏考考试,一聊起天来就哈哈哈哈哈哈的沙雕生活,以及热爱老师热爱党的优秀品行。
【参考博文】
1、使用Python做中文分词和绘制词云:其中写到了如何添加特殊词汇,使特殊词汇不被分开
2、python WordCloud 简单实例:详细讲解了如何添加背景图片,以使你的词云成为特定形状,本文中图片从这篇转载
3、Windows环境下Python中wordcloud的使用:详细讲解了各种报错和各种坑,介绍了用PIL显示图片的方式,讲解了wordcloud的参数调整
4、python之OSError: cannot open resource错误+解决方案:本人亲测成功的方案转载自这篇博文
【2018//11/11后记】
1、为什么这种博文没人看,前几天随手瞎写的一篇心情博客那么多点击量啊qwq