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