参考http://www.jianshu.com/p/3bd06f8816d7

 
项目原理:
  实验基于简单共现关系,编写 Python 代码从纯文本中提取出人物关系网络,并用Gephi
将生成的网络可视化。下面介绍共现网络的基本原理。(共现网络简单的英文介绍
 
共现网络的基本原理:
  
实体间的共现是是一种基于统计信息的提取,关系密切的人物往往会在文中的多段连续出现,通过文中以出现的实体(人名),计算不同实体共同出现的比率和次数,设定一个阈值,大于该阈值认为实体间存在某种联系。
 
准备:
  1. 环境 windows Python3.6
  2. 模块jieba  https://github.com/fxsjy/jieba
  3. jephi软件

人名字典 
http://labfile.oss.aliyuncs.com/courses/677/dict.txt 

《釜山行》中文剧本 

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


 

代码:

# -*- coding: utf-8 -*-
import

os, sys
import jieba, codecs, math
import jieba.posseg as pseg names = {} # 姓名字典
relationships = {} # 关系字典
lineNames = [] # 每段内人物关系 # count names
jieba.load_userdict("D:\\ResearchContent\\Exercise_Programm\\PythonExercise\\Python\\dict.txt")

# 加载字典
with

codecs.open("D:\\ResearchContent\\Exercise_Programm\\PythonExercise\\Python\\fushan.txt", "r", "utf8") as f

:
for

line in f.readlines()

:

poss = pseg.cut(line)     

# 分词并返回该词词性

lineNames.append([])      

# 为新读入的一段添加人物名称列表
for

w in poss

:
if

w.flag 

!= "nr" or len

(w.word) 

< :
continue # 当分词长度小于2或该词词性不为nr时认为该词不为人名

lineNames[

-

].append(w.word)      

# 为当前段的环境增加一个人物
if

names.get(w.word) 

is None:

names[w.word] = 

0

relationships[w.word] = {}
names[w.word]

+= 1

# 该人物出现次数加 1

# explore relationships
for

line in lineNames:             

# 对于每一段
for

name1 in line

:
for

name2 in line:          

# 每段中的任意两个人
if

name1 == name2:

continue
if

relationships[name1].get(name2) is None:       

# 若两人尚未同时出现则新建项

relationships[name1][name2]= 

1
else:

relationships[name1][name2] = relationships[name1][name2]

+ 1

# 两人共同出现次数加 1

# output
with

codecs.open("busan_node.txt", "w", "gbk") as f

:

f.write("Id Label Weight\r\n")
for name, times in names.items()

:

f.write(name 

+ " " +

name 

+ " " + str

(times) 

+ "

\r\n")

with codecs.open("busan_edge.txt", "w", "gbk") as f

:

f.write("Source Target Weight\r\n")
for name, edges in relationships.items()

:
for

v, w in edges.items()

:
if

w 

> :

f.write(name 

+ " " +

v 

+ " " + str

(w) 

+ "

\r\n")

参考:

共线网络简单英文介绍https://forec.github.io/2016/10/03/co-occurrence-structure-capture/

Python中文分词:结巴分词http://www.cnblogs.com/kaituorensheng/p/3595879.html

import as 解释:https://www.zhihu.com/question/20871904

修改2

Python学习笔记(2) Python提取《釜山行》人物关系的更多相关文章

  1. python学习笔记1--python简介和第一行代码编写

    一.什么是python? python是一种面向对象,解释型语言,它语法简介,容易学习.本节博客就来说说本人学习python的心得体会. 二.python环境安装 目前python版本有python2 ...

  2. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  3. python学习笔记(一):python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  4. python 学习笔记一——Python安装和IDLE使用

    好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...

  5. python学习笔记(python简史)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...

  6. python学习笔记(1)--python特点

    python诞生于复杂的信息系统时代,是计算机时代演进的一种选择. python的特点,通用语言,脚本语言,跨平台语言.这门语言可以用于普适的计算,不局限于某一类应用,通用性是它的最大特点.pytho ...

  7. python学习笔记之——python模块

    1.python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  8. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  9. Python学习笔记五(读取提取写入文件)

    #Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习. import os import re def get_filelist(dir ...

  10. python学习笔记——爬虫中提取网页中的信息

    1 数据类型 网页中的数据类型可分为结构化数据.半结构化数据.非结构化数据三种 1.1 结构化数据 常见的是MySQL,表现为二维形式的数据 1.2 半结构化数据 是结构化数据的一种形式,并不符合关系 ...

随机推荐

  1. Android 手机卫士--导航界面2

    本文地址:http://www.cnblogs.com/wuyudong/p/5947504.html,转载请注明出处. 在之前的文章中,实现了导航界面1布局编写与相关的逻辑代码,如下图所示: 点击“ ...

  2. LintCode389.判断数独是否合法

    LintCode简单题:判断数独是否合法 问题描述: 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项: 一个合法的数独(仅部分填充)并不一定是可解的.我们 ...

  3. 使用gulp解决RequireJS项目前端缓存问题(一)

    1.前言 前端缓存一直是个令人头疼的问题,你有可能见过下面博客园首页的资源文件链接: 有没有发现文件名后面有一串不规则的东东,没错,这就是运用缓存机制,我们今天研究的就是这种东西. 先堵为快,猛戳链接 ...

  4. ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock

    ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock 通过终端安装程序sudo apt-get install xxx时出错:E: Could not ...

  5. WinXP/Win7/Win8本地用户配置文件迁移至域用户

    一.概述 最近在进行加域的工作,PC大部分是Win7,使用过微软USMT 4.0和5.0工具进行迁移,但命令行报错,目前还没找到好的文章研究. 本文迁移方法很特殊,利用的是Windows默认配置文件. ...

  6. .Net中DLL冲突解决(真假美猴王)

    <西游记>中真假美猴王让人着实难以区分,但是我们熟知了其中的细节也不难把他们剥去表象分别出来.对问题不太关心的可以直接调到文中关于.Net文件版本的介绍 问题 最近在编译AKKA.net ...

  7. 【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)

    微信商户通有这么一个需求,用户打开H5页面后,引导用户到电脑下载设计资源包,由于各种内部原因,被告知无后台资源支持,自己折腾了一段时间找了下面2个办法,简单做下笔记. 使用mailto功能,让用户自己 ...

  8. MarkDown+LaTex 数学内容编辑样例收集

    $\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...

  9. Compiler Error Message: CS0016: Could not write to output file 回绝访问

    Compiler Error Message: CS0016: Could not write to output file 'c:\Windows...dll' 拒绝访问 C:\Windows\Te ...

  10. BZOJ 1004 【HNOI2008】 Cards

    题目链接:Cards 听说这道题是染色问题的入门题,于是就去学了一下\(Bunside\)引理和\(P\acute{o}lya\)定理(其实还是没有懂),回来写这道题. 由于题目中保证"任意 ...