参考自网易云课堂-深度有趣
感谢宏伦工作室的视频录制 供予学习参考
词云 就像视频里说的高端又一般 有种华而不实的赶脚 外行人看来是件很酷的东西
其一:若干词案按照特定的图案组成 这究竟是如何做到的
其二:若词越大 则此词若越重要
等真正去实践生成词云 好像并没有想象中的那么困难 基本框架就三步
- 导入文本数据
- 使用wordcloud
- 导出图片
就好了 非常简单 其中一些小细节都在是这三步基本框架中补充 认真想想 其实是我们站在了巨人的肩膀上 wordcloud已经把最核心最重要封装好了 如:究竟是如何做到按特定的图案排列 我们只需要拿来主义即可 在此感谢开发者们
下面是视频的简单总结及补充 具体内容还是去看视频吧 不能辜负每一位原作者的汗水和心血
使用到的第三方包:
- wordcloud
- matplotlib
- PIL
- numpy
- jieba
1.英文词云 直接采用默认配置即可
wc = WordCloud().generate(text)
wc.to_file('wordcloud.png')
毕竟是歪果仁开发的语言 果然还是对英文特别友好
2.中文词云 需额外添加中文字体包
wc = WordCloud(font_path='Hiragino.ttf',width = 800,height= 600,
mode = 'RGBA',background_color =None).generate(text)
3.中文词云 除了配置字体包 还需分词
英文天然空格分词属性 中文可就不好说了
text = ' '.join(jieba.cut(text))
wc = WordCloud(font_path = 'Hiragino.ttf',
mode = 'RGBA',background_color = None).generate(text)
4.词云添加蒙版 (最酷炫的图案来了)
black_mask.png 为蒙版底片
mask = np.array(Image.open('black_mask.png'))
wc = WordCloud(mask = mask,font_path = 'Hiragino.ttf',
mode = 'RGBA',background_color = None).generate(text)
5.词云使用蒙版的颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func = image_colors)
6.词云自定义文字颜色
这里使用HSL来自定义颜色 详情见文档
参考文档
def random_color(word,font_size,position,orientation,font_path,random_state):
s = 'hsl(120 ,%d%%,%d%%)' % (random.randint(0, 100),random.randint(0, 100))
return s
mask = np.array(Image.open('black_mask.png'))
wc = WordCloud(mask = mask ,color_func = random_color,
font_path = 'Hiragino.ttf',mode = 'RGBA',
background_color = None).generate(text)
7.词云自定义关键词及权重
#可自定义freq字典
freq ={}
mask = np.array(Image.open('timg.jpg'))
wc = WordCloud(font_path = 'Hiragino.ttf',mask = mask,
mode = 'RGBA',background_color= None).generate_from_frequencies(freq)
generate() = process_text() + generate_from_frequencies()
之前用到的generate()其实就是process_text() 统计文本词频 和jieba的统计关键词 两者差不多 结果很相似和generate_from_frequencies()根据词频做图的结合体
8.词云使用停用词
有些没有实际含义 却普遍出现 如:你、我、他、如果等等
可根据实际效果 适当摘出 复制到txt中 用于停用词
# 获取名词
# jieba.enable_parallel(100) #开启并行模式 win下不支持 很气
text = ' '.join(x.word for x in psg.cut(text) if x.flag.startswith('n'))
# jieba.disable_parallel() #关闭并行模式
# 导入停用词
stopwords = open('stopwords.txt').read().split('\n')
# 导入蒙版
mask = np.array(Image.open('1.jpg'))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf',
mode='RGBA', background_color=None,
stopwords=stopwords).generate(text)
最后话不多说 Github