前言
这次我们将分析整个红楼梦的社交网络。我们尝试用算法去寻找红楼梦中最重要的人物,最有权势的人物,以及一些关系亲密的小团体。看看都有哪些有趣的发现吧。
社交网络
据统计,红楼梦中出场人数共有四百四十八人。这一次,我们分析大约三百六十人。为了增加统计的准确率,我们将人物的一些不同表达拎出来,放到一个人物中。比如林黛玉,林妹妹,我们都算黛玉;贾宝玉和宝玉合并;王熙凤,凤姐以及凤辣子都算作凤姐。
我们采用共现的技术来建立人物关系,即一段文字中两个人物出现,则给这两个人物的联系记上一笔,若以后在其他语句中再出现,再加上一笔,以此类推,直到找到所有人物关系节点。
最终我们获得了红楼梦三百多个人物的社交网络图:
这里截取的只是一部分,节点中心是贾母,人物之间的联系用灰色的线连起来,加粗灰线连接的节点是和贾母有关系的人。除了主角团,我们可以发现一些和贾母有关联的不常见人物:
(1)下方的贾氏一族,包括宝玉的玩伴,秦可卿的弟弟秦钟。
(2)贾母丈夫贾代善的替身。张道士小时出家,就是为贾家的老祖宗史太君的丈夫当替身,替他出家、消灾。
网络分析
虽然我们获得了全人物的社交网络,但是网络太过错综复杂,不是很好从里面直接提取信息。我们利用Python中的Netowrkx工具,进一步分析。
1.重要人物网络
我们找到红楼中重要人物的网络,这里的重要的人物节点的"度"很大,其实"度"就是人物和别人的交互次数,也就是网络图中节点连出去的线的数量。
我们选出所有"度"超过五十的节点人物,并画出他们的网络:
比较奇怪的是,除了我们常见的贾母,宝玉,黛玉,宝钗还有凤姐,其他人物我们见的似乎没有那么多。我们来看一下这些人物的介绍:
可以发现这些人物的确会经常出现,也和其他人物有频繁互动,不过贾兰的出现有点让人意外。
2.重要人物排行版
如何从社交网络中找出最重要的人物呢,我们可以用网络中的排序算法PageRand解决。PageRank,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。
我们获得了"红楼梦最重要的二十大人物":
Python作为一门不断发展与普及的语言,还在不断更新中。在学习时,建议找一些学习伙伴一起来学习和讨论,效果更佳。如果想学习Python,欢迎加入Python学习交流群(627012464),一起督促,一起学习。里面有开发工具,很多干货和技术资料分享!
贾母,宝玉,黛玉,凤姐不出意外,是最重要几位核心人物。其中黛玉的丫鬟紫鹃和雪雁也出现在里面;贾环和赵姨娘获得二十大人物中的最后两名,好歹也上榜了;尤二姐,荣获第十八名,有点意外。
3.人物权势排行版
谁才是红楼梦中最呼风唤雨的人物呢?有人说是贾母,她是贾家真正的大佬,一手遮天。有人说是宝玉,他是书中最重要的主人公。还有人说是王熙凤,她是贾府的总管,大小事务都由她来管理。我们利用"中心度"这个标准来看一下红楼梦中最有权势的二十大人物吧。
恭喜宝玉获得冠军,凤姐获得亚军。但是这个季军冯紫英着实让人感觉意外:
看来这位隐藏很深的冯先生真是一匹黑马了,不过的确被红学家列为重点研究对象,看来和他的权势重大分不开。
不过,让人意外的是我们的老朋友,甄士隐,贾雨村也上榜了,原因不详。最后,贾环又又又上榜了,真是哪里都少不了他。不过作为贾家的一个公子哥,有点小权,还是可以理解的。
4.社区发现
红楼梦的整个网络错综复杂,但是,物理类聚人以群分,我们尝试用"社区发现算法",看看红楼梦中有没有一些小集团。
第一个图应该是我们贾氏宗族的成员,第二个图是贾琏和尤氏姐妹的故事团体。
结语
这次的分析主要参考一位网友用社交网络算法分析三国演义
我们得到了一些让人意外的有趣结论,但是准确性有待考证。可以考虑提高分词准确率以及社交网络搭建的合理性。