红楼梦的作者是谁

简介:

红楼梦的作者是谁?

开谈不说《红楼梦》,读尽诗书也枉然。一曲红楼多少梦,情天情海幻情深。

春梦随云散,飞花逐水流
寄言众儿女,何必觅闲愁

我们国内的红学研究界一直以来也在为谁是红楼梦的作者争论不已。每个人的论点不一,各有各个的论点与论据。其中比较靠谱的有两种说法,一种是红楼梦全书为曹雪芹所著,另一种说法是红楼梦前八十回为曹雪芹著,后四十回为程伟元与高鹗著。
但追究根源,目前没有一种说法是十全十美、毫无瑕疵的,仅目前,红学界公认的普遍观点是《红楼梦》的原作者是曹雪芹,高鄂只是续写者。
《红楼梦》第一回正文中提到,此书经“曹雪芹于悼红轩中披阅十载,增删五次,纂成目录,分出章回”。
然由于早期抄本中脂批透露作批者与曹雪芹及其家族关系紧密,也熟知甚至部分地参与了《红楼梦》的创作,因此脂批可以说是曹雪芹作为《红楼梦》作者的最直接证据,但有些派别认为脂批纯属后来者杜撰,不能作为研究证据。
而在这些证明《红楼梦》作者的方法中,有一种是比较新颖的,就是统计小说的用词频率,即一般人写作总有自己的风格、习惯用语。所以有人通过对比《红楼梦》前八十回与后四十回的用词频率,看是否相同,词频类似于文章的指纹。
 
无独有偶,1983年到1987年,贝尔实验室的Jon Bentley发表了写有趣的系列专栏《Programming Pearls》,Jon在专栏中提出了一个问题:
(写一个程序,找出n个出现最频繁的单词,并在输出结果中显示这些单词出现的次数,最后按次数排序)。
很多人花费了大量的时间解决该问题,但花费的时间与程序效率尚需考虑,同时贝尔实验室的Doug McIlroy提供了一个6步解决方案,
几分钟就可完成编写,效率相当之高,该程序使用Shell脚本编写,以下为脚本全文。


 
 
  1. #! /bin/sh 
  2. # Read a text stream on standard input, and output a list of 
  3. # the n (default: 25) most frequently occurring words and 
  4. # their frequency counts, in order of descending counts, on 
  5. # standard output. 
  6. # Usage: 
  7. #   wf [n] 
  8.  
  9. tr -cs A-Za-z\' '\n' |            Replace nonletters with newlines 
  10.    tr A-Z a-z |                   Map uppercase to lowercase 
  11.       sort |                      Sort the words in ascending order 
  12.          uniq -c |                Eliminate duplicates, showing their counts 
  13.             sort -k1,1nr -k2 |    Sort by descending count, and then by ascending word 
  14.                sed ${1:-25}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  ${1:-25}q             显示前25行,q表示看完25后退出sed程序。


但以上脚本并不适合于中文文档的处理,因为英文单词与单词之间总是存在空格,这样脚本第一步才可以将整篇文档处理为一行一个单词继而通过排序
求词频,这是前提。但中文我们知道汉字与汉字之间是不存在空格的,所以我将以上脚本改写了一下,用以处理中文:


 
 
  1. #!/bin/bash 
  2. for i in {1..80} 
  3. do 
  4.     cut -c$i $1 >>one.txt 
  5.     cut -c$i $2 >>two.txt 
  6. done 
  7. grep "[[:alnum:]]" one.txt > onebak.txt 
  8. grep "[[:alnum:]]" two.txt > twobak.txt 
  9. sort onebak.txt |uniq -c |sort -k1,1n -k2,2n |tail  -30 > oneresult 
  10. sort twobak.txt |uniq -c |sort -k1,1n -k2,2n |tail  -30 > tworesult 
  11. rm -rf one.txt  two.txt  onebak.txt  twobak.txt 
  12. 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数回则得之于“鼓担”,他和高鹗只是“细加厘剔,截长补短”。
从这一记录层面上也可说明,就算后四十回不是作者亲自编排,那么也应该是高鹗等人根据原稿编录而成后四十回,
所以红楼梦前八十回与后四十回语言用词的词频未改,而风格有所变化。

满纸荒唐言,一把辛酸泪!
都云作者痴,谁解其中味?

假作真时真亦假,无为有处有还无。



















本文转自丁丁历险51CTO博客,原文链接:http://blog.51cto.com/manual/939415 ,如需转载请自行联系原作者



相关文章
|
编解码 物联网 API
"揭秘SD文生图的神秘面纱:从选择模型到生成图像,一键解锁你的创意图像世界,你敢来挑战吗?"
【10月更文挑战第14天】Stable Diffusion(SD)文生图功能让用户通过文字描述生成复杂图像。过程包括:选择合适的SD模型(如二次元、2.5D、写实等),编写精准的提示词(正向和反向提示词),设置参数(迭代步数、采样方法、分辨率等),并调用API生成图像。示例代码展示了如何使用Python实现这一过程。
551 4
|
安全 网络安全 数据安全/隐私保护
如何识别和防范网络诈骗?
识别和防范网络诈骗需要我们时刻保持警惕,仔细核实信息,保护好个人信息和财产安全,遇到可疑情况及时与相关机构或警方联系,共同打击网络诈骗行为。
807 13
|
12月前
|
传感器 算法 机器人
定点 CPU 在哪些领域有应用
定点CPU主要应用于对成本和功耗敏感的嵌入式系统中,如消费电子、汽车电子、工业控制和物联网设备等,因其结构简单、效率高而受到青睐。
|
存储 索引
数组的特点
数组是一种线性数据结构,用于存储固定大小的顺序集合。每个元素在数组中都有一个唯一的索引,可以快速访问和修改。数组支持随机访问,但插入和删除操作较慢,因为需要移动后续元素。适用于需要频繁读取数据的场景。
|
数据采集 机器学习/深度学习 人工智能
[大语言模型-论文精读] 利用多样性进行大型语言模型预训练中重要数据的选择
[大语言模型-论文精读] 利用多样性进行大型语言模型预训练中重要数据的选择
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow和PyTorch的实际应用比较
TensorFlow和PyTorch的实际应用比较
317 2
|
机器学习/深度学习 数据采集 人工智能
什么是AI?如何使用AI?本文告诉你
人工智能(AI)是借助计算机技术来模拟与实现人类智慧的一项科技。它涵盖了从感知到语言理解等多方面的能力。AI可划分为弱AI、强AI及超AI三类,当前主要集中在弱AI的应用上,如语音助手和图像识别。为了高效运用AI,首先需清晰目标,再选取合适的工具,同时保证数据质量,不断优化模型,并注重伦理考量,最终实现人机协同作业,充分发挥各自优势。
5125 2
|
存储 安全 算法
密码学原理及其在网络安全中的应用
【7月更文挑战第27天】密码学作为保护信息安全的基石,在网络安全中发挥着不可或缺的作用。通过加密、解密、身份验证、数字签名和哈希函数等技术手段,密码学确保了数据的机密性、完整性和认证性。随着计算能力的不断提升和密码分析技术的不断进步,密码学需要不断创新和发展,以应对新的安全挑战。未来,随着量子计算技术的兴起和后量子密码学的研究深入,密码学将在网络安全领域发挥更加重要的作用。
|
机器学习/深度学习 编解码 自动驾驶
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
418 0
|
机器学习/深度学习 自然语言处理
多语言模型在实际应用中有哪些优势和局限性?
多语言模型在实际应用中有哪些优势和局限性?