赞
踩
词云图是文本数据的一种可视化展现方式,它一般是由文本数据中提取的词汇组成某些彩色图形。 词云图的核心 价值 在于以高频关键词的可视化表达来传达大量文本数据背后的有价值的信息。
因为要生成中文文本的词云图所以这里采用jieba分词对文本进行分词处理。
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
文本采用了三国演义开篇的一段txt文件。
注意WordCloud()中的参数,mask为词云图背景样式,我导入了一张皮卡丘的图片。
# 读文件 text = open('text_file/三国演义.txt').read() # 中文分词(join()分别以指定分隔符对字符串、列表、元组、字典元素进行连接) text = ' '.join(jieba.cut(text)) #print(text) # 生成词云图 mask = np.array(Image.open('mask_img/pikaqiu.jpg')) # 通过PIL下的Image读取图片,并转化为np.array类型 wc = WordCloud(mask=mask, # mask参数设置背景样式 font_path='C:\Windows\Fonts\AdobeHeitiStd-Regular.otf', # 设置字体路径,不同系统后缀会有区别,建议从C:\Windows\Fonts路径下找自己电脑的字体 mode='RGBA', # RGB的扩展颜色格式 background_color=None).generate(text) # 画词云图 plt.imshow(wc) plt.axis('off') # 去掉画图坐标轴 plt.show()
font_path为字体的路径设置,对中文文本如果不指定font_path(字体路径)会出现词云图中的词为空白的情况。如下图:
不同系统字体后缀会有区别,建议从C:\Windows\Fonts路径下找自己电脑的字体
因为词云图是找出文本中出现的高频词,而中文文本是连续的所以要进行分词。
如果是英文文本,则不需要通过jieba进行分词步骤,因为英文文本单词就是以空格分隔。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。