红楼梦出场人物很多,人物关系极其复杂,这次我们用Python来分析主人公贾宝玉和他的姐妹们,金陵十二钗之间的关系,做一个简要的分析。
出场率
由于我们只统计宝玉和十二钗(正册)这些人物,因此我们需要实现准备一个人物名单:
这个后面的nr是表示人物属性,方便分词工具jieba识别。
进行这十三个人物在整本书的出场率统计还是比较简单的,我们只需要在分词结束和统计相关人物出现的频率。值得注意的是,有两个因素可以影响最后的统计准确性:
第一个是分词本身的准确性,比如我们知道林黛玉有个诨号“颦儿”
但是,通过打印我们发现分词结果并没有颦儿,也就是说我们输在了起跑线,林黛玉的出场统计次数将会因为颦儿没有被分词出来而偏低。
第二个是红楼梦人物有多个表达方式,最常见的是文本中有时候会给人物加上姓,如林黛玉;有时候不带上姓,如黛玉。还有贾元春有时候叫贾妃,元妃等:
还有一个典型的例子是红楼诗社成员都有自己的笔名:
黛玉 潇湘妃子
宝钗 蘅芜君
李纨 稻香老农
探春 蕉下客
迎春 菱州
惜春 藕榭
湘云 枕霞旧友
这样的例子非常多。在我们当前的版本代码中,为了编程方便,这些例子都暂时不考虑进去。我们将宝玉加上十二钗出现的图画出来:
宝玉,黛玉,凤姐,宝钗属于一线人物,出场率很高;元春,秦可卿还有巧姐出场章节有限,因此总的出场率很低。
人物关系
我们采用共现的技术来建立人物关系,即一段文字中两个人物出现,则给这两个人物的联系记上一