美文网首页Python新世界
相亲遇到喜欢红楼梦的女生!我用Python五分钟就读完了!话题来

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

作者: 919b0c54458f | 来源:发表于2018-09-28 14:36 被阅读48次

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

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

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

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

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

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

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

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

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

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

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

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/cahpoftx.html