使用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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章