R-文本处理-分词
来源:互联网 发布:ping测试网络 编辑:程序博客网 时间:2024/04/27 19:00
一、背景
准备对《水浒传》中人物关系进行探索,无奈《水浒传》词库只有三种类型数据:天魁星呼保义宋江、呼保义宋江、宋江,无法对”天魁星“、”呼保义“进行分词,故需要进行预处理,现对此问题进行处理。
二、技术路线
思路:观察现有数据,天罡地煞数据格式规范,容易获取,江湖称号(”呼保义“)稍微复杂,现利用R及其文本挖掘工具进行处理。
工具:R、Rwordseg包
三、过程
1. 处理天罡地煞词项
#定义数据读取函数 get.content<-function(file.path){ return (scan(file.path,sep='\n',what='character'))} #处理天罡地煞数据 sh.heros<-get.content('水浒人物.txt') sh.heros<-sh.heros[1:108] #前108行为 "天魁星呼保义宋江"型数据,故截取 sh.heros<-substr(sh.heros,1,3) write.table(sh.heros,'sh_words1.txt',sep='\n',row.names=FALSE,col.names=FALSE,quote=FALSE)2. 处理江湖称号词项
江湖称号数据获取的主要阻碍在于姓名长短不一,无法采用像天罡地煞数据的处理方式直接通过子字符串获得。 由于现有分词包能对人物姓名进行切分,因此考虑采用分词技术:获取”呼保义宋江“型数据,分词后得到一个由分出的各词项组成的列表,去除每个向量最后一个元素后对每个向量进行拼接,即是江湖称号数据。
#载入所需包 library(tm) library(Rwordseg) #读取现有数据 shuihu.names<-get.content('水浒人物.txt') insertWords(c(shuihu.names[209:length(shuihu.names)])) #将现有人物姓名作为临时分词,原文件第209个开始起为"宋江"型数据 name.terms<-segmentCN(shuihu.names) name.clean<-lapply(name.terms,function(i)i<-i[-length(i)]) name.merge<-lapply(name.clean,function(i) merge.element(i)) hero.names<-name.merge[-which(name.merge=='NA')] hero.names<-hero.names[109:length(hero.names)] write.table(hero.names,'sh_words2.txt',sep='\n',row.names=FALSE,col.names=FALSE,quote=FALSE) #拼接函数 merge.element<-function(a){ len<-length(a) temp<-NULL for (i in 1:len) temp<-paste(temp,a[i],sep="") return (temp) }
3. 合并数据
words.1<-get.content('水浒人物.txt')words.2<-get.content('sh_words1.txt')words.3<-get.content('sh_words2.txt')words<-c(words.1,words.2,words.3)write.table(words,'水浒人名.txt',sep='\n',row.names=FALSE,col.names=FALSE,quote=FALSE)
4. 如何利用?
(1) 采用Rwordseg包中insetwords()函数将数据作为临时分词词项使用
(2) 将数据导入目录 “ R_HOME/library/Rwordseg/dict " 中后缀名为" .dic" 文件中,利用loadDict()载入分词数据,持久使用
0 0
- R-文本处理-分词
- R语言做文本挖掘 Part2分词处理
- R语言做文本挖掘 Part2分词处理
- R语言做文本挖掘 Part2分词处理
- R语言做文本挖掘 Part2分词处理
- R文本挖掘 Part1分词处理(转)
- R语言文本挖掘-分词
- 【R文本挖掘】中文分词Rwordseg
- 【R文本挖掘】中文分词Rwordseg
- 【R文本挖掘】中文分词Rwordseg
- R文本挖掘之二分词
- R文本挖掘-中文分词Rwordseg
- R文本挖掘处理
- R 字符函数 文本处理
- 自然语言处理(1)——文本分词
- R语言文本挖掘之jieba分词与wordcloud展现
- 文本挖掘系统的实现之R语言分词
- 用R进行文本挖掘与分析:分词、画词云【2】
- Java并发与多线程教程(3)
- 反射赋值 比如 int?
- 求职面试
- android返回按键触摸监听
- java synchronized详解
- R-文本处理-分词
- 求最大递增数
- CountLetterInArray
- HDU2089 不要62
- hdu 1102 Constructing Roads 最小生成树
- [NOI2005]维修数列(SplayTree)
- OCP-1Z0-051 第48题 索引
- 堆排序总结【转】
- android MediaPlayer 的使用背景音乐的播放