
寫在前面
想必大家有一個問題。什么是詞雲呢?
詞雲又叫名字雲,是對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表達意思。、
網頁上有許多詞雲的效果圖:


而且,目前有許多制作詞雲的工具:

但是作為一個學習Python的程序員來說,我更喜歡通過自己的編程去解決問題。
而且用Python制作詞雲只需十行代碼就行了哦~
一起來看看吧!
代碼塊
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import jieba
text_from_file_with_apath = open('/Users/hecom/23tips.txt').read()
wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True)
wl_space_split = " ".join(wordlist_after_jieba)
my_wordcloud = WordCloud().generate(wl_space_split)
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
代碼效果圖:

下面咱們解析一下代碼塊:
1~3 行分別導入了畫圖的庫,詞雲生成庫和jieba的分詞庫;
4 行是讀取本地的文件,代碼中使用的文本是本公眾號中的《老曹眼中研發管理二三事》。
5~6 行使用jieba進行分詞,並對分詞的結果以空格隔開;
7行對分詞后的文本生成詞雲;
8~10行用pyplot展示詞雲圖。
這是我喜歡python的一個原因吧,簡潔明快。
當然,這只是一個簡單得不能再簡單得編程,實現的效果也非常簡單
但是Python是一門開源的語言,這時候就體現出開源的特性了,任何人都能對一個項目加以修改,使項目不斷的完善。
Github上有許多開源的項目,小編找到一個做詞雲的項目,鏈接如下:
https://github.com/amueller/word_cloud
咱們可以直接進入wordcloud.py 源碼進行字體,詞雲效果進行修改。
源碼解析:
wordcloud.py總共不過600行,其間有着大量的注釋,讀起來很方便。其中用到了較多的庫,常見的random,os,sys,re(正則)和可愛的numpy,還采用了PIL繪圖,估計一些人又會遇到安裝PIL的那些坑.
生產詞雲的原理其實並不復雜,大體分成5步:
- 對文本數據進行分詞,也是眾多NLP文本處理的第一步,對於wordcloud中的process_text()方法,主要是停詞的處理
- 計算每個詞在文本中出現的頻率,生成一個哈希表。詞頻計算相當於各種分布式計算平台的第一案例wordcount, 和各種語言的hello world 程序具有相同的地位了,呵呵。
- 根據詞頻的數值按比例生成一個圖片的布局,類IntegralOccupancyMap 是該詞雲的算法所在,是詞雲的數據可視化方式的核心。
- 將詞按對應的詞頻在詞雲布局圖上生成圖片,核心方法是generate_from_frequencies,不論是generate()還是generate_from_text()都最終到generate_from_frequencies
- 完成詞雲上各詞的着色,默認是隨機着色
詞語的各種增強功能大都可以通過wordcloud的構造函數實現,里面提供了22個參數,還可以自行擴展。
效果圖:

寫在最后
小伙伴看了文章自己可以動手操作操作哦,是Python一個十分簡單的項目呢。