Python(wordcloud)如何根據(jù)文本數(shù)據(jù)(.txt文件)繪制詞云圖
一、前言
本文將介紹如何利用python來根據(jù)文本數(shù)據(jù)(.txt文件)繪制詞云圖,除了繪制常規(guī)形狀的詞云圖(比如長方形),還可以指定詞云圖的形狀。
二、相關(guān)庫的介紹
1、安裝相關(guān)的庫
pip install jieba pip install matplotlib pip install wordcloud pip install numpy pip install Image
2、 導(dǎo)入相關(guān)的庫
import jieba import matplotlib.pyplot as plt from wordcloud import WordCloud import numpy as np from PIL import Image # 圖像處理
3、 相關(guān)庫的介紹
jieba:
結(jié)巴分詞庫,一個中文分詞庫。由于中文文本的每個漢字都是連續(xù)書寫的,因此需要對文本進行分詞來獲得中文文本的每個詞組,即分詞。matplotlib.pyplot
圖像展示庫。用來創(chuàng)建畫布以及相關(guān)的圖像展示。在繪圖前,需要創(chuàng)建一個figure對象,即需要一張畫板才能開始繪圖。wordcloud :
詞云展示庫,可以根據(jù)文本的詞頻,對內(nèi)容進行詞云圖的可視化。numpy
numpy是Python的一個開源的數(shù)值計算擴展庫,主要用于處理大型多維數(shù)組和矩陣,以及進行高效的數(shù)學(xué)運算,廣泛應(yīng)用于數(shù)據(jù)分析、機器學(xué)習(xí)、信號處理等領(lǐng)域。Image
Image模塊是一個強大的圖像處理工具,提供了對圖像文件的讀寫和處理的功能。也提供了各種功能和方法來處理和操作圖像,包括加載、保存、調(diào)整大小、旋轉(zhuǎn)、裁剪、應(yīng)用濾鏡等。
三、數(shù)據(jù)處理
1、中文分詞
- 中文分詞可以將中文語句切割成單獨的詞組;
- 中文分詞的工具有很多,比如 python 的第三方庫 jieba;
- jieba 支持三種分詞模式:全模式、精確模式、搜索引擎模式。結(jié)巴分詞最主
要的方法是 cut 方法
(1)精確模式
- 試圖將句子最精確地切開,適合文本分析
- 結(jié)巴分詞默認(rèn)為該模式
jieba.cut("文本內(nèi)容",cut_all=False)
(2)全模式
- 把句子中所有可以成詞的詞語都掃描出來,速度很快,但是不能解決歧義
jieba.cut("文本內(nèi)容",cut_all=True)
(3)搜索引擎模式
- 在精確模式的基礎(chǔ)上,對長詞再次切分,提高召回率
2、去除停用詞
- 對中文來說,包括像“的”、“和”、“在”、“是”等副詞、量詞、介詞、嘆詞、數(shù)詞都是停用詞。這些詞匯幾乎在所有中文文本都會出現(xiàn),不具有特殊性,沒有區(qū)分度,所以通常會把這些詞從文本中去除;
- 去除停用詞需要一個停詞表stopword.txt,將分詞后的文本中每個詞與停詞字典中的條目進行匹配。如果匹配成功,該詞將被刪除;
- 直接百度搜索停詞表并下載就好了
(由于本文用到的數(shù)據(jù)集的文本內(nèi)容比較簡單,因此沒有執(zhí)行去除停用詞這一步的操作)
四、實現(xiàn)
1、繪制基本詞云圖
(1)核心
在以下代碼中,根據(jù)實際更改文件的讀取路徑以及保存路徑即可:

(2)WordCloud 參數(shù)解釋
- 參數(shù)解釋
| 參數(shù) | 解釋 |
|---|---|
| width | 詞云圖的寬度(默認(rèn)400像素) |
| height | 詞云圖的高度(默認(rèn)200像素) |
| max_font_size | 詞云圖字體的最大字號(根據(jù)圖片高度自動調(diào)節(jié)) |
| min_font_size | 詞云圖字體的最小字號(默認(rèn)為4號字體) |
| max_words | 詞云圖顯示的最大單詞數(shù)(默認(rèn)200) |
| stop_words | 不顯示的詞語、單詞 |
| mask | 指定詞云圖的形狀(默認(rèn)為長方形) |
| background_color | 詞云圖的背景顏色(默認(rèn)為黑色) |
| font_path | 字體文件的路徑 |
- 如果文本是中文的,需要設(shè)置字體,否則會亂碼
font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc"
(3)完整代碼:
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 讀取文本文件
text = open(r"C:\Users\abc\Desktop\詞云圖數(shù)據(jù)\grape.txt", encoding="utf-8").read()
# 對文本進行分詞,默認(rèn)精確模式
text1=jieba.cut(text)
# 以空格作為分隔符,將分詞后的所有字符串合并成一個新的字符串
text = ' '.join(text1)
# 根據(jù)分詞結(jié)果產(chǎn)生詞云
wc = WordCloud(font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc",width=500, height=400, mode="RGBA", background_color=None).generate(text)
# 以圖片的形式顯示詞云
plt.imshow(wc, interpolation="bilinear")
# 不顯示圖像坐標(biāo)系
plt.axis("off")
# 顯示圖像
plt.show()
#保存詞云圖
wc.to_file(r"\Users\abc\Desktop\res.png")
- 以陳奕迅《葡萄成熟時》的歌詞作為文本數(shù)據(jù),詞云圖的結(jié)果如下:

2、繪制指定形狀的詞云圖
- 有時候需要指定詞云圖的形狀,我們可以通過導(dǎo)入背景圖片作為詞云圖的底圖來實現(xiàn)
- 注意:背景圖片的背景一定要是白色的,不可以是其他顏色或者透明
- 以下面的葡萄圖片作為背景圖片:

(1)核心代碼
需要使用numpy庫以及Image庫來對背景圖片進行圖像處理

- 詞云圖的結(jié)果如下:

(2)詞云圖優(yōu)化
- 我們可以給背景圖的輪廓進行清晰化,比如給輪廓添加粗度和顏色

- 優(yōu)化后的詞云圖如下:

(3)完整代碼:
import wordcloud
import jieba
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image # 圖像處理
#打開背景圖片
pic = Image.open("grape.jpg")
# 提取圖片的輪廓
shape = np.array(pic)
# mask為圖片背景,font_path為字體,若不設(shè)置可能亂碼
wc = wordcloud.WordCloud(mask=shape, font_path="simkai.ttf", background_color="white", contour_color='purple',contour_width=3,
max_font_size=100)
#讀取要分詞的文本文件
text = open(r'C:\Users\abc\Desktop\詞云圖數(shù)據(jù)\grape.txt', "r", encoding='UTF-8').read()
#結(jié)巴分詞
cut_text = jieba.cut(text)
result = " ".join(cut_text)
#生成詞云圖
wc.generate(result)
#保存詞云圖
wc.to_file("cloud.jpg")
# 以圖片的形式顯示詞云
plt.imshow(wc, interpolation="bilinear")
# 不顯示圖像坐標(biāo)系
plt.axis("off")
# 顯示圖像
plt.show()總結(jié)
到此這篇關(guān)于Python(wordcloud)如何根據(jù)文本數(shù)據(jù)(.txt文件)繪制詞云圖的文章就介紹到這了,更多相關(guān)Python根據(jù)文本繪制詞云圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+OpenCV實戰(zhàn)之實現(xiàn)文檔掃描
這篇文章主要為大家詳細(xì)介紹了Python+Opencv如何實現(xiàn)文檔掃描的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09
Pytorch DataLoader shuffle驗證方式
這篇文章主要介紹了Pytorch DataLoader shuffle驗證方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Python強化練習(xí)之Tensorflow2 opp算法實現(xiàn)月球登陸器
在面向?qū)ο蟪霈F(xiàn)之前,我們采用的開發(fā)方法都是面向過程的編程(OPP)。面向過程的編程中最常用的一個分析方法是“功能分解”。我們會把用戶需求先分解成模塊,然后把模塊分解成大的功能,再把大的功能分解成小的功能,整個需求就是按照這樣的方式,最終分解成一個一個的函數(shù)2021-10-10
Python解析json時提示“string indices must be integers”問題解決方法
這篇文章主要介紹了Python解析json時提示“string indices must be integers”問題解決方法,結(jié)合實例形式分析了Python解析json字符串操作規(guī)范與相關(guān)使用技巧,需要的朋友可以參考下2019-07-07
Python使用Pydantic實現(xiàn)數(shù)據(jù)校驗的最佳實踐
Pydantic是一個Python庫,用于數(shù)據(jù)驗證和解析,這篇文章主要介紹了Python如何使用Pydantic實現(xiàn)數(shù)據(jù)校驗功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-03-03

