使用python生成定制化詞云的代碼示例
引言
數(shù)據(jù)可視化已成為我們理解復(fù)雜信息的關(guān)鍵工具。詞云,作為一種流行的數(shù)據(jù)可視化形式,能夠?qū)⒋罅课谋緮?shù)據(jù)中的關(guān)鍵詞以視覺化的方式呈現(xiàn),讓我們迅速捕捉到文本的核心。本文將通過Python編程語言,使用jieba和wordcloud庫,并基于斗破蒼穹第一章的內(nèi)容,生成一個具有特定形狀的詞云。
環(huán)境搭建
在開始之前,確保你的Python環(huán)境中安裝了必要的庫。如果尚未安裝,可以通過以下命令進行安裝:
pip install matplotlib jieba wordcloud numpy pillow
讀取與準備文本
我們將使用《斗破蒼穹第一章》的文本作為示例。首先,確保文本文件以UTF-8編碼保存,以避免編碼錯誤:
with open('斗破蒼穹第一章.txt', 'r', encoding='utf-8') as file:
text = file.read()
中文分詞
中文文本處理的第一步是分詞。我們使用jieba庫,它是中文文本分詞的常用工具:
import jieba cut_text = jieba.cut(text) word = ' '.join(cut_text)
定義停用詞
在生成詞云之前,我們需要定義一組停用詞,以排除那些在文本中頻繁出現(xiàn)但對分析沒有太大意義的詞:
stopwords={
'了', '的', '和', '是', '我', '你', '這', '就', '有', '在', '也', '一', '不', '人', '都', '一個',
'我們', '他', '她', '得', '地', '很', '到', '說', '要', '去', '上', '說', '知道', '能', '看',
'自己', '出來', '過', '著', '聽', '覺得', '但是', '而且', '因為', '所以', '雖然', '如果', '就是',
'只有', '可以', '什么', '哪', '哪個', '那些', '什么', '怎么', '怎樣', '這么', '那么', '這樣', '那樣',
'一點', '一些', '一點', '一些', '一下', '一下', '一會兒', '一點兒', '現(xiàn)在', '然后', '再', '曾經(jīng)',
'曾經(jīng)', '曾經(jīng)', '曾經(jīng)', '或者', '或者', '以及', '或者', '跟', '跟', '同', '和', '與', '跟', '同',
'跟', '與', '跟', '和', '與', '而且', '并且', '或者', '還是', '或者', '或者', '又', '也', '還',
'再', '另外', '那',
'然后',
'接著',
'之后',
'起來',
# ... 其他語氣助詞 ...
}
選擇詞云形狀
詞云的形狀可以是任何形式,本例中我們將使用一張圖片來定義詞云的形狀:
from PIL import Image
import numpy as np
pic = Image.open('test1.png')
pic_array = np.array(pic)
現(xiàn)在,我們將所有元素結(jié)合在一起,生成詞云:
import wordcloud
from matplotlib import colors
color_list = ['black', 'red', 'blue', 'green']
colormap = colors.ListedColormap(color_list)
wc = wordcloud.WordCloud(
mask=pic_array,
font_path='simhei.ttf',
background_color='white',
colormap=colormap,
stopwords=stopwords
)
wc.generate(word)
顯示詞云
最后,我們使用matplotlib庫來顯示我們生成的詞云:
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
結(jié)語
通過上述步驟,我們不僅學習了如何使用Python生成詞云,還了解了如何通過jieba進行中文分詞,以及如何使用wordcloud庫自定義詞云的生成。
import matplotlib.pyplot as plt
import jieba
import wordcloud
from PIL import Image
import numpy as np
from matplotlib import colors
# 讀取文本文件
str1 = open('斗破蒼穹第一章.txt', 'r', encoding='utf-8').read() # 確保使用正確的編碼
cut_text = jieba.cut(str1) # 分詞處理
word = ' '.join(cut_text) # 以空格分割文本
color_list = ['black', 'red','blue','green']
colormap = colors.ListedColormap(color_list) # matplotlib色圖
# 使用Pillow讀取圖片
pic = Image.open('test1.png') # 讀取圖片
# 將Pillow圖像轉(zhuǎn)換為numpy數(shù)組
pic_array = np.array(pic)
wc = wordcloud.WordCloud(
mask=pic_array, # 使用轉(zhuǎn)換后的數(shù)組作為背景圖形
font_path='simhei.ttf', # 可以改成自己喜歡的字體
background_color='white', # 詞云圖背景顏色可以換成自己喜歡的顏色
colormap=colormap,
stopwords={
'了', '的', '和', '是', '我', '你', '這', '就', '有', '在', '也', '一', '不', '人', '都', '一個',
'我們', '他', '她', '得', '地', '很', '到', '說', '要', '去', '上', '說', '知道', '能', '看',
'自己', '出來', '過', '著', '聽', '覺得', '但是', '而且', '因為', '所以', '雖然', '如果', '就是',
'只有', '可以', '什么', '哪', '哪個', '那些', '什么', '怎么', '怎樣', '這么', '那么', '這樣', '那樣',
'一點', '一些', '一點', '一些', '一下', '一下', '一會兒', '一點兒', '現(xiàn)在', '然后', '再', '曾經(jīng)',
'曾經(jīng)', '曾經(jīng)', '曾經(jīng)', '或者', '或者', '以及', '或者', '跟', '跟', '同', '和', '與', '跟', '同',
'跟', '與', '跟', '和', '與', '而且', '并且', '或者', '還是', '或者', '或者', '又', '也', '還',
'再', '另外', '那',
'然后',
'接著',
'之后',
'起來',
# ... 其他語氣助詞 ...
}
)
wc.generate(word) # 生成詞云
# 顯示詞云圖
plt.imshow(wc, interpolation='bilinear') # 使用bilinear插值可以使詞云看起來更平滑
plt.axis('off')
plt.show()

到此這篇關(guān)于使用python生成定制化詞云的代碼示例的文章就介紹到這了,更多相關(guān)python生成定制化詞云內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中argparse模塊及action='store_true'詳解
argparse?是一個用來解析命令行參數(shù)的?Python?庫,它是?Python?標準庫的一部分,這篇文章主要介紹了python中argparse模塊及action=‘store_true‘詳解,需要的朋友可以參考下2023-02-02
使用Python實現(xiàn)PDF頁面設(shè)置操作
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)PDF頁面設(shè)置操作,例如旋轉(zhuǎn)頁面和調(diào)整頁面順序,感興趣的小伙伴可以跟隨小編一起學習一下2024-04-04

