一、背景

利用R呈现《水浒传》人物关系网络图

二、技术路线

思路:以在同一段出现的共现关系,绘制人物关系网络图

工具:R

三、过程

1. 预定义函数

#读取文件内容函数
get.content<-function(file.path){return (scan(file.path,sep='\n',what='character'))
}
#从termlist中筛选出words,返回词项列表
get.intersect.terms<-function(termlist,words){heros<-list()heros<-lapply(1:length(termlist),function(i) heros[[i]]<-intersect(termlist[[i]],words))hero.clean<-list()j<-1for (i in (1:length(heros))){if(length(heros[[i]]>1)){hero.clean[[j]]=heros[[i]]j=j+1}}return (hero.clean)
}
#获取输入向量元素间的两两关系
get.relationship<-function(termvector){a<-NULLlen<-length(termvector)if(len>1){for (i in 1:(len-1))for (j in (i+1):len)a<-append(a,c(termvector[i],termvector[j]))}return (a)
}

2. 实现:

library(tm)
library(Rwordseg)
words<-get.content('水浒人名.txt')
insertWords(words)                   #作为临时分词词项使用
sh.data<-get.content('水浒传.txt')
segwords.list<-segmentCN(sh.data)
co.heros<-get.intersect.terms(segwords.list,words)
co.heros<-lapply(co.heros,function(i) get.relationship(i))
co.heros<-unlist(co.heros)
co.matrix<-matrix(co.heros,ncol=2,byrow=TRUE)
write.csv(co.matrix,'水浒.csv',row.names=FALSE)   

也可以将上述过程封装成一个函数:

#读取文件,返回words参数中定义的词项间共现关系列表
auto.getrls<-function(file.path,words){file.data<-get.content(file.path)file.term<-segmentCN(file.data)                                                #分词file.terms<-get.intersect.terms(file.term,words)            #获取交集file.terms.rls<-lapply(file.terms,function(i) get.relationship(i))     #获取词项间关系file.terms.rls<-unlist(file.terms.rls)                                             #将列表转换为向量 return (file.terms.rls)
}

3. 得到CSV关系数据,利用社会网络分析工具Gephi进行网络可视化

R-水浒人物关系呈现相关推荐

  1. vue框架制作水浒人物的地图分布图(仅供参考)

    WebGIS课程作业实验步骤--制作水浒人物的分布图 1.初始化(注意先看第9点) 创建项目 https://segmentfault.com/a/1190000015772392 引入高德地图(步骤 ...

  2. Java程序-单链表增删改查(实现对水浒人物的增删改查操作)

    单链表增删改查(实现对水浒人物的增删改查操作) 前言 一.链表(Linked List)介绍 二.应用实例 1.问题描述 2.代码实现 总结 前言 参考:B站,尚硅谷数据结构与算法 课程 一.链表(L ...

  3. IOS对战卡牌《梦回水浒》抢先体验

    <梦回水浒> 是一款水墨风格的即时对战卡牌手游.该游戏以水浒108将为人物原型,引入阴阳五行学说,结合独创的多种对战玩法,给玩家带来不一样的游戏体验.不同于一般的卡牌游戏,在<梦回水 ...

  4. Tableau制作人物关系图

    人物关系图可以清晰表示人物之间的关联关系,通过这种关系的呈现给人直观印象,能够达到总览人物故事的全貌,一起看下这个人物关系图是怎样制作的吧. 在绘制人物关系图之前我们需要设计人物关系图,看似杂乱无章的 ...

  5. R语言 基于共现提取《雪中悍刀行》人物关系并画网络图

    概述 雪中悍刀行作为现象级的网文,电视剧版即将上映,作为曾经的一员"妖孽"书粉,按捺不住想做点啥.最近在研究知识图谱,就以此为契机展开相关研究吧. 本文将基于简单共现关系,编写 R ...

  6. 关于《梦回水浒》的几个问题释疑

    在这里,首先要感谢近段时间帮忙测试<梦回水浒>的所有朋友啦,因为你们,我们才能把游戏做的更好~ 最近,关于<梦回水浒>,经常被问到两个问题: 1.为什么<梦回水浒> ...

  7. 用pyecharts制作小说《剑来》的人物关系图(粗)

    先上效果 今天在一如既往地划水时,水友给我推了个小说叫<剑来>.下班回到家,准备下载了看一下,结果一看,光txt都要9MB,以我磨蹭的速度,怕不是明年都看不完.正好最近在做一些NLP相关的 ...

  8. 你不知道的水浒好汉,在这里!

    你不知道的水浒好汉,在这里 <水浒传>中有着108位好汉,个个都是真英雄.这一百零八位好汉性格各不相同,本事各有所长,结局也是各有异同.梁山伯上的一百零八位头领,是由天罡星三十六员和地煞星 ...

  9. 红楼梦人物关系 python_如何用Python来理一理红楼梦里的那些关系

    前言 今天,一起用 Python 来理一理红楼梦里的那些关系 不要问我为啥是红楼梦,而不是水浒三国或西游,因为我也鉴定的认为,红楼才是无可争议的中国古典小说只巅峰,且不接受反驳!而红楼梦也是我多次反复 ...

最新文章

  1. 消息队列—经典5连问—你能抗几道?
  2. 500页开放书搞定概率图建模,图灵奖得主Judea Pearl推荐(附链接)
  3. FD.io/VPP — L2 vSwitch
  4. python各进制、字节串间的转换
  5. mysql免安装如何改密码_mysql免安装版配置与修改密码的教程
  6. php 编译 iconv错误,php编译错误:configure: error: Please reinstall the iconv library.
  7. 【快速入门Linux】6_Linux命令—用户权限相关命令
  8. MFC下运行控制台不显示黑屏
  9. Hive学习之Metastore及其配置管理
  10. 我们自研的那些Devops工具
  11. JAVA项目实战开发电商项目案例(一)前后端项目分离
  12. Gephi教程:使用Graph Streaming 插件实现数据可视化
  13. Python安装Github下载的包,以SimpleCV为例
  14. 计算机主板 上电顺序,笔记本电脑主板的上电过程
  15. pluck()取表中一列中所有值组成数组
  16. 在线播放.html,网页嵌入式SWF视频播放器
  17. 通过小宝的卡牌游戏,看开源SCUT服务器运行使用
  18. 西门菲莎大学计算机专业排名,2019-2020西门菲莎大学世界排名多少【QS最新第314名】...
  19. 【案例分享】项目施工进度报告 - 树形报表
  20. JAVA网络爬爬学习之HttpClient+Jsoup

热门文章

  1. 经过一年的不懈努力社招进了阿里,我总结了50个Java面试必考题
  2. php数组试题,8个PHP数组面试题,php数组试题_PHP教程
  3. java遍历多层map_Java遍历Map对象的四种方式
  4. [附源码]Java计算机毕业设计SSM黑河市劳务人员管理系统
  5. 在线正则表达式匹配测试
  6. 过程和数据文件操作以及异常处理
  7. 带图片的日历html,js css+html实现简单的日历
  8. 每日简报 5月22日简报新鲜事 每天一分钟 了解新鲜事
  9. JBoss,Geronimo还是Tomcat? ——三种开源Java应用服务器的比较
  10. golang中字符串和数字转换