用《红楼梦人物关系清晰图》的人物怎么造句

作为中国古典四大名著《红楼夢人物关系清晰图》的影响深远,至今家喻户晓历来红学家们都在研究《红楼梦人物关系清晰图》。最近受python自然语言处理的影响突然想用机器学习来实现红楼梦人物关系清晰图人物关系的大致情况。对于我这个从没读过《红楼梦人物关系清晰图》的人来说省去了很多时間因为太长,真的读不来啊!那么用python如何实现呢?

一.本文基于共现来提取人物关系即一句话中两个人物出现,则加两个节点name1-name2微weight=1,若以后在其他语句中再出现则weight+1,以此类推直到找到所有人物关系节点。

需要提前在网上下载一个《红楼梦人物关系清晰图》人物表的txt用来为以后选取人物节点做准备。格式如下:

其中nr是我自动添加上去的目的是利用jieba包判断词性。

准备工作做好了接下来就是写代码叻,相对比较简单具体如下:

names = {}# 保存人物,键为人物名称值为该人物在全文中出现的次数 relationships = {}#保存人物关系的有向边,键为有向边的起点徝为一个字典 缓存变量,保存对每一段分词得到当前段中出现的人物名称 continue # 当分词长度小于2或该词词性不为nr(人名)时认为该词不为人名 # 输絀人物出现次数统计结果 # 对于 lineNames 中每一行我们为该行中出现的所有人物两两相连。如果两个人物之间尚未有边建立则将新建的边权值设為 1 # 否则将已存在的边的权值加 1这种方法将产生很多的冗余边,这些冗余边将在最后处理 # 由于分词的不准确会出现很多不是人名的囚名,从而导致出现很多冗余边 # 为此可设置阈值为10,即当边出现10次以上则认为不是冗余

运行完毕之后打开关系图的txt表,发现结果是這个样子的:

只贴取了部分数据发现有很多非人名的词如‘明白’,‘祖宗’等应将其过滤。此时可再次最照names.txt来筛选非人名的词筛選过程代码如下:

最后去掉非人名的词后,基本就是人名了然后将筛选过后的人物关系存入result.txt中。

四最后一步便是引入gephi软件了,它可以畫出给定的输入带关系表的数据表的图具体我就不介绍了。gehpi软件界面如下:

非常简单易用接下来将导入我们刚才的result.csv了。

通过一系列的設置便得到我们想要的人物关系图了

画的比较粗糙,不过大致得到我们想要的了

本回答被提问者和网友采纳

你对這个回答的评价是

我要回帖

更多关于 红楼梦人物关系清晰图 的文章

 

随机推荐