1. 程式人生 > >python實現詞雲效果

python實現詞雲效果

一、說明

wordcloud是Python中的一個小巧的詞雲生成器。繪製圖片是也通過第三方模組 pillow和matplotlib 實現的,因此需要安裝matplotlib和wordcloud模組

pip install wordcloud
pip install matplotlib
pip install jieba   #識別中文
pip install pillow  #影象處理

二、wordcloud中文識別

需要有識別中文的字型庫,windows上面在 C:\Windows\Fonts 路徑下,比較常用的有 宋體(simsun.ttc),黑體(simhei.ttf),楷體(simkai.ttf)

等。

三、示例程式碼塊

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import matplotlib.pyplot as plt
from PIL import Image as image
import jieba  
import numpy
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS

def chinese_jieba(text):
    #通過jieba工具將中文文字做處理,並返回指定格式的內容
    wordlist_jieba = jieba.cut(text)
    text_jieba = ' '.join(wordlist_jieba)
    return text_jieba

def main(filename):
    with open(filename,'rb') as f:
        text = chinese_jieba(f.read().decode())
        
    mask_pic = numpy.array(image.open('test.jpg'))  #開啟影象處理,設定遮罩層

    #設定固定的詞個數為0
    # stopwords = {'黑娃':0,'白嘉軒':0}
    #也可以按照下面格式設定
    stopwords = set(STOPWORDS)
    stopwords = stopwords.union(set(['黑娃', '白嘉軒']))   #將不想在詞雲上出現的詞,放入集合中,也就是設定固定詞個數為0

    wordclod = WordCloud(
        background_color='white',  #設定背景顏色,預設是黑色
        margin=0,
        max_words=2000, #關鍵字的個數
        max_font_size=100, #字型大小
        font_path=r'C:\Windows\Fonts\simsun.ttc',  #設定中文識別
        mask=mask_pic,  #新增遮罩層,也就是設定詞雲形狀
        stopwords = stopwords, #過濾固定的詞
    ).generate(text)   #將text裡面所有的詞統計,產生詞雲

    # image_colors = ImageColorGenerator(mask_pic)

    plt.imshow(wordclod)
    # plt.imshow(wordclod.recolor(color_func=image_colors))
    plt.axis('off')
    plt.show()
    wordclod.to_file('bailuyuan.jpg')  #儲存圖片

if __name__ == "__main__":
    filename = '白鹿原.txt'
    main(filename)

備註:我是在網上找了白鹿原小說做的詞雲效果

四、效果圖

在這裡插入圖片描述