python wordcloud 詞雲
詞雲是對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表達意思。
而python在生成詞雲上也是非常的方便。
需要安裝的包
使用pip安裝下述包
jieba
:一個國人開發的優秀的分詞工具wordcloud
:詞雲的核心包matplotlib
,PIL
,numpy
用於處理和繪製圖像
wordcloud安裝的問題
我是windows下安裝,由於缺乏VS編譯器在pip install
時無法正確安裝wordcloud。
- 此時想用minGW去編譯,發現python3.5.2的版本在windows下不支持minGW。。。
於是轉戰linux平臺,發現安裝還是出問題。提示沒有
python-tk
。即tkinter,一個python默認使用的GUI平臺。此平臺在windows下是隨安裝包可選安裝的,但linux下並未安裝。於是使用apt來安裝。之後就開開心心的安裝成功了。注意使用的python版本
sudo apt-get Install python3-tk
代碼
生成詞雲的大致過程可分爲:
- 讀取和處理文本
- 讀取背景
- 設置參數並生成詞雲
- 繪圖
具體使用請見下述源碼
import jieba
import wordcloud
import matplotlib.pyplot as plt
import PIL
import numpy as np
# Read raw file
with open('word.txt', 'r') as f:
raw_txt = f.read()
# Read background pic
pic = PIL.Image.open("backgroud.jpg")
pic_mask = np.array(pic)
# word split
raw_txt = jieba.cut(raw_txt, cut_all=True)
raw_txt = ' '.join(raw_txt) # split word with space
# Make word cloud, The parameters setting please see help()
wc = wordcloud.WordCloud()
wc.font_path = 'msyh.ttf' # microsoft yahei
wc.width = 1200
wc.height = 800
wc.max_word = 2000
wc.mask = pic_mask
wc.radom_state = 42
wc.max_font_size = 84
wc.min_font_size = 16
wc.background_color = "white"
word_cloud = wc.generate(raw_txt)
# plot word cloud
plt.imshow(word_cloud)
plt.axis('off')
plt.figure()
# plot word cloud with re-color by mask
img_color = wordcloud.ImageColorGenerator(pic_mask)
img_recolor = word_cloud.recolor(color_func=img_color)
plt.imshow(img_recolor)
plt.axis("off")
plt.show()
輸出結果
由於背景圖片沒有處理過,所以看上去有些凌亂。但還是能夠看出大致輪廓和相似的色彩。另外,大家看的出用於詞雲分析的是什麼文章嗎?:)
詞雲圖:
結合原圖顏色處理後的詞雲圖:
原圖: