今天和大家分享一下如何使用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倍