加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

相亲遇到喜欢红楼梦的女生!我用Python五分钟就读完了!话题来了

发布时间:2020-12-17 00:57:24 所属栏目:Python 来源:网络整理
导读:“满纸荒唐言,一把辛酸泪。都云作者痴,谁解其中味。” 一直以来,《红楼梦》这部经典名著早已从一部小说演变成一种文化,吸引着无数粉丝和学者来研究。《红楼梦》是一个悲剧,充斥了无奈与悲伤。但却在无绝的悲伤之中透出了摄人心魂的美。这部著作人物众多

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

 

一直以来,《红楼梦》这部经典名著早已从一部小说演变成一种文化,吸引着无数粉丝和学者来研究。《红楼梦》是一个悲剧,充斥了无奈与悲伤。但却在无绝的悲伤之中透出了摄人心魂的美。这部著作人物众多,关系错综复杂,既有十二金钗,又有十二丫环,更有十二家人十二贾氏。作者精心的安排了每个人物的出场与谢幕,似乎每个人都有各自的“荒唐言”,“辛酸泪”。今天我们借助Python的networkx包来绘制一幅红楼人物关系图,顺便重温一下这部经典。

NetworkX用于创造、操作复杂网络,以及学习复杂网络的结构、动力学及其功能。有了NetworkX我们就可以用标准或者不标准的数据格式加载或者存储网络图,也可以产生许多种类的随机网络或经典网络。

小说中人物关系我们是这样计算的:计算出每一回,每一段中二人同时出现的次数。次数越多,表示关系越密切。将数据整理出来,作为关系图谱的原始数据。下面就可以用代码分析作图了。

进群:548377875 ? ?即可获取数十套PDF哦!

由于原始数据中 “凤丫头”,“凤姐”被当作两个人物,我们需要将二者的关系合并。这里用一个简单的函数replace。但替换的时候有一个坑,就是在原数据里直接替换不掉,必须先保存为一个新的文件,再赋值给原文件。费了好大力气才爬出这个坑,下面来调包。

以下是召唤出的关系图谱,坐稳了:

可以看到,处于整个网络中间位置的是宝玉,贾母,王夫人,宝钗等人物,可见他们是作者着墨最多的角色。稍微外圈的人物有黛玉,湘云,晴雯,袭人,凤姐,探春,迎春,平儿,李纨等一众姐姐妹妹。总的来说,距离中心位置的远近代表了人物的重要性。

我们还可以尝试另一种环形关系图,线条越密集代表人物的出场次数越多。

眼睛看花了吧。还可以尝试随机出图,但是个人感觉这种类型的图只显示了关系,不太容易辨认人物的重要性。

以上的图片线条太过密集,很难清楚的区分各种人物关系,怎样让他变得简洁一点?我们来试着修改一下参数。例如,我们把要显示的权重调到0.05以上,这样一些弱关系就不再显示在图上。

这样是不是间接清楚一些了呢?最后的最后,让我们再一次致敬那些演活了红楼的演员们吧,他们是我们心中不可替代的红楼梦!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读