wordcloud词云的初步使用

作者: 听城 | 来源:发表于2017-08-20 22:20 被阅读917次

    最近发现Python的wordcloud包可以构建词云并且可以自定义图片,非常有趣,故记录一下使用过程。
    官网 ,可以查看api reference
    github


    下面说一下使用过程

    安装

    pip install wordcloud,嫌慢的话可以用豆瓣加速哦

    数据

    数据随便找就是了,自己从网上爬了战狼的前10页的短评,因为代码还在完善登录和验证码,就不贴出来了。

    分词

    分词使用的是结巴分析github,pip install jieba即可安装

    生成词云方法

    word_cloud 生成词云有两个方法。from text 和 from frequencies 。即文本生成和频率生成,每一个都有对应的函数可以使用

    generate(text)      Generate wordcloud from text.
    generate_from_text(text)    Generate wordcloud from text.
    generate_from_frequencies      Create a word_cloud from words and frequencies.
    fit_words      Create a word_cloud from words and frequencies.
    

    代码示例

    import re
    import jieba.analyse as analyse
    from wordcloud import WordCloud, ImageColorGenerator
    import matplotlib.pyplot as plt
    from scipy.misc import imread
    comments = []
    cleaned_comments = ''
    def filterComments():
        cleaned_comments = ''
        with open('zhanlang.txt', 'r', encoding='utf8') as f:
            for line in f:
                comments.append(line)
        for k in range(len(comments)):
            cleaned_comments = cleaned_comments + (str(comments[k])).strip()
        pattern = re.compile(r'[\u4e00-\u9fa5]+')
        filterdata = re.findall(pattern, cleaned_comments)
        cleaned_comments = ''.join(filterdata)
        return  cleaned_comments
    
    
    cleaned_comments = filterComments()
    analyse.set_stop_words("stopwords.txt")
    #withWeight=True为显示字符出现的频率,格式为[('aa',0.23),('a',0.11)]
    #不加这个参数,或者参数值为false的时候格式为['a','b']
    words_df = analyse.extract_tags(cleaned_comments,topK=100,withWeight=True)
    back_coloring = imread('./love.jpg')
    wordcloud =  WordCloud( font_path='C:\Windows\Fonts\simhei.ttf',#设置字体
                    background_color="black", #背景颜色
                    max_words=2000,# 词云显示的最大词数
                    mask=back_coloring,#设置背景图片
                    max_font_size=100, #字体最大值
                    random_state=42,
                    )
    # 从背景图片生成颜色值
    image_colors = ImageColorGenerator(back_coloring)
    
    #generate和generate_from_text接受的为文本,例'a b c d'
    #generat参数为以分隔符比如空格隔开的字符串
    #words = " ".join(words_df)
    #wordcloud.generate(words)
    #wordcloud.generate_from_text(words)
    #有频率的时候用generate_from_frequencies,fit_words
    #generate_from_frequencies接受的参数为字典,注意必须为字典可以直接使用结巴分词带频率的结果
    #wordcloud.generate_from_frequencies(dict(words_df))
    wordcloud.fit_words(dict(words_df))
    
    #plt.imshow(wordcloud.recolor(color_func=image_colors))
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()
    

    相关文章

      网友评论

        本文标题:wordcloud词云的初步使用

        本文链接:https://www.haomeiwen.com/subject/rpdqdxtx.html