wordcloud是什么?
wordcloud是python的一個第三方庫,稱為詞云也叫做文字云,是根據文本中的詞頻,對內容進行可視化的匯總,可以用來繪制用戶畫像。
安裝wordcloud
這里用conda新建一個環境來演示
conda create --name wordcloud python=3.9.12conda activate wordcloud
需要安裝4個包
conda install -y -n wordcloud numpyconda install -y -n wordcloud pillowconda install -y -n wordcloud matplotlibconda install -y -n wordcloud wordcloud
使用 wordcloud
wordcloud庫把詞云當作一個 WordCloud 對象,所以使用wordcloud可以大致分為三個步驟
from wordcloud import WordCloudwc= WordCloud() # 1.創建對象: wc.generate("Choose a life of action, not one of oste-ntation.") # 2.加載文本wc.to_file("./word.png") # 3.輸出文件
[圖片上傳失敗...(image-3b9b66-1667396394553)]
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">word</figcaption>
wordcloud 基礎實戰
指定中文字體,不然會亂碼
from PIL import Imagefrom wordcloud import WordCloud, STOPWORDSimport matplotlib.pyplot as pltimport numpy as npwc = WordCloud(background_color="white",# 設置背景顏色 max_words=2000, # 詞云顯示的最大詞數 height=400, # 圖片高度 width=800, # 圖片寬度 max_font_size=50, #最大字體 stopwords=STOPWORDS, # 設置停用詞 font_path='C:/Windows/Fonts/simhei.ttf', # 兼容中文字體,不然中文會顯示亂碼 )# 生成詞云 wc.generate('詩詞,是指以古體詩、張三。 亦是漢字文化圈的特色之一。 李四。 詩詞是闡述心靈的文學藝術,而詩人、趙文,并按照嚴格韻律要求,用凝練的語言、綿密的章法、王五。') # 此處的text便是分好詞的19大文本# 生成的詞云圖像保存到本地wc.to_file("./result2.png")# 顯示圖像plt.imshow(wc, interpolation='bilinear')# interpolation='bilinear' 表示插值方法為雙線性插值plt.axis("off")# 關掉圖像的坐標plt.show()
[圖片上傳失敗...(image-39937f-1667396394553)]
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result2</figcaption>
附上wordcloud內的配置參數
[圖片上傳失敗...(image-6bbb0b-1667396394553)]
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">img</figcaption>
wordcloud 高級實戰
在本節,本文將介紹如何將詞云繪制在預設定好的背景圖片上。例如:以我們最熟悉的中國地圖為背景,我們將在此基礎上繪制詞云,只需修改wordcloud里的“mask”屬性值,詳細代碼如下所示。
from PIL import Imagefrom wordcloud import WordCloud, STOPWORDSimport matplotlib.pyplot as pltimport numpy as npwc = WordCloud(background_color="white",# 設置背景顏色 max_words=2000, # 詞云顯示的最大詞數 max_font_size=60, #最大字體 stopwords=STOPWORDS, # 設置停用詞 mask=np.array(Image.open("./china.jpg")), # 選擇背景圖片為中國地圖 font_path='C:/Windows/Fonts/simhei.ttf', # 兼容中文字體,不然中文會顯示亂碼 )# 生成詞云 wc.generate('尤韞素。福敏博。歷靈秀。但紫云。司馬渺。黎梓玥。毛半蕾。太叔睿范。褒華婉。勞子明。仵芷容。索聽楓。蕢慕凝。邢恬欣。展向露。五江雪。靖允。邛孟。天夢山。繁孤丹。談清悅。操樂志。甲小蕾。滿辰。銀長。初春雪。眭若云。庹嘉怡。奚醉巧。閭丘令怡。憑香天。古飛章。厙薇。圣瑩琇。程思。功知。郜陽霽。揚澹。戈綠蝶。薛吉月。冷明軒。廉吉星。佟以軒。勇代天。蘇平靈') # 此處的text便是分好詞的女排評論文本# 生成的詞云圖像保存到本地wc.to_file("./result3.png")# 顯示圖像plt.imshow(wc, interpolation='bilinear')# interpolation='bilinear' 表示插值方法為雙線性插值plt.axis("off")# 關掉圖像的坐標plt.show()
準備的地圖是
[圖片上傳失敗...(image-b03ce9-1667396394553)]
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">china</figcaption>
效果如下
[圖片上傳失敗...(image-55f128-1667396394553)]
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result3</figcaption>