第一步:安裝相關包
主要有兩個,一個是wordcloud,用來生成詞雲圖,另一個是jieba,用來對我的文本進行分詞。如果沒有的話,就直接用pip在命令行裡安裝。
<code>pip install wordcloud
pip install jieba/<code>
安裝完成後導入
<code>from wordcloud import WordCloud
import jieba/<code>
第二步:讀取文本並分詞
我從網上下載了一份新冠肺炎的相關材料,並保存為“新冠肺炎.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”文件,打開後如圖:
第四步:額外操作
第一點,如果不想讓一些詞出現在詞雲圖裡怎麼辦,比如我不想出現“人員”、“工作”、“直接”、“根據”、“或者”這五個詞,那麼就將它們作為停用詞,並傳給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>
現在將生成的圖片打開,就看不到被停用的詞啦:
第二點,如何讓詞雲圖具有某種形狀,比如我想讓我的詞雲圖呈現出一個口罩的形狀,那就要準備好一個口罩圖片,我將其命名為“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>
現在生成的詞雲圖就具有口罩的形狀啦:
第三點,WordCloud類中的background_color參數默認值是black,但我在本文中使用的是white,因為微信公眾號文章背景色就是白色,這樣顯得與背景色比較相融。該參數使用的原則就是儘量與我們大環境的背景色相同,如果使用默認的black,效果如下:
關注微信公眾號“Python小鎮”,發現更多幹貨知識!
閱讀更多 Python小鎮 的文章