python使用Networkx生成人物关系可视化详解

一,先说实现的思路

1,将文本中出现的重要人物名字放入列表中;也可以使用自然语言处理工具将词性标记为‘nr’的词语放入列表中,但一则费时费力二则准确性太差。所以,简单粗暴但高效的做法是直接从搜索引擎中得到主要人物的名称,并将其放入列表中;

2,遍历文本的第一个段落,并检查人物名称是否在此段落中,如果在,将其放入一个空列表中,并使用combination将其转化成人物名称的两两组合;这是很关键的一步,只有得出了人物关系,才可能实现可视化。

3,使用Networkx实现人物关系的可视化,这个操作很简单,但如果想优化节点和线,还是有一些难度的。贴上代码后再详细说明此点。

二,使用到的内置或三方库;

1,set,在遍历文本的每一个段落时,形成的列表中会有多个重复的人物名称,使用set可以去除重复的人名;

2,sorted,为避免形成[A,B]和[B,A]两种本质上相同的关系,使用sorted排序,可以防止出现前述的AB两种关系;

3,itertools库中的combination,[A,B,C]只形成[A,B],[A,C],[B,C]三种关系,符合我们的需求;

4,collections中的Counter,统计每一对关系在列表中出现的次数,形成一个字典;

5,networkx库,使用networkx.draw_circular,让人物以圆的形式排列在图片上。

三,networkx.draw_circular parame

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值