用Python畫詞雲圖,展示“新冠肺炎”關鍵詞

第一步:安裝相關包

主要有兩個,一個是wordcloud,用來生成詞雲圖,另一個是jieba,用來對我的文本進行分詞。如果沒有的話,就直接用pip在命令行裡安裝。

<code>pip install wordcloud
pip install jieba/<code>

安裝完成後導入

<code>from wordcloud import WordCloud
import jieba/<code>

第二步:讀取文本並分詞

我從網上下載了一份新冠肺炎的相關材料,並保存為“新冠肺炎.txt”,打開後如圖所示:

用Python畫詞雲圖,展示“新冠肺炎”關鍵詞

新冠肺炎.txt

然後讀取文件,並用jieba對文本進行分詞:

<code>with open('新冠肺炎.txt') as f:  # 讀取文本
text = f.read()
text = text.replace('\\n', "") # 將回車字符刪除
text_cut = jieba.lcut(text) # 分詞,每個詞作為一個元素,放在列表裡
text_cut = ' '.join(text_cut) # 用空格將分好的詞連接在一起/<code>

第三步:生成詞雲圖

<code>word_cloud = WordCloud(font_path="simsun.ttc",    # 設置詞雲字體
background_color="white", # 詞雲圖的背景顏色
width=2000,
height=1600)
word_cloud.generate(text_cut)
word_cloud.to_file('詞雲圖.png')/<code>

運行上面代碼後,就會生成一個“詞雲圖.png”文件,打開後如圖:

用Python畫詞雲圖,展示“新冠肺炎”關鍵詞

詞雲圖

第四步:額外操作

第一點,如果不想讓一些詞出現在詞雲圖裡怎麼辦,比如我不想出現“人員”、“工作”、“直接”、“根據”、“或者”這五個詞,那麼就將它們作為停用詞,並傳給WordCloud類中stopwords參數。

<code># 製造停用詞
stopwords_list = ['人員', '工作', '直接', '根據', '或者']
my_stopwords = set(STOPWORDS) # 這裡的STOPWORDS是從wordcloud導入的一個變量
for i in stopwords_list:
my_stopwords.add(i)

# 使用WordCloud生成詞雲
word_cloud = WordCloud(font_path="simsun.ttc", # 設置詞雲字體
background_color="white", # 詞雲圖的背景顏色
width=2000,
height=1600,
stopwords=my_stopwords) # 停用詞
word_cloud.generate(text_cut)
word_cloud.to_file('詞雲圖.png')
/<code>

現在將生成的圖片打開,就看不到被停用的詞啦:

用Python畫詞雲圖,展示“新冠肺炎”關鍵詞

去停用詞後詞雲圖

第二點,如何讓詞雲圖具有某種形狀,比如我想讓我的詞雲圖呈現出一個口罩的形狀,那就要準備好一個口罩圖片,我將其命名為“N95.jpg”,如圖:

用Python畫詞雲圖,展示“新冠肺炎”關鍵詞

N95,jpg

然後讀取圖片,並將其轉成numpy數組格式,傳給WordCloud類中的mask參數。

<code># 加入圖片
background = Image.open("N95.jpg") #from PIL import Image 沒有的話,就用pip install pillow安裝PIL包
graph = np.array(background) # import numpy as np 這沒啥可說的

# 使用WordCloud生成詞雲
word_cloud = WordCloud(font_path="simsun.ttc", # 設置詞雲字體
background_color="white", # 詞雲圖的背景顏色
width=2000,
height=1600,
stopwords=my_stopwords, # 停用詞
mask=graph) # 詞雲圖的形狀
word_cloud.generate(text_cut)
word_cloud.to_file('詞雲圖.png')/<code>

現在生成的詞雲圖就具有口罩的形狀啦:

用Python畫詞雲圖,展示“新冠肺炎”關鍵詞

口罩形狀詞雲圖

第三點,WordCloud類中的background_color參數默認值是black,但我在本文中使用的是white,因為微信公眾號文章背景色就是白色,這樣顯得與背景色比較相融。該參數使用的原則就是儘量與我們大環境的背景色相同,如果使用默認的black,效果如下:


用Python畫詞雲圖,展示“新冠肺炎”關鍵詞

黑色背景詞雲圖


關注微信公眾號“Python小鎮”,發現更多幹貨知識!


分享到:


相關文章: