【词云图】如何用python的第三方库jieba和wordclo

作者: 宝宝wfy | 来源:发表于2019-07-14 23:47 被阅读34次

    一直想学一下如何用python画词云图,觉得很好玩,本文就写一下我自己的一些尝试。

    1、提前准备

    一般准备以下四样就可以啦。
    第一,电脑安装python,我装的是3.6。
    第二,安装第三方库jieba和wordcloud,一个是用于分词,一个用于生成词云图。python安装这两个第三方库的方法也比较简单,在cmd里面输入如下的命令行即可:

    pip install jieba
    pip install wordcloud
    

    第三,准备一份需要分词的文档,我这里随便找了一份关于电影评价的文档,记得要保存成txt文档。如下所示。


    image.png

    第四,需要准备一张你喜欢的图片,用于生成词云图的形状,这里要注意,最好选一个白底的图片,轮库比较明显的,我选了下面这张小熊的图片。


    xiong.jpg

    一切准备就绪,就可以打开python写代码生成词云图啦。

    2、书写生成词云图代码

    2.1 首先把相关的包加载进来

    from os import path
    from wordcloud import WordCloud
    import matplotlib.pyplot as plt
    from scipy.misc import imread
    import jieba.analyse
    

    像matplotlib和scipy都是python常用的包,如果没有安装好可以自行百度一下如何安装。

    2.2 加载准备好的文档和图片

    把movie.txt和xiong.jpg放在当前目录下。

    CURRENT_PATH = path.dirname(path.abspath(__file__))
    TEXT_FILE = path.join(CURRENT_PATH, 'movie.txt')
    IMG_FILE = path.join(CURRENT_PATH, 'xiong.jpg')
    

    2.3 定义一个分词的函数

    def get_frequencies():
        with open(TEXT_FILE, 'r', encoding="GB2312") as f:
            text = f.read()
        words = jieba.analyse.extract_tags(text, topK=200, withWeight=True)
        # words is list, change it to dict
        return dict(words)
    

    这个函数用jieba对文档进行分词,topK是可以返回的最大的分词数。这里有一个坑,我是从网上下载的movie.txt,要用notepad打开看一下编码方式,我的文档的编码方式为GB2312,则在encoding后面写GB2312,如果编码方式为utf-8,把GB2312改成utf-8即可。

    2.4定义一个制作词云图的函数

    ef make_wordcloud(words):
        # get mask
        my_mask = imread(IMG_FILE)
        # set wordcloud
        my_wordcloud = WordCloud(
            font_path="msyh.ttc",
            background_color="white", 
            max_words=1000, 
            max_font_size=50, 
            width=1500,
            height=1500,
            mask=my_mask,
            contour_width=2,
            contour_color='steelblue'
        )
        # words must be dict
        my_wordcloud.generate_from_frequencies(words)
        return my_wordcloud
    

    先用 imread函数把事先准备好的图片读取出来,然后用WordCloud函数生成词云图,中间要输入很多参数,可以自己调节,比如 background_color="white",这句代码意思是设置词云图的背景颜色为白色,如果你想背景颜色为黑色,只要把white改成black即可。contour_width=2代表轮廓宽度为2,contour_color='steelblue'代表轮廓颜色为蓝色等。这些参数都可以自行调整。

    2.5 定义显示词云图和保存词云图的函数

    def show_it(wordcloud):
        # show it
        plt.imshow(wordcloud)
        plt.axis('off')
        plt.show()
    def save_it(wordcloud, name):
        filename = '{}.jpg'.format(name)
        wordcloud.to_file(path.join(CURRENT_PATH, filename))
    

    图片保存在当前目录下。

    2.6 主函数运行程序

    if __name__ == '__main__':
       words = get_frequencies()
       wordcloud = make_wordcloud(words)
       show_it(wordcloud)
       save_it(wordcloud, 'my_wordcloud')
    

    3、结果展示

    运行代码之后生成的词云图如下所示。


    my_wordcloud.jpg

    从生成的词云图中可以看出有一些词在文档中出现次数比较高,所以字相对比较大,比如高尔夫球,阿甘正传,努力,鲁迅等。
    前后对比一下,有没有觉得很可爱,可以自己动手试试哦。


    image.png

    相关文章

      网友评论

        本文标题:【词云图】如何用python的第三方库jieba和wordclo

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