Python分析红楼梦,宝玉和十二钗的人物关系

红楼梦出场人物很多,人物关系极其复杂,这次我们用Python来分析主人公贾宝玉和他的姐妹们,金陵十二钗之间的关系,做一个简要的分析。

出场率

由于我们只统计宝玉和十二钗(正册)这些人物,因此我们需要实现准备一个人物名单:

这个后面的nr是表示人物属性,方便分词工具jieba识别。

进行这十三个人物在整本书的出场率统计还是比较简单的,我们只需要在分词结束和统计相关人物出现的频率。值得注意的是,有两个因素可以影响最后的统计准确性:

第一个是分词本身的准确性,比如我们知道林黛玉有个诨号“颦儿”

但是,通过打印我们发现分词结果并没有颦儿,也就是说我们输在了起跑线,林黛玉的出场统计次数将会因为颦儿没有被分词出来而偏低。

第二个是红楼梦人物有多个表达方式,最常见的是文本中有时候会给人物加上姓,如林黛玉;有时候不带上姓,如黛玉。还有贾元春有时候叫贾妃,元妃等:

还有一个典型的例子是红楼诗社成员都有自己的笔名:

黛玉 潇湘妃子

宝钗 蘅芜君

李纨 稻香老农 探春 蕉下客

迎春 菱州

惜春 藕榭

湘云 枕霞旧友

这样的例子非常多。在我们当前的版本代码中,为了编程方便,这些例子都暂时不考虑进去。我们将宝玉加上十二钗出现的图画出来:

宝玉,黛玉,凤姐,宝钗属于一线人物,出场率很高;元春,秦可卿还有巧姐出场章节有限,因此总的出场率很低。

人物关系

我们采用共现的技术来建立人物关系,即一段文字中两个人物出现,则给这两个人物的联系记上一笔,若以后在其他语句中再出现,再加上一笔,以此类推,直到找到所有人物关系节点。

我们使用Python中Echarts将人物关系网画出来:

这里圆圈的大小代表人物出场的频率,通过将鼠标发在两个人物之间的边上面,可以显示人物之间关联的次数:

可以看出来,宝玉和十二钗的关系十分紧密,尤其是黛玉,宝钗,凤姐。而这些人之间互动也十分频繁。剩下的一些边缘人物仅仅和主角团有互动,他们之间的互动相对很少,或者没有。

参考代码:

https://github.com/zhouwei713/data_analysis/tree/master/honglou

大家如果跑这个代码,可能遇到一个技术问题,就是Excel打开'utf-8'编码的csv文件出现乱码,一个非常简便的解决方法是:选择用记事本打开,再另存为csv文件。

人物关系网大全

上面展示的分析仅仅是宝玉和十二钗之间的简单分析,并不能看到整个红楼梦的全貌,这里给大家分享一个人物关系网大全:

https://grapheco.github.io/InteractiveGraph/dist/examples/example1.html

在这里你可以看到红楼梦几乎所有人物和关键地点之间的联系。

用鼠标点击人物头像后会出现相关介绍:

也可以看到和其他人物之间的关系,和这个人物的主要事件:

可谓是非常详尽了,用来辅助读红楼梦是再好不过了。

原文发布于微信公众号 - 浊酒清味(gh_39aead19f756)

原文发表时间:2019-08-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券