紅樓夢的作者是誰?
開談不說《紅樓夢》,讀盡詩書也枉然。一曲紅樓多少夢,情天情海幻情深。
春夢隨雲散,飛花逐水流
寄言眾兒女,何必覓閒愁
我們國內的紅學研究界一直以來也在為誰是紅樓夢的作者爭論不已。每個人的論點不一,各有各個的論點與論據。其中比較靠譜的有兩種說法,一種是紅樓夢全書為曹雪芹所著,另一種說法是紅樓夢前八十回為曹雪芹著,後四十回為程偉元與高鶚著。
但追究根源,目前沒有一種說法是十全十美、毫無瑕疵的,僅目前,紅學界公認的普遍觀點是《紅樓夢》的原作者是曹雪芹,高鄂只是續寫者。
《紅樓夢》第一回正文中提到,此書經「曹雪芹於悼紅軒中披閱十載,增刪五次,纂成目錄,分出章回」。
然由於早期抄本中脂批透露作批者與曹雪芹及其家族關係緊密,也熟知甚至部分地參與了《紅樓夢》的創作,因此脂批可以說是曹雪芹作為《紅樓夢》作者的最直接證據,但有些派別認為脂批純屬後來者杜撰,不能作為研究證據。
而在這些證明《紅樓夢》作者的方法中,有一種是比較新穎的,就是統計**的用詞頻率,即一般人寫作總有自己的風格、習慣用語。所以有人通過對比《紅樓夢》前八十回與後四十回的用詞頻率,看是否相同,詞頻類似於文章的指紋。
無獨有偶,2023年到2023年,貝爾實驗室的jon bentley發表了寫有趣的系列專欄《programming pearls》,jon在專欄中提出了乙個問題:
(寫乙個程式,找出n個出現最頻繁的單詞,並在輸出結果中顯示這些單詞出現的次數,最後按次數排序)。
很多人花費了大量的時間解決該問題,但花費的時間與程式效率尚需考慮,同時貝爾實驗室的doug mcilroy提供了乙個6步解決方案,
幾分鐘就可完成編寫,效率相當之高,該程式使用shell指令碼編寫,以下為指令碼全文。
#! /bin/sh# read a text stream on standard input, and output a list of
# the n (default: 25) most frequently occurring words and
# their frequency counts, in order of descending counts, on
# standard output.
# # usage:
# wf [n]
tr -cs a-za-z\' '\n' | replace nonletters with newlines
tr a-z a-z | map uppercase to lowercase
sort | sort the words in ascending order
uniq -c | eliminate duplicates, showing their counts
sort -k1,1nr -k2 | sort by descending count, and then by ascending word
sed $q print only the first n (default: 25) lines
指令碼說明:
第一步tr -cs a-za-z\' '\n' 的作用將文件中的非字母轉換為換行符,這裡'被認為是字元,因為英文中有i'm這樣的單詞。這步完成後原文將變以一行乙個單詞的形式顯示出來;
第二步tr a-z a-z 的作用將文件的大寫字元全部轉換為小寫字元;
第三步sort 對處理後的文件排序;
第四步uniq -c 去除重複的單詞且顯示單詞出現的個數;
第五步sort -k1,1nr -k2 按第一列排序(按詞頻排序),n表示以數字格式排序,r表示求倒序,如果第一列的詞頻相同則按後面的單詞繼續排序;
第六步sed $q 顯示前25行,q表示看完25後退出sed程式。
但以上指令碼並不適合於中文文件的處理,因為英文單詞與單詞之間總是存在空格,這樣指令碼第一步才可以將整篇文件處理為一行乙個單詞繼而通過排序
求詞頻,這是前提。但中文我們知道漢字與漢字之間是不存在空格的,所以我將以上指令碼改寫了一下,用以處理中文:
#!/bin/bashfor i in
do cut -c$i $1 >
>
one.txt
cut -c$i $2 >
>
two.txt
done
grep "[[:alnum:]]" one.txt >
onebak.txt
grep "[[:alnum:]]" two.txt >
twobak.txt
sort onebak.txt |uniq -c |sort -k1,1n -k2,2n |tail -30 >
oneresult
sort twobak.txt |uniq -c |sort -k1,1n -k2,2n |tail -30 >
tworesult
rm -rf one.txt two.txt onebak.txt twobak.txt
vimdiff oneresult tworesult
指令碼說明:
第一步通過迴圈分別取出兩個檔案的80列(一般螢幕顯示字元為80個字元)字元,將文件變為一行乙個漢字輸出至one.txt與two.txt;
第二步由於有些行可能不會80個漢字,則通過grep去除空白行,並匯出文件;
第三步通過sort對漢字排序、取出重複行,顯示詞頻,在通過sort按詞頻排序,這樣通篇文件所有漢字的詞頻都將顯示,tail的目的為顯示詞頻最高的30個漢字;
第四步通過diff對比兩個文件的詞頻檔案。
執行結果如下:
注意事項:
由於是處理中文文件,所以需要將文件編碼儲存為utf-8編碼,以上指令碼在centos5.5中執行正常。
結論:通過以上執行結果的統計資訊可以看出,《紅樓夢》前八十回使用最多的30個漢字與後四十回使用最多的30個漢字有很大的重疊性與類似性。足可以從乙個側面證明《紅樓夢》全書確是出自同一人之手。
程偉元在120回本《紅樓夢序》中說,後40回中有20餘回是他自「藏書家甚至故紙堆」中找到,剩餘10數回則得之於「鼓擔」,他和高鶚只是「細加釐剔,截長補短」。
從這一記錄層面上也可說明,就算後四十回不是作者親自編排,那麼也應該是高鶚等人根據原稿編錄而成後四十回,
所以紅樓夢前八十回與後四十回語言用詞的詞頻未改,而風格有所變化。
滿紙荒唐言,一把辛酸淚!
都雲作者痴,誰解其中味?
假作真時真亦假,無為有處有還無。
紅樓夢的作者是誰
紅樓夢的作者是誰?開談不說 紅樓夢 讀盡詩書也枉然。一曲紅樓多少夢,情天情海幻情深。春夢隨雲散,飛花逐水流 寄言眾兒女,何必覓閒愁 我們國內的紅學研究界一直以來也在為誰是紅樓夢的作者爭論不已。每個人的論點不一,各有各個的論點與論據。其中比較靠譜的有兩種說法,一種是紅樓夢全書為曹雪芹所著,另一種說法是...
紅樓夢的作者是誰
紅樓夢的作者是誰?開談不說 紅樓夢 讀盡詩書也枉然。一曲紅樓多少夢,情天情海幻情深。春夢隨雲散,飛花逐水流 寄言眾兒女,何必覓閒愁 我們國內的紅學研究界一直以來也在為誰是紅樓夢的作者爭論不已。每個人的論點不一,各有各個的論點與論據。其中比較靠譜的有兩種說法,一種是紅樓夢全書為曹雪芹所著,另一種說法是...
紅樓夢詩詞
紅樓夢詩詞 敦煌春秋 葬花吟花謝花飛飛滿天,紅消香斷有誰憐?游絲系飄春榭,落絮輕沾撲繡簾。閨中女兒惜春暮,愁緒滿懷無釋處。手把花鋤出繡簾,忍踏落花來復去?柳絲榆莢自芳菲,不管桃飄與李飛。桃李明年能再發,明年閨中知有誰?三月香巢已壘成,梁間燕子太無情。明年花髮雖可啄,卻不道人去梁空巢也傾。一年三百六十...