前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python分析红楼梦,宝玉和十二钗的人物关系

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

作者头像
HuangWeiAI
发布2019-08-19 15:28:59
2.2K0
发布2019-08-19 15:28:59
举报
文章被收录于专栏:浊酒清味浊酒清味
红楼梦出场人物很多,人物关系极其复杂,这次我们用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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浊酒清味 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档