Python学习笔记(2) Python提取《釜山行》人物关系
参考:http://www.jianshu.com/p/3bd06f8816d7
将生成的网络可视化。下面介绍共现网络的基本原理。(共现网络简单的英文介绍)
实体间的共现是是一种基于统计信息的提取,关系密切的人物往往会在文中的多段连续出现,通过文中以出现的实体(人名),计算不同实体共同出现的比率和次数,设定一个阈值,大于该阈值认为实体间存在某种联系。
- 环境 windows Python3.6
- 模块jieba https://github.com/fxsjy/jieba
- 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提取《釜山行》人物关系的更多相关文章
- python学习笔记1--python简介和第一行代码编写
一.什么是python? python是一种面向对象,解释型语言,它语法简介,容易学习.本节博客就来说说本人学习python的心得体会. 二.python环境安装 目前python版本有python2 ...
- python 学习笔记 9 -- Python强大的自省简析
1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...
- python学习笔记(一):python简介和入门
最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...
- python 学习笔记一——Python安装和IDLE使用
好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...
- python学习笔记(python简史)
一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...
- python学习笔记(1)--python特点
python诞生于复杂的信息系统时代,是计算机时代演进的一种选择. python的特点,通用语言,脚本语言,跨平台语言.这门语言可以用于普适的计算,不局限于某一类应用,通用性是它的最大特点.pytho ...
- python学习笔记之——python模块
1.python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...
- Python学习笔记 - day12 - Python操作NoSQL
NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...
- Python学习笔记五(读取提取写入文件)
#Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习. import os import re def get_filelist(dir ...
- python学习笔记——爬虫中提取网页中的信息
1 数据类型 网页中的数据类型可分为结构化数据.半结构化数据.非结构化数据三种 1.1 结构化数据 常见的是MySQL,表现为二维形式的数据 1.2 半结构化数据 是结构化数据的一种形式,并不符合关系 ...
随机推荐
- 整理UIImagePickerController问题
[assetsLibrary addAssetsGroupAlbumWithName:@"iOSDevTip1" resultBlock:^(ALAssetsGroup *grou ...
- SQLSERVER常见系统函数之字符串函数(一)
好久没有写博客了,这段时间准备写一下字符串函数 QQ群: 499092562:欢迎交流 字符串函数: 1.LEN(需要获取长度的字符串) 返回:字符串的长度 示例: SELECT LEN('小搬运工很 ...
- Atitit. 项目文档目录大纲 总集合 v2
Atitit. 项目文档目录大纲 总集合 v2 -----Atitti.原有项目源码的架构,框架,配置与环境说明 v3 q511 -----Atitit.开发环境 与 工具 以及技术框架 以及 注意 ...
- Spring, MyBatis 多数据源的配置和管理
同一个项目有时会涉及到多个数据库,也就是多数据源.多数据源又可以分为两种情况: 1)两个或多个数据库没有相关性,各自独立,其实这种可以作为两个项目来开发.比如在游戏开发中一个数据库是平台数据库,其它还 ...
- Js IP转数字
<script type="text/javascript"> function d2h(d) { return d.toString(16) } function h ...
- 5-udev多路径
udev多路径 查看scsi的唯一标识符 用这个计算机可以识别 重启服务 想要看到下面的,可能重启服务也不行,那就需要重启计算机了 虚拟磁盘 安装这个包multipath 重启服务生效 重启计算机生效 ...
- monkeyrunner之控件ID不存在或重复
我们在用monkeyrunner进行Android自动化时,通过获取坐标点或控件ID进行一系列操作.由于使用坐标点时,屏幕分辨率一旦更改,则代码中用到坐标的地方都要修改,这样导致代码的复用率较低.因此 ...
- monkey之monkey日志分析
一.初步分析方法:Monkey测试出现错误后,一般的差错步骤为以下几步:1.找到是monkey里面的哪个地方出错2.查看Monkey里面出错前的一些事件动作,并手动执行该动作3.若以上步骤还不能找出, ...
- linux umount
linux umount 提示"device is busy" 终极解决方法 http://www.wisdr.com/news/20120621174117.htm 这里面的方法亲测可用. 小tip ...
- BZOJ1298[SCOI2009]骰子的学问
Description Input 第一行为两个整数n, m.第二行有n个整数,为a1,a2, -, an. Output 包含n行,每行m个1~n×m的正整数,各不相同,以空格分开.如果有多解,输出 ...