





摘要:隨著互聯(lián)網(wǎng)技術(shù)的普及,信息呈指數(shù)級增長,如何從大量文本中挖掘有價值的信息一直是文本分析研究的主題。本文使用Python技術(shù)對《紅樓夢》從基本信息統(tǒng)計、詞頻云圖繪制、人物關(guān)系分析、章回聚類分析等方面做可視化分析,挖掘小說文本中隱蔽性信息。與傳統(tǒng)文學(xué)作品分析方法相比,該數(shù)據(jù)挖掘的定量分析方法可以高效獲取文本文獻(xiàn)中有潛在性的信息,具有一定的普適性和應(yīng)用價值。
關(guān)鍵詞:紅樓夢;文本分析;Python技術(shù);jieba庫;聚類分析
中圖分類號:I207.411文獻(xiàn)標(biāo)識碼:A
隨著計算機(jī)技術(shù)不斷發(fā)展,世界上的主要語言都建立了許多對應(yīng)不同規(guī)模和類型的語料庫,語料庫語言學(xué)在近些年也得到了快速發(fā)展,并不斷趨于成熟、完善。國內(nèi)Ant Conc、TreeTagger語料庫在文本分析方面使用較為廣泛,但是這些軟件不能對中文文本的研究提供精確支持[1]。隨著大數(shù)據(jù)技術(shù)的普及,研究者開始應(yīng)用數(shù)據(jù)挖掘等技術(shù)解決中文文本分析遇到的問題。數(shù)據(jù)挖掘技術(shù)典型的代表之一就是Python語言的出現(xiàn),Python相對于其他專用的文本分析軟件更具有靈活性[2],可以利用Pyecharts、Networkx等第三方庫對文本數(shù)據(jù)進(jìn)行可視化分析。
《紅樓夢》作為古典四大名著之一,塑造了許多經(jīng)典人物形象,是五千年文化傳統(tǒng)沉淀的百科全書。傳統(tǒng)文學(xué)作品文本分析主要是發(fā)現(xiàn)文學(xué)作品的價值,判斷小說當(dāng)中的社會結(jié)構(gòu)與實(shí)際社會結(jié)構(gòu)的相似度,而這種分析依靠的是讀者自身對文學(xué)作品的理解與思考,僅僅采用梳理方式完成,對于文本數(shù)據(jù)潛在的信息無法探知,采用文本數(shù)據(jù)挖掘技術(shù)正是彌補(bǔ)這一問題的有效手段之一。本研究使用Python數(shù)據(jù)挖掘技術(shù)對《紅樓夢》文本潛在信息進(jìn)行簡要可視化分析與展示,有助于讀者更好去理解小說的文本內(nèi)容。
1 《紅樓夢》文本基本信息統(tǒng)計
導(dǎo)入“紅樓夢.txt”文件數(shù)據(jù),首先對數(shù)據(jù)進(jìn)行清洗預(yù)處理。隨后,可以通過編寫代碼實(shí)現(xiàn)提取出自己需要的信息,例如輸入相關(guān)代碼,統(tǒng)計整個文本中出現(xiàn)“笑”或“喜”“悲”或“哭”的頻數(shù),如圖1所示。通過梳理可以看到,后三十回文中出現(xiàn)的笑和喜明顯減少,悲和哭的次數(shù)明顯增加。可以看到《紅樓夢》在后三十回中的人物命運(yùn)開始逐步走向悲慘,整個作品情感基調(diào)出現(xiàn)了轉(zhuǎn)折,不再是前八十回中那些歡快場景描寫中的喜,行文思路出現(xiàn)轉(zhuǎn)折,更值得研究者去探究、去思考,符合脂硯齋的批語:“按此回之文固妙,然未見后之三十回,猶不見此之妙。”這樣直觀統(tǒng)計分析更加清楚明了,讓讀者了解文章整體思路,便于對文學(xué)作品的理解與掌握。
2 《紅樓夢》文本詞頻統(tǒng)計
《紅樓夢》整本書字?jǐn)?shù)是731017字,這么多文字中,哪些詞語出現(xiàn)的次數(shù)多呢?如果單純依靠讀者自己梳理,需要大量的時間去整理。利用Python中第三方j(luò)ieba庫進(jìn)行分詞統(tǒng)計,可以快速梳理出一些詞頻信息。同時,由于《紅樓夢》中人物的各種稱謂較多,同一人出現(xiàn)多種稱謂,例如“寶釵”“薛寶釵”等稱謂指的是同一人。因此,需要研究者將分詞后的詞語導(dǎo)出來,進(jìn)行合并或者實(shí)體鏈接。為了更加進(jìn)一步讓讀者清楚直觀地看到文中出現(xiàn)頻率較高的詞語,可以借助Python的第三方Wordcloud庫完成文本數(shù)據(jù)分析的云圖繪制。通過繪制云圖可視化展示,更加清楚直觀地展示出高頻詞匯,具體如圖2所示。從繪制出云圖結(jié)果可以清晰地看到,文中出現(xiàn)頻率最高的是寶玉、王夫人(王熙鳳的姑姑)、賈母、賈璉、鳳姐等詞語。云圖中字體字號越大,說明其出現(xiàn)頻率越高。
3 《紅樓夢》文本人物關(guān)系分析
一部好的作品大多是塑造了典型的人物形象,在進(jìn)行文學(xué)作品分析研究時,除了要發(fā)現(xiàn)文學(xué)作品的價值,還需要分析文學(xué)作品中人物的關(guān)系。優(yōu)秀的小說中人物社會結(jié)構(gòu)能夠反映當(dāng)時現(xiàn)實(shí)世界的特征,同時反映出人物在整個社會網(wǎng)絡(luò)中關(guān)系緊密度、社會地位和主次關(guān)系等。《紅樓夢》是一本鴻篇巨著,里面出現(xiàn)了900多位人物,重點(diǎn)人物129位,人物關(guān)系錯綜復(fù)雜,每個人物各具特色。全書這些人物誰出場最多、人物之間又存在什么樣的關(guān)系等一直是讀者關(guān)注的話題。數(shù)據(jù)挖掘技術(shù)可以清晰客觀地表現(xiàn)出人物關(guān)系網(wǎng)絡(luò)的真實(shí)面貌,例如,林峰等使用社會網(wǎng)絡(luò)分析法把《紅樓夢》文本中出現(xiàn)的主要人物名字位置當(dāng)做人際關(guān)系距離量化指標(biāo),采用Pajek軟件繪制人物關(guān)系網(wǎng)絡(luò)圖[3];李卓宇等將《紅樓夢》小說采用復(fù)雜網(wǎng)絡(luò)方法對人物關(guān)系進(jìn)行建模,利用Networkx軟件包計算網(wǎng)絡(luò)指標(biāo)分析網(wǎng)絡(luò)的結(jié)構(gòu)特性[4]。本研究選擇Python的第三方庫Networkx庫對數(shù)據(jù)實(shí)現(xiàn)網(wǎng)絡(luò)建模,該庫能夠?qū)μ匦晕谋具M(jìn)行處理和分析,利用共現(xiàn)關(guān)系獲取一些人物關(guān)鍵詞之間的網(wǎng)絡(luò)關(guān)系。
對《紅樓夢》整個文本的社交網(wǎng)絡(luò)分析后發(fā)現(xiàn),其中人物的社交網(wǎng)絡(luò)有3240人,如果安排傳統(tǒng)的文本研究者把這些人物節(jié)點(diǎn)以及之間的關(guān)系繪制出來,實(shí)現(xiàn)起來是十分艱難的,但利用Python技術(shù)可以簡單快速地將其呈現(xiàn)出來,輸出社交網(wǎng)絡(luò)結(jié)果如圖3所示。從圖中的節(jié)點(diǎn)可以看出,處于中心節(jié)點(diǎn)的人物是重要人物,與其他節(jié)點(diǎn)的人物交點(diǎn)較多。從圖中可以看出寶玉、寶釵、王夫人、賈母、襲人、賈璉等人物處于中心節(jié)點(diǎn),度值相對較大,是整本書的重要人物,處于主要地位,這個分析結(jié)果與前面人物熱點(diǎn)詞頻統(tǒng)計結(jié)果基本相符。通過社會網(wǎng)絡(luò)分析也可以看出,這些人物和其他人物均有交互關(guān)系,說明整本小說的行文思路基本圍繞這些人物展開。同時,可以用其他方式展示文本中人物的社交關(guān)系,如圖4所示。圖中的線代表兩個人物之間存在交互關(guān)系,其中線越粗代表兩者交互場景越多。當(dāng)然,如果更想進(jìn)一步了解每個章回中人物關(guān)系,可以選擇章回中人物文本數(shù)據(jù)進(jìn)行分析。
4 《紅樓夢》文本各章回聚類分析
對于任何一個復(fù)雜的網(wǎng)絡(luò)而言,當(dāng)中的節(jié)點(diǎn)會表現(xiàn)出集群的特性。本研究的網(wǎng)絡(luò)聚類分別采用K-means聚類和層級聚類進(jìn)行分析探究。K-means聚類在使用過程中需要制定聚類的簇數(shù),然后將樣本向量中距離近的點(diǎn)聚類到一組中。在假定要聚類的每個小組中有一個中心點(diǎn),K-means算法的目的就是找到這些中心點(diǎn)的坐標(biāo),使得所有樣本向量到其分組中心點(diǎn)的距離平方和最小[5]。對于K-means聚類首先要進(jìn)行的就是構(gòu)建語料庫,并計算文本文檔詞的TF-IDF矩陣,如圖5左側(cè)所示。隨后,采用K-means聚類分析,例如調(diào)節(jié)聚類的簇為2,對于《紅樓夢》章回聚類結(jié)果如圖5所示。從圖中可以看到第六回、第三十九回、第四十回、第四十一回、第四十二回、第一百一十三回等零散分布為一類,其他聚類為一類。回歸到文本中,細(xì)讀文本可以發(fā)現(xiàn),文中對于劉姥姥出場描寫恰恰出現(xiàn)在第六回、第三十九回、第四十回、第四十一回、第四十二回、第一百一十三回。其中,第六回為劉姥姥初次進(jìn)榮國府,主要對劉姥姥人物出場以及進(jìn)賈府的原因進(jìn)行描述;第三十九至四十二回,是大家所熟知的內(nèi)容,主要是以劉姥姥視角描寫她初次進(jìn)大觀園的經(jīng)歷,是作者著重描述的部分;第一百一十三回,主要寫賈府?dāng)÷浜螅瑒⒗牙言龠M(jìn)賈府探親、救助巧姐等。通過章回的聚類可以幫助讀者進(jìn)一步梳理文本的思路和主線,能夠提高文本分析研究的效率。
層次聚類分析是通過計算不同類別數(shù)據(jù)點(diǎn)間的相似度來創(chuàng)建一棵有層次的嵌套聚類樹。在聚類樹中,不同類別的原始數(shù)據(jù)點(diǎn)是樹的最低層,樹的頂層是一個聚類的根節(jié)點(diǎn)。通過層級聚類可以看出聚類的結(jié)果呈現(xiàn)多層級,聚類的根節(jié)點(diǎn)有兩個,和K-means聚類維度為2的結(jié)果較為相似。但是除了從根節(jié)點(diǎn)看出兩個維度外,其他層級聚類結(jié)果也可視化展示出來,比K-means聚類呈現(xiàn)效果較好,如圖6所示。讀者如果需要進(jìn)一步研究,可以借助聚類后的結(jié)果,細(xì)讀同類章回的內(nèi)容,尋找其共性特征。
結(jié)語
如果讀者依靠傳統(tǒng)文本研究方法對小說進(jìn)行分析,每個讀者的理解和認(rèn)知不同,可能得出結(jié)果不太一樣,出現(xiàn)“千人千面”的現(xiàn)象。同時,由于小說涉及人物、情節(jié)等較為復(fù)雜,很多讀者往往會因?yàn)槲谋咎^錯綜復(fù)雜而放棄梳理。Python技術(shù)對于文本分析過程不同于人的常規(guī)思維,以計算機(jī)的思維方式或視角挖掘數(shù)據(jù)隱含的信息。只要研究分析者采用的方法合理科學(xué),呈現(xiàn)出的數(shù)據(jù)比人為分析結(jié)果更加能體現(xiàn)數(shù)據(jù)的準(zhǔn)確性,能夠減少研究者人為在解讀文本中出現(xiàn)過度解讀的情況。本研究利用Python技術(shù)實(shí)現(xiàn)了對《紅樓夢》小說文本的分析研究,結(jié)合jieba、Networkx庫對整本小說的文本從基本信息統(tǒng)計、詞頻統(tǒng)計及詞頻云圖繪制、人物關(guān)系分析、章回聚類分析等進(jìn)行挖
圖6 各章回層次聚類結(jié)果圖
掘,完成了《紅樓夢》章回字節(jié)數(shù)統(tǒng)計和喜悲字?jǐn)?shù)統(tǒng)計圖、詞頻統(tǒng)計云圖、人物社交全景圖、章回K-means聚類等可視化數(shù)據(jù)分析。本文所采用的研究方法適合于整個文本,也適合與任何一個章回的分析,通過文本挖掘的可視化分析可以幫助人們更加清晰地理解小說,在小說文本數(shù)據(jù)分析方面具有普適性。
參考文獻(xiàn):
[1]王天奇,管新潮.語料庫語言學(xué)研究的技術(shù)拓展——《Python文本分析:用可實(shí)現(xiàn)的方法挖掘數(shù)據(jù)價值》評介[J].外語電化教學(xué),2017,177(05):93-96.
[2]肖剛,張良均.Python中文自然語言處理基礎(chǔ)與實(shí)踐[M].北京:人民郵電出版社,2022.
[3]林峰,趙廣平,林娜,等.《紅樓夢》文本的社會網(wǎng)絡(luò)結(jié)構(gòu)分析[J].石家莊鐵道大學(xué)學(xué)報(社會科學(xué)版),2018,12(01):58-63.
[4]李卓宇,馬樂榮,何進(jìn)榮.基于復(fù)雜網(wǎng)絡(luò)的人物關(guān)系建模研究——以《紅樓夢》為例[J].現(xiàn)代信息科技,2021,5(03):1-4+8.
[5]巫芯宇.基于FTRM模型和K-means算法的大學(xué)生知識付費(fèi)產(chǎn)品使用行為研究[J].西南大學(xué)學(xué)報(自然科學(xué)版),2021,43(06):195-204.
作者簡介:唐明珍(1990—),女,漢族,陜西安康人,碩士,中級職稱,研究方向:教學(xué)法研究、文本分析研究。