深度实践_01_词云

参考自网易云课堂-深度有趣
感谢宏伦工作室的视频录制 供予学习参考

词云 就像视频里说的高端又一般 有种华而不实的赶脚 外行人看来是件很酷的东西
其一:若干词案按照特定的图案组成 这究竟是如何做到的
其二:若词越大 则此词若越重要
等真正去实践生成词云 好像并没有想象中的那么困难 基本框架就三步

  • 导入文本数据
  • 使用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

《深度实践_01_词云》 代码实例

    原文作者:丨像我这样的人丨
    原文地址: https://www.jianshu.com/p/5aa8f137b1cd
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞