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')