导语
在Python分析红楼梦关键词一文中,我们利用jieba分词工具,提取了《红楼梦》120回中的出现次数较高的词,然后用词云工具将结果画了出来。
这一次我们将会更细致分析红楼梦,而且由于jieba分词工具是基于现代白话文而进行分词,可能对红楼梦这种半白半古的文风分析起来有偏差。这里我们借鉴知乎的一篇文章,手动建立分词。
分词词频统计
什么是分词?
众所周知中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如我是一个学生。计算机不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我是 一个 学生。
为了查看分词随着章节的变化,除了分析整本红楼梦,我们还将红楼梦120章回分开来,逐章进行分词分析。我们调取红楼梦中葬花吟的分词结果:
事实上,这和人工分词结果对比准确率有75%左右,但是由于诗词本身分词难度较大,加上我们对分词准确率要求也不比太高,因而我们暂时相信这个分词结果。
利用分词程序得到整本红楼梦以及每一个章节的分词结果后,下一步就是词频统计,这个过程相当于给每个词进行计数出现频率最大的前16名的单词:
你可能会问,为什么黛玉的出场率要比袭人还要低。其实黛玉还有一个单词分身,叫林黛玉,有294次出场。如果将林黛玉出现的频率加到黛玉身上,那么她会超过袭人。这一点同用jieba分词的结果是一致的。
情节变化
现在我们利用每个章节的分词结果,来考察不同关键词随着小说情节变化而发生着怎样的变化。为了排除干扰因素,我们只选词频率最高的100个词中进行分析。
我们首先分析几个人物出场的变化:
可以看出来贾母的出场一直都很高,在第一百一十回史太君寿终归地府,王凤姐力诎失人心,贾母死亡后出场率迅速下降。
薛宝钗大致有两个阶段出场率比较高,一个是前25回到65回左右,这段期间正值贾府势力鼎盛,宝玉和姐妹们在大观园里快乐地生活中。另一个阶段就是95回后,大家安排宝玉和宝钗的婚事,而这时候贾府已然走下没落。
探春的出场在前八十回和后四十回有显著的不同,在八十回,相较于宝玉贾母等人,探春显得相对透明。而在八十回以后出场次数增多,在贾府日渐衰落之际,探春却发挥着越来越重要的作用。这的确验证了探春的一段自白:
作为红楼梦中的搞笑担当,刘姥姥的出场三个阶段十分明显,第6回刘姥姥一进荣国府、39回刘姥姥是信口开河、41回刘姥姥醉卧怡红院、113回忏宿冤凤姐托村妪。虽然刘姥姥出身低微,也因为没见过大场面闹出很多笑话,却在最终挺身而出,患难见真情。
我们还找到了反应情节变化的一个关键词:
Python作为一门不断发展与普及的语言,还在不断更新中。在学习时,建议找一些学习伙伴一起来学习和讨论,效果更佳。如果想学习Python,欢迎加入Python学习交流群(627012464),一起督促,一起学习。里面有开发工具,很多干货和技术资料分享!
这个笑道可谓是见证了贾府兴衰荣辱的核心词汇。在前八十回贾府势盛,大家有说有笑,其乐融融。而之后随着贾府衰败,众人笑声迅速较少,随之而来必是哀嚎嗟叹。
是否是同一个作者
能不能通过词频变化来验证红楼梦是否为同一个作者呢?要想这么做,我们有一个比较靠谱的思路。找到和情节无关的一些典型用词,从而分析作者的用词习惯来观察是否发生了明显的变化。
通过计算一些词汇的方差,我们找到了几个和情节关系很小的词汇:
我们先通过画出频率统计图,初步观察一下:
可以发现,没有这个词在八十回前后有明显频率变化,但是这也有可能是情节需要。
听见这个词在八十回以后迅速增多,由于它和情节并没有太大关联,似乎是因为换了作者而改变了用词风格导致。
所以这个词可以看出来前四十回用的相对较少,而从50回之后频率增多,但不太能看出来八十回前后的重要差距。
从上面举的例子可以看出来,一些用词的确在八十回前后发生了改变,但这不足以证明换了作者这一说。为了更加全面研究,我们并不打算一个个列举这些词汇的变化图,而是采样一种叫做“主成分分析法”的技术来提取和情节无关的词汇的主要特征。通过观察这些特征是否在八十回前后有区别,来判断作者更换一事。
通俗解释主成分分析法,就是假如我们选定的词汇是一幅画的很多碎片片段,通过将这些碎片拼起来,提取主要特征,观察整幅画画的是鹿还是马。
我们提取了三个主要特征,并把每个章回都画在了同一个图上,其中红色的是1-40回,绿色的是41-80回,而蓝色的是81-120回。
从图上可以看出来,蓝色小球有更加聚集的趋势,但这个聚集度,和红色小球的聚集度相比并不是特别明显。所以,我们可以保守称,数据分析结果显示,有可能更换了作者。从这一点可以看出来,高鹗的确花了不少功夫续写红楼梦,至少在用词上面没有让差距太大。当然,还有一种解释是,由于高鹗要统筹全书,他会把前面章节一些不符合自己用词习惯的词汇进行改写,同时也不影响情节。
网友评论