为了账号安全,请及时绑定邮箱和手机立即绑定

深度实践_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

webp

代码实例



作者:丨像我这样的人丨
链接:https://www.jianshu.com/p/5aa8f137b1cd


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消