代码改变世界

python绘制中文词云图

2019-04-20 16:52  zYaMei  阅读(8636)  评论(3编辑  收藏  举报

准备工作

  主要用到Python的两个第三方库

  • jieba:中文分词工具
  • wordcloud:python下的词云生成工具

步骤

  1. 准备语料库,词云图需要的背景图片
  2. 使用jieba进行分词,去停用词,词频统计等
  3. 使用wordcloud进行词频展示

主要代码

 1 import jieba
 2 jieba.load_userdict('userdict.txt')  # 加载自定义词典
 3 sentence_depart = jieba.cut(sentence)  # 分词
 4 stop_words = stop_word_list()  # 创建停用词列表
 5 out_str = ''
 6 # 去停用词
 7 for word in sentence_depart:
 8     if word not in stop_words:
 9         if word != '\t':
10             out_str += word
11             out_str += " "
 1 from os import path
 2 from scipy.misc import imread
 3 import jieba.analyse
 4 import matplotlib.pyplot as plt
 5 from wordcloud import WordCloud
 6 
 7 d = path.dirname(__file__)  # 返回当前运行脚本下的绝对路径
 8 back_coloring_path = "1.jpg"  # 随意准备一张图片,用来设置词云形状
 9 back_coloring = imread(path.join(d, back_coloring_path))  # 读取图片
10 
11 f = open(u'out.txt', 'r', encoding='utf-8').read()  # out.txt已经处理好的分词数据
12 tags = jieba.analyse.extract_tags(f, topK=100, withWeight=False)  # 关键词提取 topK=100 提取TF-IDF权重最大的前100个关键词
13 text = " ".join(tags)
14 
15 wordcloud = WordCloud(background_color='white',
16                       width=2000,
17                       height=1000,
18                       margin=2,
19                       max_words=100,  # 设置最多显示的词数
20                       mask=back_coloring,  # 设置词云形状
21                       font_path="simhei.ttf",  # 中文词图必须设置字体格式,否则会乱码,这里加载的是黑体
22                       random_state=10)  # 设置有多少种随机生成状态,即有多少种配色方案
23 w = wordcloud.generate(text)  # 传入需画词云图的文本
24 plt.imshow(w)
25 plt.axis('off')  # 关闭坐标轴
26 plt.show()

比如:传入如下两张图片作为词图的形状

 

词云图结果

 

参考资料:https://www.jianshu.com/p/2052d21a704c