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

詞雲制作沒那麽難,Python 10 行代碼就實現了!

修改 tex 源碼 空格 upan ims image bsp 分布

技術分享圖片

寫在前面

想必大家有一個問題。什麽是詞雲呢?

詞雲又叫名字雲,是對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表達意思。、

網頁上有許多詞雲的效果圖:

技術分享圖片

技術分享圖片

技術分享圖片

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

技術分享圖片

但是作為一個學習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一個十分簡單的項目呢。

詞雲制作沒那麽難,Python 10 行代碼就實現了!