深度实践_01_词云

作者: 丨像我这样的人丨 | 来源:发表于2018-09-10 01:21 被阅读10次

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

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

    • 导入文本数据
    • 使用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.haomeiwen.com/subject/turjgftx.html