Last Updated on 2021-05-17 by Clay
說到『文字雲』(word cloud),是一個我在研究自然語言處理(NLP)時常常會聽到的名詞。我本來一直以為就是計算詞的頻率,並將『頻率高的字顯示得比較大』而已——其實不然,光是組成的形狀、字該擺放的樣式都是學問,沒有我想得那麼簡單。
我是個容易被新鮮的東西挑起好奇心的人,今天研究了下 Python 當中的 wordcloud 模組,感想就是:超有趣的,真想自己做做看!
不過我手頭上累積要做的事情太多了,我最好一步步地把事情消化掉,不要老是妄想著自己應該可以做哪些事情——這其實是不好的習慣。
話題扯遠了。
今天我要介紹的是 Python 中製作『文字雲』非常有名的模組—— wordcloud,有興趣的話,看看 Pypi 上的說明也不錯: https://pypi.org/project/wordcloud/
那麼以下,我簡單示範一下該如何使用 wordcloud 產生文字雲吧!
wordcloud 範例
第一次使用的話,我們需要用以下指令安裝:
pip3 install wordcloud
然後,我們需要有文本,這才能夠開始『統計詞頻』。這裡我選的文本是我以前存下來的多篇關於『Word Vector』教學的文章,為了測試文字雲的效果,我從中挑出了十篇組合在一起,然後進行斷詞。
由於是英文的語料,所以我選擇的斷詞工具為 NLTK,如果有興趣,也許可以參考一下我之前寫過的《【NLP】 NLTK 基本教學》。
如果想測試中文的語料,斷詞工具可以參考我之前寫過的:
那麼,以下是一段簡單的 Sample Code:
# -*- coding: utf-8 -*- import nltk from wordcloud import WordCloud text = open('data.txt', 'r', encoding='utf-8').read() text = ' '.join(nltk.word_tokenize(text)) cloud = WordCloud().generate(text) cloud.to_file('output.png')
Output:
使用 generate() function 就可以將文字自動統計、製作文字雲。
使用 to_file() 就可以將文字雲存成圖片。
非常簡單,而且展示的效果非常好。