本文翻譯自:https://towardsdatascience.com/the-network-of-three-kingdoms-df6f8f8a1263
最近,我開始看中文電視連續劇三國演義。這部電視劇對西方觀眾來說並不陌生,但我絕對會推薦給喜歡曆史劇的任何人。我保證即使有時表演似乎有點誇大,但這個係列絕不會讓你失望。
當我第一次聽說《三國演義》時,是在《權力的遊戲》結束後尋找要觀看的新係列的時候。有幾篇文章將兩者進行了比較,稱《三國演義》為《中國權力的遊戲》。盡管從藝術的角度對兩者進行比較不在本文的討論範圍之內,但可以肯定的是,這兩個故事具有很多共同點。兩者都有錯綜複雜的情節、充滿了陰謀詭計、出色的軍事戰略和英勇的行動。此外,二者都有大量的角色,英雄和反派們在幾個子劇情中互相影響,最終都與主劇情相連接。
看這部連續劇的時候,我對其同名小說也產生了濃厚興趣。三國演義是一部14th世紀的小說,作者是中國作家羅貫中。與莎士比亞作品對英國文學的影響一樣,三國演義是中國最具影響力的文學作品之一。這事一部鴻篇巨製,內容很長,英文譯本更是超過1500頁。
在追劇和啃小說的過程中,我想起了令人驚豔的權力遊戲的社交網絡分析,作者:安德魯·貝弗裏奇(Andrew Beveridge)和揭山(Jie Shan)。受到他們分析的啟發,我想分析《三國演義》的社交網絡。小說中出現了成千上萬的人物,而我想找到誰才是真正的主角。該小說的英文翻譯是公開的,可以下載進行文本分析。
分析
我的分析目標是確定小說人物之間的所有互動關係。使用這些關係,可以創建一個由人物角色組成的社交網絡,該社交網絡可以用圖來表示。此外,我可以使用此圖來計算中心度指標,這將有助於我推斷誰才是主要角色。
互動關係
為了識別角色的互動關係,首先,我們需要定義什麽才算是互動。在這裏,我計算了兩個角色之間的相互作用,即兩個角色的名字出現在小說中,彼此之間的間隔不超過15個單詞,這是我們從文本中排除了常見的英語單詞之後得出的。實際上,我將數字15(單詞距離)視為一個變量,並嘗試了多個值。最後得出的結論:距離15的分析結果最好。
角色
既然已經定義了交互,就可以確定彼此交互的角色。但是需要分析哪些角色呢?囊括小說的所有1000多個角色是一種選擇,但是我覺得,與較小的網絡相比,如此大的網絡將變得不可讀,並且提供的有用信息更少。因此,我確定了小說中100個最受關注的角色。另外,我列出了在小說網站和文章中出現次數最多的角色列表。同時,我創建了我最喜歡的角色的列表。我組合了三個列表,並手動選擇得到了最終列表中的角色,該列表由70個角色組成。
文章切分
正如我已經提到的,這部小說的篇幅很大。有些人物可能隻在小說的開頭很重要,而另一些人物可能隻有在小說的中間甚至最後幾章之後才變得重要。為了更好地了解角色的演變,我們應該分節研究這部小說。這樣,讀者可以更好地跟隨角色並觀察故事中角色的演變。本文將這本小說的120章分為4個部分,並為每個部分創建一個社交網絡。每個部分由30章組成。
社交網絡
文本分析是在Python中完成的。代碼將每個部分的文本作為輸入,並生成一個圖形對象作為輸出。然後使用了開放圖工具Gephi為網絡創建漂亮的可視化效果。
在每個網絡中,人物角色構成網絡的節點。每個角色都跟與之互動的角色聯係在一起。每個節點的大小表示該角色與其他角色的連接數量,數量越多節點越大。連接的粗細則表示兩個字符之間的交互次數,線條越粗則交互次數越多。
此外,該算法還可以識出別角色之間的組團關係。圖中團體的正式定義不在本文討論範圍之內。在這裏一個比較直觀的概念是:團體內成員之間的互動非常強烈,但與團體外其他成員之間的互動並不那麽強烈。網絡節點的顏色表示角色所屬的團體,相同顏色表示屬於同一團體。
需要注意的是,團體中的成員不必是小說中的盟友或朋友。有時候,角色與敵人的互動可能要比盟友更多。
中心度
最後,代碼計算中心度相關的幾個指標,這有助於根據角色的交互關係來量化角色的重要性。
- 普通中心度(Degree centrality),計算每個角色具有的連接數。這是計算角色重要性的最簡單方法
- 橋接中心度(Betweenness centrality),顯示一個角色對連接網絡中未直接相連的其他角色有多少幫助。它計算的是在連接其他兩個角色的最短路徑中找到某個角色的次數。
- 特征向量中心度(Eigenvector centrality),通過角色與其他重要角色的互動次數來衡量角色的重要性。與少量主要角色的大量交互相比與大量次要角色的交互,權重更高。
這三個中心度都是分數越高,表示人物角色的重要性越高。我們將同時使用三個中心度來考察角色的重要性,但並非所有中心度都具有相同的權重,特征向量中心度更能決定角色的重要性。
接下來,針對小說的每個部分,我們介紹對應的社交網絡和中心度指標分析。
《三國演義》第1-30章
小說內容提要(用穀歌翻譯直譯老外的提要,感受下畫風^_^):
第1-30章從桃園的三兄弟劉備,關羽和張飛的誓言開始。董卓奪取了首都的控製權,並與袁紹組成了領導者的軍閥聯盟。最終,盧布將軍因與未婚的貂蟬發生爭執而殺死了董卓。皇帝落入曹操之手,曹操將其首都遷至該省。另一個軍閥袁Yuan宣布自己為皇帝,但很快就被擊敗。最終,在劉備的幫助下,盧布被曹操擊敗。之後他被迅速處決。 後來,劉備加入袁紹。曹操與劉備作戰,三兄弟在戰鬥後分居。關羽不知道自己的兄弟發生了什麽事,因此相信他會加入曹操。關羽一得知劉備的下落,便離開了曹操。最終,三兄弟重聚,趙子龍加入了。袁紹決定進攻曹操,但他的無能使他輸掉了戰鬥並失去了龐大的軍隊。
這裏的團體檢測由算法實現,沒有手動幹預,從上圖可以看到,該算法為小說的前30章確定了5個團體。如上文所述,該算法僅基於網絡角色的交互來識別團體。
在第一個團體(以紫色顯示)中,曹操與他的顧問和將軍們在一起。顯然,曹操是擁有連接最多,互動最多的角色。其他角色,他們要麽想與他結盟以分享權力,要麽就讓他失望以爭取自己的權力。
故事的主人公劉備與他的兩個結拜兄弟關羽和張飛在一起,並與他的顧問一起組成了第二個團體(以橙色顯示)。我們還看到,趙子龍(將稍後加入這三個兄弟)目前與他的首任主公公公孫瓚有關。
在第一章中,另一個英雄呂布扮演著至關重要的角色。呂布與故事這一部分的大多數主要人物都有強烈的互動。他們與董卓一起組成了涉及貂蟬爭端的團體(以藍色顯示)。袁術也被安排這個團體中,主要是因為他與呂布的密切互動。
袁紹和其他小軍閥組成了第四團體(以綠色顯示)。這是一個與董卓及其盟友對抗的結盟團體。不過,袁紹是這一部分中最強大的軍閥之一,在社交網絡圖中可以清楚地看到這一點。
最後一個團體(以深綠色顯示)是孫家父子組織。在故事的這一節點上,“孫策”和“孫權”都是重要角色,但在團體之外缺乏重要聯係。我們將在後續章節中看到這情況發生變化。
接下來,我們看一下人物角色的中心度。不出所料,曹操在三個中心度上都名列榜首。而且,他的橋接中心度非常高,這表明他是將故事的各個部分聯係在一起的重要角色。每個團體的軍閥可能與其他團體的成員互動不多,但他們都有一個共同的敵人(或盟友),即曹操。
劉備是第二位更具影響力的人物,在三個中心度上都得分很高。盡管他在這些章節中幾乎沒有領地,但他的特征向量中心度表明他與所有主要角色都有很強的聯係。
呂布也一樣,從普通中心度來看,他甚至比劉備擁有更多的聯係。但他的橋接中心度要低得多,從而降低了他的整體得分。
袁紹排名第四,與關羽相當,關羽的聯係較少,但聯係更為緊密。當然,袁紹在這些章節之後很快就死了,而關羽在故事的後半部分將變得更有影響力。
孫權在這裏也應該被提及。他的普通中心度和本征向量中心度甚至沒有進入前10名,但他在橋接中心度上排名第三。這意味著他的團體是通過他與其他團體建立聯係形成的。這裏孫權已經顯示出潛力,後續可以發展成重要角色。
總之,在第1至30章中,曹操排在第一位,其次是劉備,呂布排在第三位,袁紹排在第四位。
第31-60章
小說內容提要(用穀歌翻譯直譯老外的提要,感受下畫風^_^):
在第31-60章中,袁紹對自己的失敗感到and喪,並在不久後去世。曹操完全征服了北方,他的力量大大增強。劉備招募了偉大的學者諸葛亮,他將成為下一章的關鍵人物之一。在另一子圖上,孫權在其兄弟孫策去世後繼承了南部地區。劉彪去世,他的省向曹操投降。 諸葛亮啟程前往南部,說服孫權與曹操作戰,組建了孫劉聯盟。的確,孫權被說服並做好戰鬥準備,任命周瑜為統帥。開始在紅崖戰鬥的準備工作,而諸葛亮和周瑜在設計針對敵人的聰明軍事戰術時試圖超越對方。曹操在紅崖失敗。關羽雖然下令殺死曹操,但讓他通過並逃脫。 曹操失敗後,劉備終於可以建立領土,三個王國的真實時代開始了。曹操將周瑜反抗劉備。周瑜被擊敗並因傷身亡。在另一個子圖中,張璐在河岸地區與劉章對抗。
該算法為第31-60章確定了3個團體。它們大致對應於三個相互對抗的派係。北部的曹操,南部的孫權和西部的劉備。
曹操仍然是聯係最多的角色,他的團體(以紫色顯示)包含最多的角色,其中大多數角色是他的將軍和顧問。
劉備的團體(以橙色顯示)由更少但更具影響力的角色組成。其中最重要的幾個是他的結義兄弟關羽和張飛,以及將軍趙子龍。此外,荊州劉表也被納入該組。劉表去世前與劉備非常親密,且正計劃將他的底盤分給他。他們之間有很多互動,因此算法將他們安排在同一個團體中。
第三個團體是南部地區(以綠色顯示)。盡管孫權是南地的主人,但他並不是該團體中最重要的人物。這個最重要的人物頭銜屬於周瑜或諸葛亮。在這裏我們應該注意,諸葛亮在劉備麾下工作,但是在這些章節中,他的大部分時間都花在了南部地區,計劃在赤壁作戰。因此,他被算法放在了南方團體。另外,顧問魯肅在團體中也起著重要作用。
從前兩個中心度來看,曹操仍處於頂部。而且曹操的橋接中心度領先第二名兩倍以上。這意味著不同團體中的角色通過曹操連接在一起,可見他仍然是其敵人和盟友的主要利益所在。另一方麵,他的特征向量中心度得分不是最好的。原因是與曹操對抗的主要角色之間相互作用很多,形成了一個正反饋回路,從而增強了其他角色的特征向量中心性度。
劉備再次獲得第二名。不過這一次,他離曹操更近了,他甚至在特征向量中心度方麵獲得了第一名。
其他重要角色中最引人注目的是諸葛亮。盡管在前30章中幾乎沒有提到他,但他在特征向量中心度上排名第二,並且在其他兩個中心度上都有很好的位置。諸葛亮是一位傑出的人物,所有主要人物都跟他相關。在接下來的章節中,他將獲得更高的排名。
另一個著名人物是周瑜,他的得分與諸葛亮相似。他與許多角色都有聯係,並且在三個中心度上都得分很高。不幸的是,像呂布一樣,他在這些章節的結尾領了盒飯。
總之,曹操仍然是第一名,劉備是第二名,諸葛亮和周瑜爭奪第三名。
第61–90章
小說內容提要(用穀歌翻譯直譯老外的提要,感受下畫風^_^):
在第61-90章的開頭,劉備盡管勉強,卻對劉章發起了競選。他贏得了這場戰鬥,將河岸地區控製在自己的控製之下。曹操,劉備和孫權這三個領主現在都擁有重要的領土。戰鬥在這三者之間開始。首先,當孫權試圖入侵魏國時,孫權與曹操進行了鬥爭,但很快取得了和平。後來,劉備與自稱為魏王的曹操發動戰爭。劉備為曹操贏得了一些勝利,其中之一是漢中司令部。 關羽拒絕了與南國的婚姻聯盟,這使孫權代替曹操加入了曹操。在繁城之戰中,關羽被孫權俘虜並處決。關羽去世後不久,曹操也去世了,兒子曹as接任皇帝。張飛被他的下屬暗殺,然後下叛了孫權。為了報仇他失去的兄弟,劉備競選孫權。孫權向曹Pi皇帝屈服,希望對劉備有所幫助。劉備繼續競選,但被悲痛蒙蔽,被擊敗。他的健康狀況惡化,死了。劉備去世後,諸葛亮與the部落發生了衝突,在那裏他取得了勝利。
該算法在第61-90章中識別出4個團體。三個主要派係幾乎保持不變。第一個團體是魏國(以紫色顯示),以曹操為首領。曹操仍然是大多數聯係和互動的主要角色。這裏的離群角色是關羽。關羽顯然是對劉備效忠的,但該算法使他成為了曹操團體的一員。這是因為,在這些章節中,關羽一直在與曹操作鬥爭。因此,他的大部分互動都是與曹操的團體互動,而不是與他的派係互動。
第二個團體是劉備領導的蜀國(以橙色顯示)。顯然,劉備是該團體的主要人物,諸葛亮是其中另一個重要人物。同樣,黃忠將軍在團體中也起著至關重要的作用,主要是因為他對漢中戰役的重大貢獻。
孫權為首的吳國形成了第三個團體(以綠色顯示)。除孫權外,呂蒙將軍和顧問魯肅是該團體最重要的人物。
最後,關羽之子關興和張飛之子張苞組成一個團體(以藍色顯示)。這些角色遵循其自己的子圖,彼此之間互動很多,但與其他角色互動不多,因此將它們放置在單獨的團體中。在這裏,我們還應該注意曹操派係中一個名叫司馬懿的小角色的出現,他將成為小說最後部分的主要人物。
曹操仍然是無可爭議的贏家,盡管在本節的最後幾章中他也領了盒飯,但這一部分他在三個中心度都排名第一。而且與其他所有人相比,他的橋接中心度仍然遙遙領先。
在這部分中很難確定第二名。關羽在普通中心度和橋接中心度方麵得分很高。不幸的是,他的特征向量中心性度很低。另一方麵,劉備有著強大的人脈,這使他在特征向量中心性上得分很高,但他的橋接中心度卻很低。另外,孫權在這三個中心度的得分始終都很高,但他的競爭對手之一總是比他高。
另外,我們注意到,諸葛亮在這一部分的得分要低於上一部分。不過這將在小說的最後一部分中發生重大變化。
總之,曹操仍然是最重要的角色,而劉備,孫權和關羽則在爭奪第二名。
第91–120章
小說內容提要(用穀歌翻譯直譯老外的提要,感受下畫風^_^):
在最近的30章中,諸葛亮領導了幾次反對魏的運動,在那裏他與才華橫溢的司馬a進行了對抗。在第一個戰役開始時,諸葛亮會見他的門徒薑偉,後者將在最後幾章中扮演重要角色。在競選期間,諸葛亮和司馬Yi都表現出了敏銳的思想,能夠贏得決定性的勝利。由於他們都是極好的戰略家,因此蜀國與魏國之間的戰爭仍處於僵局。此外,在這些運動中,趙子龍,張寶和關星也死亡。 諸葛亮因無法擊敗司馬Yi而感到沮喪。他的健康狀況惡化了,他去世了,所有的知識都留給了薑偉。薑偉繼續對魏發動攻勢。在魏方麵,曹Rui皇帝去世,最後司馬Yi找到了申領國家的機會,這一權利傳給了他兒子的司馬史和司馬昭。在南國,孫權去世,其兒子孫良繼任。 建偉仍在領導反對魏的運動,但另一位偉大的將軍鄧愛(Deng Ai)能夠阻止他。最終,司馬昭反擊,蜀國屈服於魏國,結束了漢朝的統治。北部和河岸地區現已合並,司馬昭的兒子司馬Yan建立了晉朝。終於,數年後,晉軍入侵吳國並擊敗了其最後一個皇帝孫浩。晉朝征服了王國的所有王國,結束了三個王國的時代。
該網絡在本節中看起來有所不同。除諸葛亮外,所有之前的主要角色都死掉了。以前的老團體已被新的團體取代。該算法識別出網絡中的6個團體,但是隻有兩個主要團體。此外,這些團體的形成方式更多地與事件的時間順序有關,而不是人物的忠誠度。
第一個團體(以紫色顯示)是諸葛亮與司馬懿的鬥爭,發生在本節的前半部分。盡管他們是敵人,但兩個人物都屬於同一個團體,雙方都是各自陣營的領袖。
第二個團體(以綠色顯示)是在這些章節的後半部分發生的薑維和司馬昭之間的鬥爭。同樣,參加這些鬥爭的雙方將軍也被劃分到了他們的團體。
孫權也有自己的團體(橙色顯示)。在本部分中,南方吳國的作用不那麽重要,因此孫權的團體比以前的部分要小得多。另外,張昭和陸遜將軍與孫權處於同一團體。
此外,網絡中還有另外三個小團體。像前30章一樣,關興和張苞形成兩個人的團體(以深綠色顯示)。在這些章節中,關羽和曹操被提及得足夠多,可以出現在網絡中,但是由於聯係有限,它們形成了自己的孤立團體。 “關羽”與“呂蒙”(紅色)同組,“曹操”與“曹丕”和“夏侯淵”同組(藍色)。
諸葛亮是最後幾章中最重要的人物。他在所有三個中心度中均排名第一。
司馬懿和薑維爭奪第二名,他們都是本部分的重量級人物,不過司馬懿整體得分更高,因為他的普通中心度和橋接中心度要比薑維好得多,而其本征向量中心度也非常接近薑維。
魏延、鄧艾和其他人遠低於前三者。這表明,與其他部分不同,最後一部分中隻有三個主要角色,其餘為次要角色。三個王國的偉大英雄時代已然落幕。
結論
在我們分析《三國演義》的四個部分時,我們看到了人物的興衰更替。我們會看到某一部分的英雄幾乎沒有出現在其他部分中,並且在較早的部分中交互作用最小的角色在隨後的部分中成為最有影響力的角色。這是小說的主題之一。野心引導人們尋求權力,但過多的權力會使人們蒙蔽並導致其墮落。
此外,隨著劇情的變化,社交網絡中的團體不斷變化。在大多數情況下,角色會與他們的主公歸為一體,但有時由於戰鬥中的許多互動,他們也會與敵人歸為一體。結尾和開頭對比來看,團體將看起來完全不同,因為舊的領主和英雄被新的領主和英雄所取代。這是小說的另一個主題。
最大的問題仍然存在,誰是小說中最有影響力的人物?從全文的中心度的社交網絡來看,很明顯是曹操。曹操是我在小說中遇到的最聰明,最狡猾,最騙人的梟雄之一。縱觀他在小說中的演變,很明顯他是最有影響力的人物。
劉備位居第二,但他擁有最重要的聯係,這一點從他的特征向量中心度可以明顯看出。仁慈的主人不像小人那樣強大,但是他有強大的朋友。
諸葛亮排名第三,盡管他的聯係和重要互動較少,但他的橋接中心度居第二。這意味著小說中的許多人物都是通過他聯係在一起的。此外,他將小說的前四分之三的重要人物與小說的後四分之一的重要人物聯係起來,例如司馬懿和薑維。
關羽位居第四。他是小說中最偉大的武士英雄。盡管他的橋接中心度很低,但正如從他的特征向量中心度所能看到的那樣,他具有強大的交互聯係。
孫權隻能排在第五。這也反映了王國對人物的重要性,最重要的是曹操領導的魏和劉備領導的蜀,而孫權領導的吳則相對次要。
其他的偉大英雄,如呂布、張飛和趙子龍,則被排序在後續位置。特別需要指出的是,曹操的將領和顧問們都沒有進入前十位。
這反映了這部史詩小說的另一個主題,梟雄雖然厲害,但是沒有偉大的盟友;另一方麵,幾個正派角色的共同努力最終能克製反派的力量。