1. 程式人生 > >詞雲製作沒那麼難,Python 10 行程式碼就實現了!

詞雲製作沒那麼難,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步:

  1. 對文字資料進行分詞,也是眾多NLP文字處理的第一步,對於wordcloud中的process_text()方法,主要是停詞的處理
  2. 計算每個詞在文字中出現的頻率,生成一個雜湊表。詞頻計算相當於各種分散式計算平臺的第一案例wordcount, 和各種語言的hello world 程式具有相同的地位了,呵呵。
  3. 根據詞頻的數值按比例生成一個圖片的佈局,類IntegralOccupancyMap 是該詞雲的演算法所在,是詞雲的資料視覺化方式的核心。
  4. 將詞按對應的詞頻在詞雲佈局圖上生成圖片,核心方法是generate_from_frequencies,不論是generate()還是generate_from_text()都最終到generate_from_frequencies
  5. 完成詞雲上各詞的著色,預設是隨機著色

詞語的各種增強功能大都可以通過wordcloud的建構函式實現,裡面提供了22個引數,還可以自行擴充套件。

效果圖:

 

寫在最後

小夥伴看了文章自己可以動手操作操作哦,是Python一個十分簡單的專案呢。