趙金暉
摘 要:《紅樓夢》的作者問題一直是“紅學研究”的熱點。其中前80回和后40回分別由曹雪芹和高鶚所書的說法廣為流傳。通過直接調用數據分析的軟件可以直觀地看到結果,但并不能展示細節。文章將應用模糊層次聚類的方法,并詳細展示主要步驟,比起均值聚類,文中的方法更加貼近于人的思維,便于理解和學習,研究者可以通過訓練,熟練掌握文本處理、矩陣運算和編程等技巧。
關鍵詞:python;層次聚類;模糊數學;紅樓夢
《紅樓夢》的作者問題一直是紅學研究的熱點。多位作者、不同時期的寫作都可能是《紅樓夢》全本風格不一的原因。其中前80回和后40回分別由曹雪芹和高鶚所書的說法廣為流傳。文章對這一假說進行簡單的驗證。本文取1—70回和86—120回進行聚類得出標準模型,并用余下的71—85回測試標準模型并驗證所選的關于《紅樓夢》作者的假說。
1 驗證準備步驟
驗證準備工作主要分為以下6個步驟。
(1)分章存儲《紅樓夢》全本;(2)分詞后獲取各章節共有的詞;(3)得到章節間聯系的模糊矩陣;(4)自下而上的層次聚類分析;(5)得到并驗證標準模型;(6)掃描二維碼(見圖1)查看代碼和處理結果。
2 文本處理
利用正則表達式獲取《紅樓夢》各章標題,以字典的形式分章存儲紅樓夢,key為標題,value為每章文本。對全本和各章進行分詞后獲取公共的詞列表,共114個。統計公共詞個數,得到長度為114的各章向量,如表1所示。
3 模糊向量和模糊矩陣
求1—70回和86—120回模糊向量集合List_for_matrix_index和章節間直接聯系的模糊矩陣Direct_relation_matrix[i][j]。
4 聚類
數據準備完畢,開始聚類過程。設置閾值從1開始按0.000 1的步長逐漸減小,進行自下而上的聚類,當截矩陣(Cut_matrix)發生變化,以列表的形式存儲閾值(Change_level_l)st)和新的截矩陣(Level_matrix_list)。
各截矩陣相減得到的布爾矩陣(New_relation_matrix)是向上聚類的依據,存儲New_relation_matrix到New_relation_matrix_list。=1時,截矩陣對角線全為1其余為零,分成105類。
5 標準模型和假說驗證
分別取1—70回和86—120回的平均向量為標準模型,計算71—85回到標準模型的距離效果比計算貼近度的效果更好,比較71—85各章到標準模型的距離,取小得['曹', '曹', '曹', '高', '曹', '曹', '曹', '曹', '曹', '曹', '高', '高', '高', '高', '高'],只有第74章判斷錯誤,結果良好,由此可以簡單驗證《紅樓夢》前80回和后40回不是同一人所寫。
6 結語
本文在項目中應用模糊數學知識和Python編程語言。在實踐中反復訓練了文本處理、矩陣運算和編程技巧等,加深了對模糊向量和模糊矩陣的認識,初步掌握了模糊層次聚類的方法和應用,驗證紅樓夢前80回后40回是否為同一人所寫僅僅是模糊數學的小小應用,通過模糊數學這一方法,我們可以發現更多意想不到的有趣的關聯規則。
[參考文獻]
[1]施建軍.關于以《紅樓夢》120回為樣本進行其作者聚類分析的可信度問題研究[J].紅樓夢學刊,2010(5):318-335.
[2]肖天久,劉穎.《紅樓夢》詞和N元文法分析[J].現代圖書情報技術,2015(4):50-57.
[3]葉雷.基于計量文體特征聚類的《紅樓夢》作者分析[J].紅樓夢學刊,2016(5):312-324.