Python小程式——利用wordcloud庫生成詞雲(一)
阿新 • • 發佈:2018-11-27
最近自學Python的中文處理,其中用到了wordcloud庫生成一篇文章的詞雲,能更直觀的表現出文章的主題,是一個不錯的工具。雖然現在網上有很多詞雲線上生成的應用,不過為了更個性化一點,還是寫一個自己的詞雲生成工具吧。
import jieba
import wordcloud
from imageio import imread
from collections import Counter
fire = open('新時代中國特色社會主義.txt', 'r', encoding='UTF-8-sig')
text = fire.read()
fire.close()
讀取文字儲存在text變數中,第一步進行詞頻統計。
def get_words(text): # 詞頻統計 seg_list = jieba.cut(text) c = Counter() # Counter 作為字典(dict)的一個子類用來進行hashtable計數, # 將元素進行數量統計、計數後返回一個字典,鍵值為元素:值為元素個數 for i in seg_list: if len(i) > 1 and i != '\r\n': c[i] += 1 ls = [] # 選出詞頻前100的詞 for (i, j) in c.most_common(120): ls.append(i) return ls
統計出來的詞可能有些並不是我們想要的,要經過多次篩選排除:
word_ls = get_words(text)
# 篩選排除
stop_words = ['我們', '一個', '一切', '中國']
for i in word_ls:
if i in stop_words:
word_ls.remove(i)
篩選後的詞可以列印輸出檢視:
由於wordcloud是給英文製作詞雲的庫,所以預設是按照空格來分詞,我們之前已經用jieba庫給中文分好了詞並且經過詞頻統計和篩選,記得用空格連線分好的詞:
text_list = ' '.join(word_ls)
新建一個wordcloud物件,呼叫generate()方法就能生成詞雲了:
w_cloud = wordcloud.WordCloud(
font_path=font,
background_color=None, mode="RGBA", # 背景透明
width=1000,
height=600,
mask=mask)
w_cloud.generate(text_list)
w_cloud.to_file('wordcloud.png')
最終效果:
wordcloud物件可以配置很多屬性,生成個性詞雲,這個另一篇文章再詳細說明。