文章目錄
本文采用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