用機器學習的方法鑒別紅樓夢作者

jopen 8年前發布 | 20K 次閱讀 支持向量機 神經網絡

在學界一般認為,《紅樓夢》后 40 回并非曹雪芹所著。本文嘗試應用機器學習的方法來分析原著文本中作者的用詞習慣,從技術角度去說明《紅樓夢》前 80 回和后 40 回的寫作風格差別,繼而可以確認后 40 回非原作者所寫。

項目存放在 reality-of-Dream-of-Red-Mansions

主要原理

每個作者寫作都有自己的用詞習慣和風格,即使是故意模仿也會留下很多痕跡。

在文言文中,文言虛詞分布均勻,書中每個回目都會出現很多文言虛詞,差別在于出現頻率不同,我們把文言虛詞的出現頻率作為特征。

不只文言虛詞,還有其他的詞在所有回目中出現頻率很多。比如對第 80 回進行詞頻統計,得到

了   172
的   142
我   70
寶玉  65
你   61
道   54
他   51
也   50
著   48
是   40
說   38

這些高頻詞匯也可以作為特征向量。

本文將 20~29 回(詩詞曲比較均衡)作為類別 1 的學習樣本,將 110~119 回作為類別 2 的學習樣本。

將兩個類別的特征向量輸入到 SVM(支持向量機) 進行訓練得出一個分類模型。再對剩余回目進行分類,看它們分別偏向于哪個類別。

SVM 相關原理參見 NG 的公開課 Machine Learningscikit-learn 庫

相關學術論文參見

施建軍. (2011). 基于支持向量機技術的《 紅樓夢》 作者研究. 紅樓夢學刊, (5), 35-52.

李賢平. (1978).《紅樓夢》成書新說. 復旦學報(社會科學版).

特征選取

[
 '之', '其', '或', '亦', '方', '于', '即', '皆', '因', '仍', 
 '故', '尚', '呢', '了', '的', '著', '一', '不', '乃', '呀', 
 '嗎', '咧', '啊', '把', '讓', '向', '往', '是', '在', '越', 
 '再', '更', '比', '很', '偏', '別', '好', '可', '便', '就',
 '但', '兒',                  # 42 個文言虛詞
 '又', '也', '都', '要',       # 高頻副詞 
 '這', '那', '你', '我', '他'  # 高頻代詞
 '來', '去', '道', '笑', '說'  #高頻動詞
] 

選取常用的 42 個文言虛詞和通過詞頻統計得到的高頻使用的詞作為特征,分別計算它們在各個回目中出現的頻率作為特征向量。

在源碼中由 modelBuilder.py 中的 build_feature_vector 函數實現。

目錄結構

.
├── README.md
├── textProcesser.py  # 文本處理
├── modelBuilder.py   # 模型建立
├── decisionMaker.py  # 作出判斷
├── neg_trainset.npy  # 正例訓練集
├── pos_trainset.npy  # 負例訓練集
├── trainset.npy      # 訓練集
├── testset.npy       # 測試集
├── text              
│   ├── redmansions.txt # 原著文本
│   ├── chapter-1       # 按章分開,第一章
│   ├── chapter-n
│   ├── chapter-words-1 # 第一章分詞結果
│   ├── chapter-words-n
│   ├── chapter-wordcount-1 # 第一章詞頻統計結果
│   └── chapter-wordcount-n

使用步驟

  • 運行 textProcesser.py ,將原著文本分為章節,分詞,詞頻統計
  • 運行 modelBuilder.py ,對文本章節提取特征向量,建立分類模型
  • 運行 decisionMaker.py ,對文本進行分類

結論

1~80 
[ 1.  1.  1.  1.  1.  2.  2.  1.  1.  2.

                  1. 1.]

81~120 [ 1. 1. 2. 1. 1. 2. 2. 1. 1. 2.

                  1. 2.]</pre>

                    1 指該回目屬于類別 1,2 指該回目屬于類別 2。

    可以得出結論

    • 前 80 回屬于一類,后 40 回屬于一類
    • 80 回左右是分界點
    • 后 40 回風格不同于前 80 回

    81~120 回中有一些被分成了 1 類,這與特征選取有關,還與使用的原著版本有關。這里的版本是網上下的電子版,版本不明,建議使用人民文學出版社 1982 年出版的《紅樓夢》作為研究對象。

    1~80 回有一些被分成了 2 類,可能是后 40 回作者在續寫過程中對部分章節進行了修改。

    參考

    http://scikit-learn.org/stable/modules/svm.html#svm

來自: http://fuzhii.com/2016/01/16/redmansions/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!