Skip to content

[Python] 使用 wordcloud 套件快速產生文字雲

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() 就可以將文字雲存成圖片。

非常簡單,而且展示的效果非常好。


References

Leave a Reply