python用数据告诉你谁是《西游记》真正的主角:基于jieba模块的分析与基于pyechart的词云可视化展示

先说结论:西游记里面孙悟空(孙行者)的出镜率最高,是名副其实的男猪脚。以下的词云图可以直观地证明这个结论。那么这个图是怎么的出来的呢?本文将分七个步骤进行详细的说明。
在这里插入图片描述
一、导入所需模块
这个任务我们需要使用jieba、pandas、pyecharts等包体,我们使用import进行导入:

import jieba
import pandas as pd
import pyecharts as pec
from pyecharts.charts import WordCloud

二、关键变量的创建
新建一个过滤词列表和空的关键词列表,过滤词列表中存放那些高频出现但是没有实际意义的词汇,关键词列表用于后续存放高频实词元组。

FILTER_WORDS = ['知道','那里','不知','两个','这么','那么','怎么','如果',
'是','的','这个','一个','这种','时候','什么','\n','一部','这部','没有',
'还有','因为','只见','甚么','原来','不敢','如何','不曾','闻言','那怪','一声',
'busy','...','to','片子','可以','其实','无法','这样','可能','最后','我们','东西',
'现在','no','所以','一直','也许','它们','不能'] #根据实际情况整理
words = []

三、加载西游记全书txt文件
可以从网上下载到西游记的txt文件,然后使用with open as方法加载它,然后用.read()方法读取其中的内容,存放在string2analyze变量中:

with open('data/xyjtest.txt', 'r', encoding='UTF-8') as myfile:
	string2analyze = myfile.read()

四、使用jieba模块对string2analyze进行分词
我们通过第三步可以得到一个字符串,作为jieba.cut()方法的参数传入,可以得到分词之后的列表seg_list。

seg_list = list(jieba.cut(string2analyze))

五、将seg_list转换成Series之后进行筛选取优
我们将列表类型的分词结果转化成Series,便于使用pandas中的统计方法来进行数据处理,数据处理主要是筛选的过程,先通过.str.len()方法来筛选出字符串长度大于1的有效分词,淘汰那些长度小于1的没有意义的符号;然后通过str.contain(patter)并且对其取非来获得删掉过滤词的分词。最后使用value_count()方法来进行对Series中value不同值的统计和计数,再利用[:30]的切片操作来获得出现次数最高的30个分词和他们出现的次数。

keywords_counts = pd.Series(seg_list)
keywords_counts = keywords_counts[keywords_counts.str.len()>1]
keywords_counts = keywords_counts[~keywords_counts.str.contains('|'.join(FILTER_WORDS))]
keywords_counts = keywords_counts.value_counts()[:20]
print(keywords_counts)

我们从打印的数据中就可以看到西游记中出现最多的关键词了。不过我们最好还是用可视化的方法来表达。

六、整理词云所需的分词元组列表
新版本的pyecharts在绘制词云图的时候,要求把词的内容和权重放在一个元组当中,然后用元组列表作为参数传给词云图对象进行渲染。这个时候,我们之前建立的words列表就要发挥作用了。

words=[]
for i, v in keywords_counts.items():
	words.append((i,v))
print(words)

七、使用pyechars中的WorldCloud()绘制词云图
参考博文词云图的做法,我们根据关键词出现的次数来渲染输出html,并且打印关键信息。

wordcloud = WordCloud()
wordcloud.add("", words, word_size_range=[20, 100])
wordcloud.render()
print(keywords_counts)

运行程序,可能需要花一点时间,最终我们可以看到西游记Top20关键词,打开生成的html,我们就可以看到词云图了:

从数据和图表中,我们可以看到,孙悟空(行者4078次、大圣889次、老孙409次、悟空379次)位列第一、唐僧(师傅1604次、三藏1324次、唐僧802次)位列第二、猪八戒(八戒1677、呆子431)位列第三、沙僧(沙僧721次)位列第四,他们是西游记里面出镜率最高,当之无愧的主角。
在这里插入图片描述
在这里插入图片描述

发布了152 篇原创文章 · 获赞 6 · 访问量 4021

猜你喜欢

转载自blog.csdn.net/weixin_41855010/article/details/104451232