欢迎光临散文网 会员登陆 & 注册

三国出场谁榜首?Python对三国演义中人物出场次数及词频分析

2022-04-07 21:50 作者:张自信的小号  | 我要投稿


说来与三国有解不开的渊源,从初中到现在大概玩了十多年的三国杀却一直没有读原著,现在正好在读原著,又在学Python,于是来了兴致。

骚图一张

分析的思路来源于北京理工大学嵩天老师课程Python语言程序设计:https://www.icourse163.org/course/BIT-268001?tid=1467117627

之前也有师兄做过:https://zhuanlan.zhihu.com/p/377144700

但是两个代码都存在一定缺陷,不能很好地得到准确的词频和人物出场次数,故此对其进行改进。

嵩天老师课程代码

如下图可以看到其中对人物的称呼只给出了两三个,如果人物的称呼很多的话最后得到的词频会少。

比如:赵云,其字“子龙”,又可称为“赵子龙”;又如刘备,有:'玄德' 、  '汉中王' 、'皇叔'、 '刘皇叔' 、 '刘玄德'等。又如曹操,有: '孟德' 、'丞相'、 '魏王'、 '阿瞒'、'曹孟德'等。

课程代码结果

针对以上问题,主要的改进点就是对不同称呼的判断要多样,并且将出现的与人物称谓无关的词去掉,单独列出相关词频。

代码如下:

最后得到的结果:

(1)出场人物前二十及其出场次数

1    曹操         1495
2   
诸葛亮        1444
3   
刘备         1429
4   
关羽          820
5   
张飞          393
6   
赵云          352
7   
孙权          325
8   
吕布          306
9   
周瑜          287
10  
司马懿         240
11  
袁绍          220
12  
马超          196
13  
魏延          190
14  
黄忠          176
15  
姜维          169
16  
刘表          143
17  
马岱          127
18  
庞德          126
19  
孟获          122
20  
夏侯惇         116

该结果相较原课程代码有了更多改进,排名也发生了改变,前几位中赵云、孙权超过了吕布,总体上得到的出现次数均有一定提升。

可以看到诸葛亮接近了曹操,那有没有可能因为误差导致诸葛亮成为榜首,只能说“难”!

如下图,原文中搜一个“操”字就有2855个结果,而且基本指的是曹操,榜首当之无愧是曹操了!(本次分析两字以上词语,单字分析起来工作量较大(*/ω\*))

浏览器查找“操”的结果

(2)哪些词出现多(两个字以上)

前后顺序(出现次数有多到少)

比较典型的就是泛指的词如“将军”、“主公”等。

另外可以看到情绪起伏比较剧烈:大喜、大叫、大败、大事、大惊、大怒!

地名方面,荆州荣登榜首,谁让你刘备总不还荆州呢?


感谢嵩天老师提供的指导,三国和Python都很有意思哈哈!

课程链接:https://www.icourse163.org/course/BIT-268001?tid=1467117627

三国演义原文:https://python123.io/resources/pye/threekingdoms.txt

三国出场谁榜首?Python对三国演义中人物出场次数及词频分析的评论 (共 条)

分享到微博请遵守国家法律