出场率
由于我们只统计宝玉和十二钗(正册)这些人物,因此我们需要实现准备一个人物名单:
这个后面的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
在这里你可以看到红楼梦几乎所有人物和关键地点之间的联系。
用鼠标点击人物头像后会出现相关介绍:
也可以看到和其他人物之间的关系,和这个人物的主要事件:
可谓是非常详尽了,用来辅助读红楼梦是再好不过了。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有