【Python】Windows下用Jieba分词和WordCloud库生成中文词云

一、打开Anaconda Prompt,用activate命令激活环境

本人所用环境如下:

【Python】Windows下用Jieba分词和WordCloud库生成中文词云_第1张图片

二、从清华镜像下载所需库:

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

三、新建python文件,复制以下代码(其中需要修改的地方在下面有讲解)

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

【Python】Windows下用Jieba分词和WordCloud库生成中文词云_第2张图片

打开这张图片:

#加载背景图片
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("你打算将词云图片放的文件夹/你打算给词云图片起的名字")

四、运行刚刚新建的.py文件

此时大概率会报错:OSError: cannot open resource

这是因为无法打开字体文件

本人亲测成功的解决方法:下载汉仪旗黑字体:https://download.csdn.net/download/jiajikang_jjk/10412251

然后将下载好的字体文件粘贴到C:\Windows\Fonts\路径里(这里专门存放字体文件)

(还有一种本人亲测不成功的方法:把参数改成font_path="arial.ttf",发现生成的词云是很多方块乱码。)

再次运行.py文件,没有报错,如下所示:

【Python】Windows下用Jieba分词和WordCloud库生成中文词云_第3张图片

此时会发现词云图片在你设定的文件夹内成功生成,如下所示:

【Python】Windows下用Jieba分词和WordCloud库生成中文词云_第4张图片

由上图可以看出博主平常打打游戏考考试,一聊起天来就哈哈哈哈哈哈的沙雕生活,以及热爱老师热爱党的优秀品行。


【参考博文】

1、使用Python做中文分词和绘制词云:其中写到了如何添加特殊词汇,使特殊词汇不被分开

2、python WordCloud 简单实例:详细讲解了如何添加背景图片,以使你的词云成为特定形状,本文中图片从这篇转载

3、Windows环境下Python中wordcloud的使用:详细讲解了各种报错和各种坑,介绍了用PIL显示图片的方式,讲解了wordcloud的参数调整

4、python之OSError: cannot open resource错误+解决方案:本人亲测成功的方案转载自这篇博文

【2018//11/11后记】

1、为什么这种博文没人看,前几天随手瞎写的一篇心情博客那么多点击量啊qwq

你可能感兴趣的:(#,Python,#,各种教程)