大数据分析-读取文本文件内容进行词云图展示
在对文本文件进行数据分类预测的时候,常常需要先将文本文件进行分词,提取关键词后进行后续的向量化处理,今天我们就来介绍一种将文本文件进行分词并统计词频,最终形成词云图的方法,其中可视化的对文本内容进行分析和展示,十分实用!
一、需要用到jieba的分词工具以及pyecharts的可视化展示工具
经过测试用pyecharts的可视化工具比直接用wordcloud工具要更加方便,因为wordcloud经常都会莫名奇妙的提示需要true-type的字体,这个真的是一个很bug的存在,而且pyecharts的交互体验感更好,花不多说,我们先导入相应的库:
import jieba, re
from collections import Counter
from pyecharts.charts import WordCloud
from pyecharts import options as opts
二、读取文本文件:
# 1. 读文本,需要提前准备一个txt,里面准备好相应的文本数据
text = open('article.txt', encoding='utf-8').read()
三、进行分词,将停用词进行过滤
1、停用词去掉的原因是因为有一些停用词对于文本的分析基本没有用,就是符号以及一些助词,因此要将这些干扰项去掉,可以去网上下载相应的停用词表,这我就直接使用(stopword.txt)。
2、调用jieba进行分词,将停用词进行过滤并统计每个词的词频。有了词频才能做后面的可视化的操作。选取了top200词频的词来进行可视化的展示,否则就太稀松了。
STOPWORDS = set(open('stopword.txt', encoding='utf-8').read().split())
words = [w for w in jieba.cut(text)if w.strip() and w not in STOPWORDS and re.fullmatch(r'[\u4e00-\u9fa5]+', w)]
top200 = Counter(words).most_common(200)
我们直观的看一下分词的结果和词频:
四、调用pyecharts来生成词云:会生成一个user_query_cloud.html的网页
还可以指定词云的形状:
- 'circle':圆形(默认形状),词云会围绕圆形轮廓分布。
- 'cardioid':心形(心脏线形状),词云呈心形轮廓。
- 'diamond':菱形,词云以菱形为轮廓分布。
- 'triangle-forward':正三角形(向前的三角形)。
- 'triangle':三角形(与 'triangle-forward' 类似,部分版本可能无差异)。
- 'star':星形,词云围绕星形轮廓排列。
wc = (WordCloud(init_opts=opts.InitOpts(width="800px", height="600px")).add(series_name="词频",data_pair=top200,word_size_range=[10, 100],shape="cardioid",textstyle_opts=opts.TextStyleOpts(font_family="Microsoft YaHei"), # 显式指定中文字体).set_global_opts(title_opts=opts.TitleOpts(title="用户提问的词云"),tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{b}: {c}"),)
)wc.render("user_query_cloud.html")
我们来看一下效果吧:
好了,到这整个小的数据分析项目就结束了,大家如果有任何疑问和需要讨论的地方,可以在下方留言哟~