加载中…
个人资料
数据科学家快报
数据科学家快报
  • 博客等级:
  • 博客积分:0
  • 博客访问:4,358
  • 关注人气:640
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

R语言 实现文本分析实例[基础篇]

(2012-12-21 11:53:59)
标签:

it

分类: R语言

#1加载软件包:
#1.1数据欲处理包:
#Snowball(处理带空格的语句)
#rJava(rmmseg4j的支持包)
#rmmseg4j(处理中文的分词,把不带空格的分为带空格的。)
#1.2文本分析包:
#tm
 
#数据处理##
library (RODBC)
excel_file <- odbcConnectExcel("D:\\r\\lab\\tm\\data\\处理实例.xls")
sheet_data <- sqlFetch(excel_file,"data")
close (excel_file)
 
library (Snowball)
library (rJava)
library (rmmseg4j)
library (tm)
tmp <-  as.character(sheet_data[[3]])
pinglun<-tmp[which(tmp!="")]#删除无效数据
 
#中文特色,空格分词
#a<-mmseg4j(pinglun[1]);a      #分词,添加空格
#b<-unlist(strsplit(a," "));b  #使用空格把字符串分为list
pinglun<-mmseg4j(pinglun)#空格视为一个单词,所以中文很吃亏,需要先分词。否则可能会把一句话视为一个单词(DocumentTermMatrix出现错误结果)
 
#建立语义库
ovid <- Corpus(VectorSource(pinglun))#由于pinglun是向量,所以要使用VectorSource
#ovid <- Corpus(DataframeSource(as.data.frame(pinglun)))#由于pinglun是向量,所以要转化为data.frame后再使用DataframeSource
#还可以读取目录DirSource参数,读取目录中的不同txt文件(实际后文writeCorpus(ovid)也会产生n个txt)
#完成后,会创建length(pinglun)个 text documents。
 
#查看建立的语义库
#inspect(ovid)
#保存ovid,在工作目录中写入length(pinglun)个txt文本,每个文本包含一个document
#writeCorpus(ovid)
 
#使用语义库做后续处理
#去掉多余空白
ovid <- tm_map(ovid, stripWhitespace)
#去掉停止词,未成功???
#ovid<- tm_map(ovid, removeWords,)
 
#创建词条 -文档关系矩阵
dtm <- DocumentTermMatrix(ovid)
inspect(dtm[1:5,100:105])
 
#对矩阵进行处理
#找到在“5个以上的不同文档”中出现的词条:findFreqTerms(x, lowfreq = 0, highfreq = Inf)。
findFreqTerms(dtm, 5)
#找到同vancl这个词条的相关系数在0.2以上的其他词条
findAssocs(dtm, "vancl", 0.2)#如果欲比较的词条不在总dtm中,则返回错误,如果相关系数设置过高,则返回1
#展示:
  vancl   优惠券   浏览器   google 加减乘除   谁也不   chrome     vjia
   1.00     0.38     0.33     0.29     0.29     0.29     0.20     0.20
#删除稀疏词条(removed which have at least a sparse percentage of empty )
dtm_099<-removeSparseTerms(dtm, 0.99)
#返回新词条(原有词条dtm不变),其中删除了“出现词条的文档数目占总文档数目”小于1%(1-0.99=0.01=1%)的(稀疏)词条。
#验证:length(which(inspect(removeSparseTerms(dtm, 0.99)[,i])==1))/4275一定大于0.01,其中i=1--
 
#使用字典提取dtm
d <- Dictionary(c("不满意", "不值得", "不知道"))
dtm_d<-DocumentTermMatrix(ovid, list(dictionary = d))#dtm_d中只提取了字典(d)中包含的词条。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有