⼿把⼿教你做⼀个词云⽣成(精讲每⼀步,附带完整源代码)
川川最近遇到⼀些同学问我词云⽣成问题,于是我就在此统⼀回答⼀下
⾔归正传:
效果看看:
第⼀部分,导⼊模块:
import numpy as np
from PIL import Image
import wordcloud
import jieba
第⼆部分设置⼀个停⽤词汇,放在前⾯,在后⾯⽤来分词⽤的:
stopword=''
第三部分,我就假装⾃⼰还是个初学者,做个函数读取⽂档:
def func1():
file=open('',encoding="utf-8")
result =ad()
file.close()
return result
这⾥我就稍微解读⼀下:
open就是打开⽂档,encoding呢就是要编译⽅式,防⽌乱码,
然后就⼀个read函数读取⽂档,打开了⽂档读取了就关闭吧,
所以就⼀个close函数,最后⼀个return返回值,懂了吧?
第四部分,分词⽣成词云:
def func2(words):
wordList = jieba.lcut(words)
mk = np.array(Image.open("中国地图.jpg"))
c = wordcloud.WordCloud(scale=4,stopwords=stopword,mask=mk,\
font_path="f")
<_file('./hh.jpg')
源代码电影讲解
还是解读⼀下:
jieba.lcut(words)就是⽤来返回中⽂⽂本words分词后的列表变量,words就是中⽂⽂本字符串
np.array就是将数据转化为矩阵,这⾥呢就是把图⽚转换为矩阵
核⼼重点东西来了:
配置词云图⽚分为三步:
1.配置对象: 对象名=wordcloud.WordCloud()
2.加载词云⽂本:对象名.generate(txt)
其中txt的内容需要以空格来分隔单词!并且对于英⽂单词⽽⾔,如果单词长度为1-2,系统会⾃动过滤!
还有⼀些对图⽚配置的参数:
1.对图⽚的⼤⼩设置
对象名.wordcloud.WordCloud(width=800,height=800) 系统默认宽400像素,⾼200像素
2.指定词云中字体的最⼩和最⼤字号
对象名.wordcloud.WordCloud(min_font_size=10,max_font_size=20) 系统默认最⼩为4号
3.指定词云中字体字号的步进间隔,默认为1
对象名.wordcloud.WordCloud(font_step=2) 因为系统会根据词出现的次数来定词的⼤⼩,次数多的和次数少的之间的字号差距就是步进间隔。
4.指定字体⽂件的路径,默认为None
下⾯所有的运⽤⽅法和前三条都是⼀样的
font_path=“”(微软雅⿊)
5.指定词云显⽰的最⼤单词数量,默认为200
max_words=20
6.指定词云的排除次列表,即不显⽰的单词列表
stop_words={" “,” “,” "} 采⽤集合的形式
7.指定词云图⽚的背景颜⾊,默认为⿊⾊
background_color=“white”
8.指定词云的形状,默认为长⽅形,需要引⽤imread()函数
举个例⼦:
import wordcloud
import imageio
mk=imageio.imread("D:/1.png")
c=wordcloud.WordCloud(font_path="",background_color="white",mask=mk,min_font_size=5)
<_file("D:/1.png")
前⾯⼀部分的词云配置讲很清楚了!!
讲解下后⾯的部分:
c,generate(x),x就是我们要需要分词的⽂档,上⾯的例⼦呢我就是⾃⼰添加的内容,不是⽂档,读取⽂档看我第四部分,这只是例⼦讲解c.to_file()就是保存为图⽚到某个路径,可以参考我第四部分,我觉得更好,直接保存在当个⽂件夹。
好了,学会了吗?
上全部源代码:
import numpy as np
from PIL import Image
import wordcloud
import jieba
stopword=''
def func1():
file=open('',encoding="utf-8")
result =ad()
file.close()
return result
def func2(words):
wordList = jieba.lcut(words)
mk = np.array(Image.open("中国地图.jpg"))
c = wordcloud.WordCloud(scale=4,stopwords=stopword,mask=mk,\  font_path="f")
<_file('./hh.jpg')
words = func1()
func2(words)
好了,川川讲很精细了,有问题留⾔吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。