詞雲製作沒那麼難,Python 10 行程式碼就實現了!
寫在前面
想必大家有一個問題。什麼是詞雲呢?
詞雲又叫名字雲,是對文字資料中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文字資料的主要表達意思。、
網頁上有許多詞雲的效果圖:
而且,目前有許多製作詞雲的工具:
但是作為一個學習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一個十分簡單的專案呢。