楊鑫,宋卓遠,朱東霖,楊云帆,鄭紹陽,楊秀璋,羅子江
(貴州財經大學信息學院,貴陽550025)
在移動互聯網迅猛發展的時代,人們更容易利用碎片化時間來滿足自身精神文化上的需求。近年來,隨著小說的受眾群體增多[1],加之許多小說被影視化,人們越來越習慣于閱讀小說以及觀看其影視化作品的方式來追尋自己的內心訴求。究其原因,是其展現的內容與人們的日常生活息息相關[2-3],因此對小說內容及其人物進行有效挖掘很有必要。
小說是一種以塑造人物為中心,通過完整的故事情節和具體環境的渲染來反映社會生活的文學體裁。目前國內已有學者對小說文本做了許多研究,如龔雪萍等人[4]利用BICOMB 和SPSS 軟件對知網中哈代小說的相關文獻進行研究,并將結果以知識圖譜形式直觀展現,進而了解該領域的研究熱點及趨勢;張旋等人[5]基于復雜網絡分析法,對14 部金庸武俠小說中人物的親密度及關系進行識別、評估,從而構建出一種判別小說人物復雜愛情模式的通用模型;樓鍇毅等人[6]提出一種基于社交網絡和K-means 聚類的方法,該法能夠一定程度上反映各類小說作者的寫作風格;陳蕾等人[7]借助雪球算法實現了《紅樓夢》中人物間社會等級關系的分析,從中有效挖掘出人際交往親密度和社區影響力;肖天久等人[8]以金庸和古龍的小說作為研究樣本,運用主成分分析與文本分類、聚類的方法,從計算風格學角度對樣本進行詳盡分析,證明兩種小說在多個維度上存在較大差異。
然而,國內當前將共詞分析應用于小說文本挖掘的研究還相對較少,王一博等人[9]雖然運用共詞和命名實體識別等方法對《三國演義》進行了深入分析,并發現三國中主要人物可分成7 個類團,但該研究方法比較單一,未能揭示其中各人物的成長歷程。針對以上問題,本文提出一種基于共詞分析的小說人物關系研究法,通過構建矩陣來發現各角色間的內在關聯,確定書中主要人物;借助層次聚類算法計算人物間相似性,明確不同勢力集團;采用相關軟件和知識圖譜等技術進行結果可視化,便于研究者對小說整體框架及各情節脈絡有更好把握。
本文數據來源自網絡平臺——豬豬書網,從中下載電子版小說《倚天屠龍記》作為研究樣本,并調用Python 對其進行結巴分詞、停用詞過濾等操作,同時,分詞過程中會出現人物名稱誤判現象,如“金毛獅王”可能在分詞后會成為“金毛”和“獅王”兩個獨立名詞,為避免這種情況,文中增加了小說人物自定義詞典,提升識別精度。此外,對文本中有相同含義的人物名稱進行合并,如將“張無忌”、“曾阿牛”合并為“張無忌”。
本文基于共詞分析法對小說人物關系進行深入研究,其總體思路如圖1 所示。

圖1 研究思路圖
具體研究步驟如下:
(1)從網絡上下載小說txt 文本,并存儲至本地,使用Python 對文本內容進行預處理,包括結巴分詞、去除停用詞、相同人物名稱合并等操作;
(2)從百度百科獲取小說人物列表(103 位),并構建相應自定義詞典,提高分詞中人物識別準度;
(3)利用Python 對小說中主要人物構建共現矩陣、相似矩陣、相異矩陣;
(4)通過共詞分析法實現人物共現、聚類和小說情節演化等研究,并借助知識圖譜和Python 技術將分析結果可視化。
人物是小說的重要構成部分,能夠突出小說主旨,并且可以揭示和折射社會生活某些本質及相關現象帶來的啟示。本文對書中人物名稱的出現頻次進行統計,結果如圖2 所示,從中可以看出,“張無忌”頻數居首,共計4668 次,其次是“趙敏”和“謝遜”,分別出現1251 和1209 次。

圖2 小說人物詞頻統計(部分)
為了探析各人物間關系及其動態變化,文中采用共詞分析法對小說中人物構建一個103×103 的共現矩陣(見表1),從表1 中可知人物間的共現情況,如“張無忌”和“趙敏”共現407 次、“謝遜”和“張翠山”共現127次。其中矩陣構建規則如公式(1)所示,當兩個人物同時出現在小說的一個段落中,就認為這兩個人物間存在一次共現,反之兩個人物間不存在關系。

式(1)中n 表示每兩位人物的共現次數;ai表示矩陣中第i 行對應的人物;aj表示矩陣中第j 列對應的人物。
表1 中各人物間共現數值差異較大,會對后續分析產生影響。因此,文中選用皮爾遜相關系數法計算共現矩陣的相似度(見表2),表2 中數值均在區間[0,1]內,數值越大,則表明人物間關聯度越高,反之,關聯度越小。
在人物聚類分析環節,為降低相似矩陣中過多零值帶來的誤差,本文用1 減去表2 中全部數值[10],得到小說人物相異矩陣,如表3 所示。
采用Gephi 軟件根據表1 繪制小說人物共現知識圖譜,結果如圖3 所示,共有人物103 位和共現線1844條。圖中節點代表書中人物,其大小為人物的重要程度,連線代表各人物間的共現關系,線的粗細表示人物共現頻數高低。圖3 顯示,居于圖譜中心位置的是“張無忌”,表明他為書中最重要的人物,其他人物節點逐漸向四周分布擴散。其中“張無忌”與周圍“趙敏”、“周芷若”、“張三豐”、“謝遜”、“楊逍”等人物共現明顯,聯系緊密,說明這些人物是整個圖譜的主體結構,即小說中的主要人物,這與人們讀過《倚天屠龍記》的普遍印象一致。

表1 小說人物共現矩陣(部分)

表2 小說人物相似矩陣(部分)

表3 小說人物相異矩陣(部分)

圖3 倚天人物關系圖譜
聚類分析是依據個體間特征相似性進而自動分類的技術,為便于分析,本文使用Python 對小說中主要人物(60 位)的相異矩陣進行層次聚類分析,選擇Euclidean 和Ward 方法來分別計算個體間與簇間的距離,其中計算歐氏距離(Euclidean)的公式如下:

式(2)中,D(X,Y)表示X 點與Y 點間的歐氏距離;k 表示空間維度,這里k=2,xi為X 點的第i 維坐標值,yi為Y 點的第i 維坐標值。
聚類結果如圖4 所示,橫坐標軸為各簇團間距離,縱坐標軸為各人物名稱。圖中可知,小說內主要人物可劃分為9 個集團。第一集團為少林,包含“空見”、“空聞”、“渡難”、“成昆”、“謝遜”等人,這些人物按輩分還可分成兩個子集團,分別是“渡”字的老一輩和以“空”字為主的年輕一輩,其中成昆早年曾投身少林,之后一直以“圓真”行走江湖,而謝遜也與少林淵源頗深,并在晚年皈依少林,這也是二人無法被分在其他集團的原因;第二集團為明教,包含“楊逍”、“韋一笑”、“殷天正”、“周顛”、“說不得”等人,他們是明教的領導層,鼎力輔助主人公“張無忌”;第三集團為主角團隊,包含“張無忌”、“趙敏”、“周芷若”、“殷離”、“小昭”等人,雖然每人出自不同勢力,但因“張無忌”而聚集在一起,其之間的恩怨情仇貫穿整本小說;第四集團為波斯明教,包含“輝月使”、“流云使”、“妙風使”,曾于靈蛇島為難“張無忌”等人,后因小昭成為總教教主,隨其回歸波斯;第五集團為朝廷,包含“汝陽王”、“鶴筆翁”、“鹿杖客”、“阿大”等人,曾囚禁六大門派各高手于萬安寺,是中原武林共同的敵人;第六集團為峨眉,包含“滅絕師太”、“丁敏君”、“貝錦儀”、“靜玄”、“宋青書”等人,宋青書出身武當,但自光明頂一戰后與峨眉來往密切,并隨后加入峨眉;第七集團為朱武世家,包含“朱九真”、“朱長齡”、“武青嬰”、“衛壁”等人,曾在第15-16 章中為得知謝遜及屠龍刀下落欺騙“張無忌”,后計謀敗露,追殺主人公;第八集團為反元義軍,包含“朱元璋”、“常遇春”、“徐達”、“湯和”、“鄧愈”等人,他們雖隸屬明教,但卻是反元義軍中的核心人物,一同對抗元朝暴政;第九集團為武當,包含“張三豐”、“殷梨亭”、“張翠山”、“郭襄”、“覺遠大師”等人,“張三豐”、“郭襄”和“覺遠大師”因九陽神功而結緣,因此被分為同一集團。通過人物的聚類分析,能使讀者對書中各人物間聯系有更為清晰地了解,進而助于理解全文。

圖4 倚天人物聚類圖
為了對小說整體框架及各情節脈絡有更好把握,本文對小說中人物和章節繪制情節演化知識圖譜,如圖5 所示,圖中將書內章節劃分為3 個階段:(a)1-14章、(b)15-27 章、(c)28-40 章,從中發現:
(1)總體情況:從每階段內人物節點和密度可以得知,第一階段節點數量最少且分布零散,第三階段節點規模最大且分布密集,人物數量整體呈上升態勢,符合小說實際情況。其中各階段內人物均有變化,如1-14章中主要人物有“張翠山”、“殷素素”、“張三豐”、“謝遜”、“張無忌”等;15-27 章中主要人物有“張無忌”、“楊逍”、“韋一笑”、“張三豐”、“滅絕師太”等;28-40 章中主要人物有“張無忌”、“趙敏”、“周芷若”、“謝遜”、“楊逍”等。但是“張無忌”、“張三豐”、“謝遜”等人一直都未曾脫離圖譜的核心區域,這表明他們是小說中的主線人物,貫穿起始。
(2)各階段情況:第一階段情節圍繞“張翠山”展開,其與“殷素素”、“謝遜”間連線較粗,聯系緊密,這3人緣起于“屠龍刀”的爭奪,并一同流落至冰火島,又因“張無忌”的出生而義結金蘭,后被六大門派等逼迫,“張翠山”夫婦為守承諾自刎于武當,自此,主人公“張無忌”開始其獨自成長之旅。
第二階段中“張翠山”、“殷素素”、“白龜壽”等節點變小或消失,表明這些人物在后續情節內影響力漸小或已退出故事舞臺,而“趙敏”、“小昭”、“宋青書”等人物開始出現,繼續接著推動情節的發展,相較于第一階段,“張無忌”、“楊逍”、“殷天正”、“滅絕師太”等節點變大,說明他/她們在這一階段的情節中發揮著重要作用,這與書中六大門派圍攻光明頂和被朝廷困于萬安寺等實際情節大約一致。
第三階段,人物節點數快速增加,增長率遠超前兩個階段,各人物間關系也越為密切、復雜。此階段新出現的人物有“陳友諒”、“史火龍”、“渡劫”、“渡厄”等人,其中“陳友諒”曾于靈蛇島和丐幫為難“張無忌”等,是書中反派人物。“渡劫”、“渡厄”、“渡難”三人曾在屠獅大會上負責看守金毛獅王“謝遜”,是少林中老一輩人物。和前兩個階段相比,“趙敏”、“周芷若”節點有明顯變大,且節點規模遠大于“殷離”和“小昭”,符合她們在小說內女一、女二的設定。此外,“謝遜”在書中命運最為坎坷,其節點在三個階段中經歷了大-小-大的起伏變化,但是他和“張三豐”在小說中存在時間最為長久,具有較好的延續性。
本文提出一種共詞分析和層次聚類的方法,通過對小說《倚天屠龍記》中人物構建矩陣和知識圖譜,進而揭示各人物間關系及其動態變化。同時,文中將章節劃分成3 個階段,包括第一階段(1-14 章)、第二階段(15-27 章)、第三階段(28-40 章),借助共詞分析、相關工具和可視化技術對每一階段進行詳盡分析,探究其情節演變態勢。實驗發現,本文方法能夠有效洞悉小說中人物關系和情節發展過程,便于讀者加深對內容的理解,并對其他相關文學作品的研究提供一定的理論支撐和數據支持。