准备工作
主要用到Python的两个第三方库
- jieba:中文分词工具
- wordcloud:python下的词云生成工具
步骤
- 准备语料库,词云图需要的背景图片
- 使用jieba进行分词,去停用词,词频统计等
- 使用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 != ' ': 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