用 Python 提取《釜山行》人物关系

项目简介:本项目将带大家使用 Python 提取《釜山行》人物关系,对于给定的剧本文本,通过分析文本中人物的共现关系,提取整个文本表示的人物关系,并将人物关系可视化表示。本项目教程由Forec发布在实验楼

一、项目介绍

1. 内容简介

《釜山行》是一部丧尸灾难片,其人物少、关系简单,非常适合我们学习文本处理。这个项目将介绍共现在关系中的提取,使用python编写代码实现对《釜山行》文本的人物关系提取,最终利用Gephi软件对提取的人物关系绘制人物关系图。

2. 知识点

本项目完成过程中将学习:

  • 共现网络的基本原理

  • Python代码对《釜山行》中人物关系提取的具体实现

  • jieba库的基本使用

  • Gephi软件的基本使用

二、项目原理及效果图

实验基于简单共现关系,编写 Python 代码从纯文本中提取出人物关系网络,并用Gephi 将生成的网络可视化。下面介绍共现网络的基本原理。(共现网络英文介绍)

实体间的共现是一种基于统计的信息提取。关系紧密的人物往往会在文本中多段内同时出现,可以通过识别文本中已确定的实体(人名),计算不同实体共同出现的次数和比率。当比率大于某一阈值,我们认为两个实体间存在某种联系。这种联系可以具体细化,但提取过程也更加复杂。因此在此课程只介绍最基础的共现网络。

项目通过Python提取《釜山行》人物关系网络,通过gephi这个软件做可视化处理后,最终效果如下图所示:

用 Python 提取《釜山行》人物关系

三、实验过程

本项目的完整代码、详细步骤及demo,可以在实验楼查看并在线完成:Python基于共现提取《釜山行》人物关系

开发准备:

打开Xfce终端,进入 Code 目录,创建 work 文件夹, 将其作为课程的工作目录。下载并安装 Gephi

$ mkdir work && cd work
$ mkdir gephi && cd gephi
$ wget http://labfile.oss.aliyuncs.com/courses/677/gephi-0.9.1-linux.tar.gz                         #下载
$ tar -zxvf gephi-0.9.1-linux.tar.gz     #解压

下载《釜山行》的中文剧本。

$ wget http://labfile.oss.aliyuncs.com/courses/677/busan.txt

安装jieba中文分词。

$ sudo pip2 install jieba

实验步骤:

1.观察文本结构、准备词典

可以通过各类百科获取《釜山行》的主要人物,你可以在百度百科中找到他们的介绍,并将人名写入一个字典中。

2.确定需要的变量

3.文本中实体识别

在实验楼中的显示结果如下图:

用 Python 提取《釜山行》人物关系

4.根据识别结果构建网络

5.过滤冗余边并输出结果

6.可视化网络

对《釜山行》剧本中的人物关系数据进行处理后,可以使用gephi这个软件来将人物关系可视化,以便展示的更直观。(Gephi是一款开源免费跨平台基于JVM的复杂网络分析软件, 其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测开源工具。)

使用 gephi 导入生成的网络,并生成简单的可视化布局。可以在最上方的数据资料选项卡中查看图中所有的边和节点,对于分词不准确导致的噪音,可以手动删除。

用 Python 提取《釜山行》人物关系

通过对节点染色、放大,调整成合适布局后如下图所示。节点染色根据模块化计算结果不定,但染色效果大致相同。

用 Python 提取《釜山行》人物关系

预览后右侧显示最终的人物关系图。

用 Python 提取《釜山行》人物关系

项目代码下载地址:Python基于共现提取《釜山行》人物关系

更多Python经典项目:Python全部项目