溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python如何制作個(gè)性化的詞云圖

發(fā)布時(shí)間:2022-02-14 09:28:47 來(lái)源:億速云 閱讀:238 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python如何制作個(gè)性化的詞云圖,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    1. 引言

    詞云圖可以讓我們方便地識(shí)別出文本中的關(guān)鍵詞,其中單詞的大小代表它們的頻率。有了這個(gè),我們甚至在閱讀之前就可以很好地了解文本的內(nèi)容。雖然有很多免費(fèi)的工具可以在線制作文字云,但我們可以使用萬(wàn)能的Python來(lái)定制個(gè)性化的詞云圖。

    在本文中,我們將使用第三方Python庫(kù)stylecloud,有了該庫(kù),可以通過(guò)簡(jiǎn)短的幾行代碼來(lái)制作漂亮的詞云圖。如下所示:

    Python如何制作個(gè)性化的詞云圖

    2. 舉個(gè)栗子

    接下來(lái),我們將用來(lái)制作詞云圖的文本是偶像喬布斯在斯坦福大學(xué)演講的一部分。點(diǎn)擊這里可以獲得對(duì)應(yīng)的 .txt 文件或使用任何其他的文本來(lái)制作你自己的詞云圖。

    2.1 安裝stylecloud庫(kù)

    這里我們可以直接使用pip來(lái)安裝該詞云庫(kù),代碼如下:

    pip3 install stylecloud

    2.2 生成詞云圖

    接著我們可以使用stylecloud.gen_stylecloud() 方法來(lái)生成詞云圖,通過(guò)傳遞相應(yīng)的文本 .txt 文件的路徑和生成詞云的圖標(biāo)樣式。
    在網(wǎng)站上,我們可以方便的找到可用于 stylecloud 的圖標(biāo)樣式列表。在此示例中,我選擇了一個(gè)蘋果作為圖標(biāo)。代碼如下:

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

    上述代碼運(yùn)行后,在當(dāng)前python文件目錄下生成以png格式保存詞云圖,如下所示:

    Python如何制作個(gè)性化的詞云圖

    2.3 美化顯示效果

    仔細(xì)觀察gen_stylecloud函數(shù)的相關(guān)參數(shù),我們可以控制背景顏色、單詞的顏色、輸出文件的名稱等。為此,我們查看下面的代碼:

    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)

    運(yùn)行結(jié)果如下:

    Python如何制作個(gè)性化的詞云圖

    2.4 處理停用詞

    我們可以使用stop_words庫(kù)來(lái)處理文本中的停用詞,可以使用pip install stop_words來(lái)安裝該庫(kù)。有了停用詞列表,我們也可以將其傳遞給在gen_stylecloud函數(shù)中的custom_stopwords參數(shù)。

    樣例代碼如下:

    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)

    上述代碼的運(yùn)行結(jié)果如下:

    Python如何制作個(gè)性化的詞云圖

    2.5 使用自定義背景圖像

    在上述網(wǎng)站上有數(shù)百個(gè)免費(fèi)圖標(biāo)可用于 stylecloud,但是但有時(shí)我們可能希望使用自己的圖像來(lái)為創(chuàng)建更加個(gè)性化的詞云圖。此時(shí),我們可以使用PIL庫(kù)來(lái)讀取圖像,使用matplotlib來(lái)繪制我們的圖像,使用wordcloud來(lái)制作對(duì)應(yīng)的詞云圖。

    下述代碼中使用蝙蝠的圖案來(lái)生成對(duì)應(yīng)的詞云圖,代碼如下:

    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()

    運(yùn)行結(jié)果如下:

    Python如何制作個(gè)性化的詞云圖

    以上是“Python如何制作個(gè)性化的詞云圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI