三国出场谁榜首?Python对三国演义中人物出场次数及词频分析
说来与三国有解不开的渊源,从初中到现在大概玩了十多年的三国杀却一直没有读原著,现在正好在读原著,又在学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