首頁 > 軟體

Python製作個性化的詞雲圖範例講解

2022-02-13 19:00:47

1. 引言

詞雲圖可以讓我們方便地識別出文字中的關鍵詞,其中單詞的大小代表它們的頻率。有了這個,我們甚至在閱讀之前就可以很好地瞭解文字的內容。雖然有很多免費的工具可以線上製作文字雲,但我們可以使用萬能的Python來客製化個性化的詞雲圖。

在本文中,我們將使用第三方Python庫stylecloud,有了該庫,可以通過簡短的幾行程式碼來製作漂亮的詞雲圖。如下所示:

閒話少說,我們直接開始吧。 :)

2. 舉個栗子

接下來,我們將用來製作詞雲圖的文字是偶像喬布斯在斯坦福大學演講的一部分。點選這裡可以獲得對應的 .txt 檔案或使用任何其他的文字來製作你自己的詞雲圖。

2.1 安裝stylecloud庫

這裡我們可以直接使用pip來安裝該詞雲庫,程式碼如下:

pip3 install stylecloud

2.2 生成詞雲圖

接著我們可以使用stylecloud.gen_stylecloud() 方法來生成詞雲圖,通過傳遞相應的文字 .txt 檔案的路徑和生成詞雲的圖示樣式。
在網站上,我們可以方便的找到可用於 stylecloud 的圖示樣式列表。在此範例中,我選擇了一個蘋果作為圖示。程式碼如下:

import stylecloud
stylecloud.gen_stylecloud(file_path='SJ-Speech.txt',
						icon_name="fas fa-apple-alt")

上述程式碼執行後,在當前python檔案目錄下生成以png格式儲存詞雲圖,如下所示:

2.3 美化顯示效果

仔細觀察gen_stylecloud函數的相關引數,我們可以控制背景顏色、單詞的顏色、輸出檔案的名稱等。為此,我們檢視下面的程式碼:

stylecloud.gen_stylecloud(file_path='SJ-Speech.txt',
                          icon_name='fas fa-apple-alt',
                          colors='white',
                          background_color='black',
                          output_name='apple.png',
                          collocations=False)

執行結果如下:

2.4 處理停用詞

我們可以使用stop_words庫來處理文字中的停用詞,可以使用pip install stop_words來安裝該庫。有了停用詞列表,我們也可以將其傳遞給在gen_stylecloud函數中的custom_stopwords引數。

樣例程式碼如下:

from stop_words import get_stop_words
stop_words = get_stop_words('english')
stylecloud.gen_stylecloud(file_path='SJ-Speech.txt',
                          icon_name='fas fa-apple-alt',
                         palette='cartocolors.qualitative.Pastel_3',
                          background_color='black',
                          output_name='apple.png',
                          collocations=False,
                          custom_stopwords=stop_words)

上述程式碼的執行結果如下:

2.5 使用自定義背景影象

在上述網站上有數百個免費圖示可用於 stylecloud,但是但有時我們可能希望使用自己的影象來為建立更加個性化的詞雲圖。此時,我們可以使用PIL庫來讀取影象,使用matplotlib來繪製我們的影象,使用wordcloud來製作對應的詞雲圖。

下述程式碼中使用蝙蝠的圖案來生成對應的詞雲圖,程式碼如下:

from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
# create a mask based on the image we wish to include
my_mask = np.array(Image.open('batman-logo.png'))
# create a wordcloud
wc = WordCloud(background_color='white',
                   mask=my_mask,
                   collocations=False,
                   width=600,
                   height=300,
                   contour_width=3,
                   contour_color='black',
                   stopwords=stop_words)

with open('SJ-Speech.txt',encoding='gb18030',errors='ignore') as txt_file:
	texto = txt_file.read()
wc.generate(texto)
image_colors = ImageColorGenerator(my_mask)
wc.recolor(color_func=image_colors)

plt.figure(figsize=(20, 10))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
wc.to_file('wordcloud2.png')
plt.show()

執行結果如下:

3. 總結

本文詳細介紹瞭如何使用stylecloud庫來繪製各種樣式的詞雲圖,以突出顯示文字中相應的關鍵詞,並給出了客製化化改進顯示效果的樣例程式碼。

到此這篇關於Python製作個性化的詞雲圖範例講解的文章就介紹到這了,更多相關Python詞雲圖內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com