博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python数据分析之基情的择天记
阅读量:6150 次
发布时间:2019-06-21

本文共 1789 字,大约阅读时间需要 5 分钟。

人一生都可能无法逆天改命,但你却是要去奋斗一把

本文章主要通过最简单的共线性关系,利用gephi工具绘制择天记的人物关系图。

准备工作

  • 在网上下载《择天记》小说以及创建小说人物的txt。

    005LTY7cgy1fhsoqiqz84j30tl0hxt9v.jpg
  • jieba库
  • 需要下载gephi软件
    注意:安装路径不能有中文字;需要安装java环境,不然无法使用gephi。

定义数据结构

import jiebanames = {}relationships = {}linenames = []all_names = []

names用于存入小说人物和出场次数;relationships保存人物关系的有向边,该字典的键为有向边的起点,值为一个字典edge,edge的键是有向边的终点,值是有向边的权值,代表两个人物之间联系的紧密程度;linenames存入每行小说出现的人物;all_names是小说所有人物。

添加人名到jieba词库中

jieba库分词可能并不能把小说的人物都切开,我们需要把这些人名添加到词库中,以便成功分词。

f1 = open('names.txt',encoding='utf-8')for line in f1.readlines():    all_names.append(line.strip().strip('\ufeff'))for name in all_names:    jieba.add_word(name)

统计出场人数

f2 = open('择天记.txt',encoding='utf-8')for line in f2.readlines():    seg_list = jieba.cut(line)    linenames.append([])    for i in seg_list:        if i in all_names:            linenames[-1].append(i)            if names.get(i) is None:                names[i] = 0                relationships[i] = {}            names[i] +=1
005LTY7cgy1fhsp3e3d0mj30zk0k0acb.jpg

通过图可以看出,陈长生作为主角,出场最多,而他的好基友是排第二的,而他的女票徐有容却是排到第五,这与一些玄幻小说不一样,注定了这是一部基情的小说。

人物关系及写入文件

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] += 1import codecswith codecs.open('tian_node.txt','w','utf-8') 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('tian_edge.txt', 'w', "utf-8") as f:    f.write("Source Target Weight\r\n")    for name, edges in relationships.items():        for v, w in edges.items():            if w > 3:                f.write(name + ' ' + v + " " + str(w) + "\r\n")
005LTY7cgy1fhsp81udg8j30g40fhmy8.jpg
005LTY7cgy1fhsp88os4gj30fg0dswfe.jpg

绘制人物关系图

最后利用gephi绘制人物关系图。

005LTY7cgy1fhsp95jzclj32bc2bckhc.jpg

转载地址:http://myqya.baihongyu.com/

你可能感兴趣的文章
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
Oracle执行计划发生过变化的SQL语句脚本
查看>>
使用SanLock建立简单的HA服务
查看>>
发现一个叫阿尔法城的小站(以后此贴为我记录日常常用网址的帖子了)
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>
Docker镜像与容器命令
查看>>
批量删除oracle中以相同类型字母开头的表
查看>>
Java基础学习总结(4)——对象转型
查看>>
BZOJ3239Discrete Logging——BSGS
查看>>
SpringMVC权限管理
查看>>
spring 整合 redis 配置
查看>>
redhat6.1下chrome的安装
查看>>