【python练习】生成词云图

1、使用wordcloud库生成词云图

import wordcloud
import jieba
# from scipy.misc import imread #新版本已经没有imread接口,使用下面的命令导入
from matplotlib.pyplot import imread
'''
什么是词云:以词语为基本单元,根据在文本中出现的频率设计不同大小以形成视觉上不同效果,形成关键词云层,或关键词渲染,从而使读者一瞥即可领略文本的主旨
实现:通过wordcloud库的核心类WordCloud类实现,默认以空格或标点为分隔符对目标文本进行分词处理,对于中文文本,分词处理需要用户来完成,
一般先将中文文本分词处理,然后再空格拼接。再调用wordcloud库函数
词云参数:
font_path='msyh.ttc' # 指定字体文件的完整路径,默认为None
width=800  #生成图片宽度,默认为400像素
height=600  #生成图片高度,默认为200像素
mask = mask  # 词云形状,默认方形图
min_font_size  #  词云中最小的字体字号,默认为4号
max_font_size  #  词云中最大的字体字号,默认为None 根据高度自动调节
max_words 词云中最大词数 默认200
stopwords 被排除词列表,不再词云中显示
background_color 图片背景颜色,默认为黑色

jieba库:解决中文分词问题
精确分词:jieba.lcut(txt)
全模式:将句子中所有可以成词的词语都扫描出来,会存在冗余 jieba.lcut(s, cut_all = True)
搜素引擎模式:在精确模式下,对长词再次切分,提高召回率,适合用于搜索引擎分词  jieba.lcut_for_search(s)
jieba.add_word("XX") : 给jieba库中增加词
'''
if __name__ == '__main__':
    # 英文文本生成词云图
    txt = 'review reviewer bug bug bug bug test test test test test review issus'
    wd = wordcloud.WordCloud().generate(txt)  # 根据文本生成词云
    wd.to_file('test1.jpg')  # 生成图片

    # 中文文本配合jieba库生成词云图
    txt = '勇敢热爱勤奋勤奋热爱坚强 '
    words = jieba.lcut(txt)  # 精确分词 返回列表
    newtxt = ' '.join(words) # 空格拼接 返回字符串
    wd = wordcloud.WordCloud(font_path='msyh.ttc', width=500, height=300).generate(newtxt) # 设置字体不然无法识别 默认 400 200
    wd.to_file('中文词云.png')

    # 文件读取生成词云图  结合mask设置词云背景图
    mask = imread('mask.jpg') #下载背景图放入当前目录下
    with open('word.txt', mode='r+', encoding='utf-8') as f:
        word = f.read()
    words = jieba.lcut(word)  # 精确分词 返回列表
    newtxt = ' '.join(words) # 空格拼接 返回字符串
    wd = wordcloud.WordCloud(background_color='white',
                             font_path='msyh.ttc',
                             width=800,
                             height=600,
                             mask = mask,
                             ).generate(newtxt) # 设置字体不然无法识别 默认 400 200
    wd.to_file('词云.jpg')

 

原文地址:https://www.cnblogs.com/zhaoyujiao/p/15481593.html