使用Python製作的詞雲圖

本文采用Python編程,實現對文本文檔(中、英文)做詞頻統計以及詞雲圖展示。

1.何爲詞雲圖?

詞雲圖是文本數據的視覺展示,可以快速從大量文本信息中找出關鍵詞。一般來說字體越大就代表出現的頻率越高。

E.G. 下圖是《三國演義》中的高頻詞,部分詞彙通過篩選不在圖中展示。本文主要展示《三國演義中》出現頻率較高的人物名稱。

2.前期準備

2.1.開發環境

  • win 10 + Sublime text3

2.2.需要用到的Python庫

  • wordcloud:優秀的詞雲展示第三方庫,以詞語爲基本單位,通過圖形可視化的方式,更加直觀和藝術的展示文本;
  • jieba:“結巴”中文分詞:做最好的 Python 中文分詞組件;
  • numpy:支持大量的維度數組與矩陣運算,主要用於數組計算;;
  • matplotlib:繪圖庫;
  • PIL:第三方圖像處理庫,包括加載圖像和創建信圖像的功能。

3.代碼解析

3.1.導入Python庫

import numpy as np
import jieba 
from wordcloud import WordCloud
from matplotlib import pyplot as plt 
from PIL import Image

3.2.以只讀模式打開.txt

本文以《三國演義》(Three Kingdoms)爲例,打開文本,讀取後關閉。

f = open('E:/PySource/threekingdoms.txt','r',encoding='utf-8') 
txt = f.read()
f.close()

3.3.預處理文本和背景圖片

將要處理的背景圖片與代碼放入同一地址,本文將圖片命名爲“back_pic_cloud”。

words = jieba.lcut(txt)		# 文本分詞
newtxt = ' '.join(words)	# 將詞語連接起來,以空格爲連接詞
img = Image.open(r'back_pic_cloud.jpg')	 # 打開背景圖片
img_array = np.array(img)		# 將圖片轉換爲數組

3.4.設置詞雲圖參數

wordcloud = WordCloud(
	background_color="black", # 將背景顏色設置爲黑色,也可根據個人喜好更改
	width = 1080,			  #	圖尺寸
	height = 960,
	font_path = "C:/Windows/Fonts/simfang.ttf",		#字體設置
	max_words = 150,
	max_font_size = 100,
	stopwords = excludes,	  # 設置停止詞,若不設置將展示所有高頻詞彙,添加可選擇去除
	mask = img_array).generate(newtxt)

3.5.展示詞雲圖並保存

plt.imshow(wordcloud)
plt.axis('off')
plt.show()
wordcloud.to_file('result.png')

3.6.運行結果及優化

以上代碼運行結果如下圖所示:
在這裏插入圖片描述
不難看出,圖中出現了很多諸如:”二人“、”卻說“ 等沒有意義的詞彙,所以我們在處理詞雲圖時可以添加如下代碼對該部分詞彙進行去除。最終展示結果如開篇所示。

excludes = ['將軍','卻說','荊州','二人','不可','不能','如此',
'如何','商議','主公','左右','軍士','軍馬','引兵','大喜','次日',
'東吳','天下','於是','今日','魏兵','不敢','不知','陛下','一人',
'人馬','都督','漢中','衆將','只見','後主','大叫','孔明曰','玄德曰']

4.完整代碼

4.1.展示

# 統計文本文檔中詞頻並生成詞雲圖.py
import numpy as np
import jieba 
from wordcloud import WordCloud
from matplotlib import pyplot as plt 
from PIL import Image

# 以只讀模式打開txt文檔
f = open('E:/PySource/threekingdoms.txt','r',encoding='utf-8') 
txt = f.read()
f.close()

# 預處理文本和背景圖片
words = jieba.lcut(txt)		# 文本分詞
newtxt = ' '.join(words)	# 將詞語連接起來,以空格爲連接詞
img = Image.open(r'back_pic_cloud.jpg')	 # 打開背景圖片
img_array = np.array(img)		# 將圖片轉換爲數組

# 去除不希望在詞雲圖中顯示的詞彙
excludes = ['將軍','卻說','荊州','二人','不可','不能','如此',
'如何','商議','主公','左右','軍士','軍馬','引兵','大喜','次日',
'東吳','天下','於是','今日','魏兵','不敢','不知','陛下','一人',
'人馬','都督','漢中','衆將','只見','後主','大叫','孔明曰','玄德曰']

# 設置詞雲圖參數
wordcloud = WordCloud(
	background_color="black",
	width = 1080,
	height = 960,
	font_path = "C:/Windows/Fonts/simfang.ttf",
	max_words = 150,
	max_font_size = 100,
	stopwords = excludes,
	mask = img_array).generate(newtxt)

# 展示詞雲圖並保存
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
wordcloud.to_file('result.png')

4.2.下載

代碼下載地址

//download.csdn.net/download/qq_36581390/12236076

《三國演義》文本下載地址

//download.csdn.net/download/qq_36581390/12236085
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章