python人物关系抽取小说_用python分析小说人物关系(一)——理论篇

1、工具介绍

jieba

jieba分词,最好用的开源中文分词工具。他最主要的两个功能是分词和关键词的抽取。在这里,我们需要用他的分词功能来提取文本中的人名。

gephi

gephi是一个开源的复杂网络数据可视化软件,可用于探索数据分析、链路分析、社交网络分析、生物网络分析等。我们需要把数据处理成gephi可接受的csv格式,然后再进行绘制。感兴趣的可以查看使用教程Gephi 入门使用_网络_飞羽的博客-CSDN博客​blog.csdn.net

2、背景

数据处理方式

在词云中,我们只能通过词的大小来了解该词对于文本集是否起关键作用,无法探究人物之间的关系;在关系网图中,不仅可以了解词的关键程度,还能发现人物之间的联系,更能说明问题。由此可见,绘制词云时,我们只需要提取两列数据,一列人名,一列为频率。而绘制网络图时,就需要两组数据。网络图,顾名思义,就是一张图。所有的图都是由节点和边构成的。节点数据也就是节点值+权重,边数据就是出度+入度+权重。

具体处理方式如下:对文本进行针对性分词,统计人物在本文中的出场次数。

以段落为单位进行划分,统计每段中的人物,两两配对后计数,形成粗略的人物关系统计。

数据为gephi特定的csv格式,人物出场次数输出为格式为(Id,Label,Weight),人物关系输出格式为(Source,Target,Weigh)。这也就是之前所说的,用来绘制图的节点和边数据。

可能存在的问题

根据上文描述的统计方法来进行统计显然是粗略的,有很多问题需要进一步考量。以自然段为单位统计人物关系是否合理?真实情况中有很多跨段落的人物关系。

显然利用笛卡尔积来统计人物之间的关系也是有问题的。

人物之前的称呼仅仅是直呼姓名的吗?显然还有多种代词。

结果虽然是粗略的,但是通过对文本的理解,绘制的图依然有一定的参考意义。

实现流程

代码实现分为三步,1. 人物出场次数统计。2. 人物关系统计。3. 格式化输出。

一、准备工作

准备两份字典、用于分词:

文本人物字典

文本人物字典包含了文本中的大部分人名,或者说是我们关心的人物的人名。人物别称映射字典

民国时期的散文,势必每个人会有多个称呼,在文化人中甚多。蕊生、我、兰成、胡先生指代的都是胡兰成。因此需要一个映射字典,将不同的称呼都映射到同一个人名当中。

gephi的安装和使用

gephi和之前使用的wordcloud不同,wordcloud仅仅是一个python的库,直接通过函数调用就可以绘制图片。gephi是一个可视化的应用程序。

需要在https://gephi.org/ 下载windows版的安装包进行安装。

这里我们复制下载链接,用迅雷下载会更快

安装完成后如上图所示

新建工程、导入数据就能得到一个人物关系图谱啦!

下一篇将以《今生今世》实战讲解图谱生成的具体流程

你可能感兴趣的:(python人物关系抽取小说)