社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python简单实战项目:《冰与火之歌1-5》角色关系图谱构建——人物关系可视化

Python爱好者社区 • 6 年前 • 1284 次点击  

作者:AlanLau    Python爱好者社区专栏作者

简书专栏:https://www.jianshu.com/u/6da6a9668142

csdn博客:https://blog.csdn.net/alanconstantinelau


前文传送门:

Python简单实战项目:《冰与火之歌1-5》角色关系图谱构建——数据库设计


先来张Gephi绘制酷炫的人物关系图

图中每个节点代表一个角色,节点与节点之间的连线代表共现,而连线的粗细表示共现的频次多少。节点的大小以及颜色深浅表示度的大小,即一个角色参与共现的总频次。


现在说说这张图的实现步骤: 


1.对挖掘获取的语料进行角色抽取
2.对出现同一章节的角色进行合并
3.使用步骤2中的数据进行共现矩阵计算
4.利用UCINET、NETDRAW、Gephi对共现矩阵实现可视化。


1.对挖掘获取的语料进行角色抽取


先前原本使用的是jieba和nlpir两种自然语言处理包进行角色抽取的,但是后面发现效果特别差,所有后面则从百度百科上档了一批角色列表下来,那这个与原文本进行比对,实现角色的抽取。 



2.对出现同一章节的角色进行合并


写爬虫的时候就实现一边爬一边对角色进行抽取。



3.使用步骤2中的数据进行共现矩阵计算


读取数据库,使用关键词共现矩阵算法构建矩阵。

算法请参考python构建关键词共现矩阵

http://blog.csdn.net/alanconstantinelau/article/details/69258443

 
共现矩阵



4.利用UCINET、NETDRAW、Gephi对共现矩阵实现可视化


本博客的重点在这里~ 


点击打开UCINET



点击file→Open→选择csv格式的共现矩阵数据 


 

 
成功导入数据后,然后点击file→Save as,将数据保存为.##h后缀格式文件。

 

 
打开netdraw,依次如下图点击,打开刚刚保存的.##h文件 


 

 

 
这个时候其实已经可以发现,netdraw已经把共现网络绘制出来了,但是效果太low了,所以这里使用gephi绘制更好的效果。 


使用gephi之前,需要将netdraw打开的文件另存为.net文件。 




打开运行gephi,使用gephi直接打开刚刚保存的.net后缀文件。


由于是对角色进行简单抽取,角色和角色之间不存在方向传递的性质,因此这里选择无向的。 





如果是中文文本的话,下方的字体也需要改成中文的字体。比如黑体、宋体等。 



 





滤波的作用是对结果进行筛选,这里设置度来作为筛选条件。 




Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”开始学习Python课程

关注后在公众号内回复课程即可获取

小编的Python入门视频课程!!!

崔老师爬虫实战案例免费学习视频。

丘老师数据科学入门指导免费学习视频。

陈老师数据分析报告制作免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

丘老师Python网络爬虫实战免费学习视频。



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/OChUavDSGw
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/9521
 
1284 次点击