鬼吹灯文本挖掘1:jieba分词和CountVectorizer向量化
鬼吹灯文本挖掘3:关键词提取和使用sklearn 计算TF-IDF矩阵
鬼吹灯文本挖掘4:LDA模型提取文档主题 sklearn LatentDirichletAllocation和gensim LdaModel
1. 准备数据:具体可参考前一篇分析:鬼吹灯文本挖掘1
得到gcd1_words_list,每个元素就是一个章节分词后合并按空格分割的字符串,这样的格式才符合wordcloud的使用要求。
2. 快速生成词云
其中font_path参数可传入本地安装的字体;width和height参数为显示词云图片的宽和高;
mode: string (default='RGB'),当参数为'RGBA' 并且backgroud_color不为空时,背景为透明
backgroud_color: color value (default='black'),背景颜色,可设置'red', 'white'等
stopwords: 即停用词,可传入自定义的停用词词典,如果为空时,则使用内置的stopwords
max_words: number (默认为200), 要显示的词的最大个数
prefer_horizontal: float (默认0.9),词语水平方向排版出现的概率
import wordcloud
import matplotlib.pyplot as plt
myfont = r'C:\Windows\Fonts\simkai.ttf' # 获取本地已安装字体
cloudobj = wordcloud.WordCloud(font_path=myfont,width=1200,prefer_horizontal=0.9, height=800,\
mode='RGBA',background_color=None,stopwords=stop_words_dict, \
max_words=100).generate(' '.join(gcd1_words_list))
plt.imshow(cloudobj)
plt.show()

3. 更多参数设置
(1) mask : nd-array or None (default=None) #如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread('读取一张图片.png'),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。此例中,在中国地图内显示词云。
(2)先通过imread()读取图片,使用wordcloud.ImageColorGenerator()获取图片的颜色,再使用cloudobj.recolor()重置词云字体的颜色为读取图片的色系。
(3)plt.axis('off') 可设置不显示坐标轴。
from imageio import imwrite,imread
my_mask = imread('G:\\自学笔记\\学习笔记:Python数据分析--玩转文本挖掘\\PythonData\\chineseMap.jpg')
cloudobj = wordcloud.WordCloud(font_path=myfont, mask=my_mask, max_words=100,\
mode='RGBA', background_color=None).generate(gcd1_words_list[15])
imgobj = imread('G:\\自学笔记\\学习笔记:Python数据分析--玩转文本挖掘\\PythonData\\IMG_9475.jpg')
image_colors = wordcloud.ImageColorGenerator(imgobj) # 获取图片颜色
cloudobj.recolor(color_func=image_colors) # 重置词云颜色
plt.imshow(cloudobj)
plt.axis('off')
plt.show()
plt.close()

4. 保存已生成的词云
5. 设置指定词的颜色
如下例子,['插队','女尸','军阀','身上']显示的就是蓝色色系,['胖子','胡国华','孙先生','棺材']是红色色系,其余的都偏绿色
# 指定分组色系
color_to_words = {
'blue':['插队','女尸','军阀','身上'],
'red':['胖子','胡国华','孙先生','棺材']
}
default_color = 'green' #其余单词的默认颜色
grouped_color_func = GroupedColorFunc(color_to_words,default_color)
cloudobj.recolor(color_func=grouped_color_func)
plt.imshow(cloudobj)
plt.axis('off')
plt.show()
plt.close()
