红楼梦的作者是谁
紅樓夢的作者是誰?
開談不說《紅樓夢》,讀盡詩書也枉然。一曲紅樓多少夢,情天情海幻情深。
春夢隨云散,飛花逐水流
寄言眾兒女,何必覓閑愁
我們國內的紅學研究界一直以來也在為誰是紅樓夢的作者爭論不已。每個人的論點不一,各有各個的論點與論據。其中比較靠譜的有兩種說法,一種是紅樓夢全書為曹雪芹所著,另一種說法是紅樓夢前八十回為曹雪芹著,后四十回為程偉元與高鶚著。
但追究根源,目前沒有一種說法是十全十美、毫無瑕疵的,僅目前,紅學界公認的普遍觀點是《紅樓夢》的原作者是曹雪芹,高鄂只是續寫者。
《紅樓夢》第一回正文中提到,此書經“曹雪芹于悼紅軒中披閱十載,增刪五次,纂成目錄,分出章回”。
然由于早期抄本中脂批透露作批者與曹雪芹及其家族關系緊密,也熟知甚至部分地參與了《紅樓夢》的創作,因此脂批可以說是曹雪芹作為《紅樓夢》作者的最直接證據,但有些派別認為脂批純屬后來者杜撰,不能作為研究證據。
而在這些證明《紅樓夢》作者的方法中,有一種是比較新穎的,就是統計小說的用詞頻率,即一般人寫作總有自己的風格、習慣用語。所以有人通過對比《紅樓夢》前八十回與后四十回的用詞頻率,看是否相同,詞頻類似于文章的指紋。
?
無獨有偶,1983年到1987年,貝爾實驗室的Jon Bentley發表了寫有趣的系列專欄《Programming Pearls》,Jon在專欄中提出了一個問題:
(寫一個程序,找出n個出現最頻繁的單詞,并在輸出結果中顯示這些單詞出現的次數,最后按次數排序)。
很多人花費了大量的時間解決該問題,但花費的時間與程序效率尚需考慮,同時貝爾實驗室的Doug McIlroy提供了一個6步解決方案,
幾分鐘就可完成編寫,效率相當之高,該程序使用Shell腳本編寫,以下為腳本全文。
腳本說明:
第一步tr? -cs? A-Za-z\'? '\n'??? 的作用將文檔中的非字母轉換為換行符,這里'被認為是字符,因為英文中有I'm這樣的單詞。這步完成后原文將變以一行一個單詞的形式顯示出來;
第二步tr? A-Z? a-z??? ??? ?????? 的作用將文檔的大寫字符全部轉換為小寫字符;
第三步sort??? ??? ??? ?????????? 對處理后的文檔排序;
第四步uniq? -c??? ??? ?????????? 去除重復的單詞且顯示單詞出現的個數;
第五步sort?? -k1,1nr? -k2??????? 按第一列排序(按詞頻排序),n表示以數字格式排序,r表示求倒序,如果第一列的詞頻相同則按后面的單詞繼續排序;
第六步sed? ${1:-25}q??? ???????? 顯示前25行,q表示看完25后退出sed程序。
但以上腳本并不適合于中文文檔的處理,因為英文單詞與單詞之間總是存在空格,這樣腳本第一步才可以將整篇文檔處理為一行一個單詞繼而通過排序
求詞頻,這是前提。但中文我們知道漢字與漢字之間是不存在空格的,所以我將以上腳本改寫了一下,用以處理中文:
腳本說明:
第一步通過循環分別取出兩個文件的80列(一般屏幕顯示字符為80個字符)字符,將文檔變為一行一個漢字輸出至one.txt與two.txt;
第二步由于有些行可能不會80個漢字,則通過grep去除空白行,并導出文檔;
第三步通過sort對漢字排序、取出重復行,顯示詞頻,在通過sort按詞頻排序,這樣通篇文檔所有漢字的詞頻都將顯示,tail的目的為顯示詞頻最高的30個漢字;
第四步通過diff對比兩個文檔的詞頻文件。
運行結果如下:
注意事項:
| 由于是處理中文文檔,所以需要將文檔編碼保存為UTF-8編碼,以上腳本在CentOS5.5中運行正常。 |
結論:
通過以上運行結果的統計信息可以看出,《紅樓夢》前八十回使用最多的30個漢字與后四十回使用最多的30個漢字有很大的重疊性與類似性。足可以從一個側面證明《紅樓夢》全書確是出自同一人之手。
程偉元在120回本《紅樓夢序》中說,后40回中有20余回是他自“藏書家甚至故紙堆”中找到,剩余10數回則得之于“鼓擔”,他和高鶚只是“細加厘剔,截長補短”。
從這一記錄層面上也可說明,就算后四十回不是作者親自編排,那么也應該是高鶚等人根據原稿編錄而成后四十回,
所以紅樓夢前八十回與后四十回語言用詞的詞頻未改,而風格有所變化。
滿紙荒唐言,一把辛酸淚!
都云作者癡,誰解其中味?
假作真時真亦假,無為有處有還無。
本文轉自丁丁歷險51CTO博客,原文鏈接:http://blog.51cto.com/manual/939415?,如需轉載請自行聯系原作者
總結
- 上一篇: 机器学习的一般步骤
- 下一篇: Java 中的 Swing 框架现在是不