震惊!用Python探索《红楼梦》的人物关系!

网站建设5年前发布
38 0 0

红楼梦 txt 电子书一份。,金陵十二钗 + 贾宝玉 人物名称列表。,该分列表是为了做分词时使用,后面的 nr 就是人名的意思。,首先读取小说;,接下来进行出场次数数据整理;,这样我们就得到了 attr 和 v1 两个数据,内容如下:,2023030520473741bde9538b339e88a5f4171a6bd3026b9f3575801,下面就可以通过 pyecharts 来绘制柱状图了;,2023030520510381c6a07493c85d8bba67803c901a30ed0d9f0e245,数据处理,我们先将读取到内存中的小说内容进行 jieba 分词处理;,通过 load_userdict 将我们上面自定义的词典加载到了 jieba 库中;,接下来进行分词处理;,因为文中"贾妃", "元春","李宫裁", "李纨" 等人物名字混用严重,所以这里做替换处理。,然后使用 jieba 库提供的 pseg 工具来做分词处理,会返回每个分词的词性。,之后做判断,只有符合要求且在我们提供的字典列表里的分词,才会保留。,一个人每出现一次,就会增加一,方便后面画关系图时,人物 node 大小的确定。,对于存在于我们自定义词典的人名,保存到一个临时变量当中 tmpNames。,下面处理每个段落中的人物关系:,对于出现在同一个段落中的人物,我们认为他们是关系紧密的,同时每出现一次,关系增加1。,最后可以把相关信息保存到文件当中。,文件1:人物关系表,包含首先出现的人物、之后出现的人物和一同出现次数。,文件2:人物比重表,包含该人物总体出现次数,出现次数越多,认为所占比重越大。,数据分析,下面我们可以做一些简单的人物关系分析。,这里我们还是使用 pyecharts 绘制图表。,首先把两个文件通过 pandas 读取到内存当中。,对于“宝玉”,由于其占比过大,如果统一进行缩放,会导致其他人物的 node 过小,展示不美观,所以这里先做了一次缩放。,最后我们得到的人物关系图如下:,2023030520473805acf379949dbff5b0e510dfad3a79d3a4875a147,

© 版权声明

相关文章