今天和大家分享一下如何使用python生成词云,在制作词云之前,我们首先需要一个用于制作词云的数据和形状的模板,本篇文章以长安十二时辰的txt文件和中国地图为例。

具体代码如下

#打开文件
txt=open(".\长安十二时辰.txt",encoding="utf8")
text=txt.read()
#使用jieba分词对文件进行中文分词
import jieba
wordlist_jieba=jieba.lcut(text,cut_all=False)
wl_jb_txt=" ".join(wordlist_jieba)#将分词后的数据转化为字符串并用空格隔开
#导入imageio库中imread函数并使用函数读取本地图片
import imageio
mk=imageio.imread("ditu.png")
#导入词云制作库wordcloud并配置词云对象w的参数
import wordcloud
font = "C:\\Windows\\Fonts\\STXINGKA.TTF"#词云的中文字体所在路径
w=wordcloud.WordCloud(max_words=2000,
                      font_path = font,#这里要设置,否则中文会乱码
                      mask=mk,#指定mk为词云形状图片
                      background_color="white",
                      scale=5)
#加载词云文本
w.generate(wl_jb_txt)
#输出词云文件
filename="长安十二时辰词云图.png"
w.to_file(filename)

得到如下词云图:

补充说明

Jieba分词

方法:jieba.cut()、jieba.cut_for_search()、jieba.lcut()、jieba.lcut_for_search()

jieba.cut()和jieba.cut_for_search()返回的是一个可迭代的 generator,可使用 for 循环来获得分词后得到的每一个词语,jieba.lcut()和jieba.lcut_for_search()返回的是由分词词语组成的list。

方法jieba.cut()和 jieba.lcut()的参数

1.需要分词的字符串。

2.cut_all:是否使用全模式,默认值为 False表示精确模式。

3.HMM:用来控制是否使用 HMM 模型,默认值为 True。

方法jieba.cut_for_search()和 jieba.lcut_for_searc()使用搜索引擎模式分词,其参数如下:

1.需要分词的字符串

2.HMM:用来控制是否使用 HMM 模型,默认 True。

wordcloud库

wordcloud常规使用方法

1.配置对象参数:w=wordcloud.WordCloud()

2.加载词云文本:w.generate(txt)

3.输出词云文件:w.to_file(filename)其中filename为png或jpg文件

w=wordcloud.WordCloud()常用参数

width:指定词云对象生成图片的宽度,默认400像素

height:指定词云对象生成图片的高度,默认200像素

min_font_size:指定词云中字体的最小字号,默认4号

max_font_size:指定词云中字体的最大字号,根据高度自动调节

font_step:指定词云中字体字号的步进间隔,默认为1

font_path:指定字体文件的路径,默认None

max_words:指定词云显示的最大单词数量,默认200

stop_words:指定需要屏蔽的词

mask:指定词云形状,默认为长方形,需要引用imread()函数

background_color:指定词云图片的背景颜色,默认为黑色

scale : 按照比例进行放大画布,默认值为1,如设置为1.5,则长和宽都是原来画布的1.5倍