三國出場誰榜首?Python對三國演義中人物出場次數(shù)及詞頻分析
說來與三國有解不開的淵源,從初中到現(xiàn)在大概玩了十多年的三國殺卻一直沒有讀原著,現(xiàn)在正好在讀原著,又在學(xué)Python,于是來了興致。

分析的思路來源于北京理工大學(xué)嵩天老師課程Python語言程序設(shè)計(jì):https://www.icourse163.org/course/BIT-268001?tid=1467117627
之前也有師兄做過:https://zhuanlan.zhihu.com/p/377144700
但是兩個(gè)代碼都存在一定缺陷,不能很好地得到準(zhǔn)確的詞頻和人物出場次數(shù),故此對其進(jìn)行改進(jìn)。

如下圖可以看到其中對人物的稱呼只給出了兩三個(gè),如果人物的稱呼很多的話最后得到的詞頻會(huì)少。
比如:趙云,其字“子龍”,又可稱為“趙子龍”;又如劉備,有:'玄德' 、??'漢中王'?、'皇叔'、?'劉皇叔' 、?'劉玄德'等。又如曹操,有:?'孟德' 、'丞相'、 '魏王'、 '阿瞞'、'曹孟德'等。

針對以上問題,主要的改進(jìn)點(diǎn)就是對不同稱呼的判斷要多樣,并且將出現(xiàn)的與人物稱謂無關(guān)的詞去掉,單獨(dú)列出相關(guān)詞頻。
代碼如下:
最后得到的結(jié)果:
(1)出場人物前二十及其出場次數(shù)
1??? 曹操???????? 1495
2??? 諸葛亮??????? 1444
3??? 劉備???????? 1429
4??? 關(guān)羽????????? 820
5??? 張飛????????? 393
6??? 趙云????????? 352
7??? 孫權(quán)????????? 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
該結(jié)果相較原課程代碼有了更多改進(jìn),排名也發(fā)生了改變,前幾位中趙云、孫權(quán)超過了呂布,總體上得到的出現(xiàn)次數(shù)均有一定提升。
可以看到諸葛亮接近了曹操,那有沒有可能因?yàn)檎`差導(dǎo)致諸葛亮成為榜首,只能說“難”!
如下圖,原文中搜一個(gè)“操”字就有2855個(gè)結(jié)果,而且基本指的是曹操,榜首當(dāng)之無愧是曹操了?。ū敬畏治鰞勺忠陨显~語,單字分析起來工作量較大(*/ω\*))

(2)哪些詞出現(xiàn)多(兩個(gè)字以上)

比較典型的就是泛指的詞如“將軍”、“主公”等。
另外可以看到情緒起伏比較劇烈:大喜、大叫、大敗、大事、大驚、大怒!
地名方面,荊州榮登榜首,誰讓你劉備總不還荊州呢?
感謝嵩天老師提供的指導(dǎo),三國和Python都很有意思哈哈!
課程鏈接:https://www.icourse163.org/course/BIT-268001?tid=1467117627
三國演義原文:https://python123.io/resources/pye/threekingdoms.txt