R语言:实现文本分析实例(基础篇)

来源:互联网 发布:mac itunes 照片 删除 编辑:程序博客网 时间:2024/06/05 11:55

修正

关于提供链接无法访问,因此更新下文档。

关于数据加载部分,可自己收集数据,或从相关数据库导入数据也行。
可参考:R语言:R语言文件IO操作 
本文实现是在R-3.0.1版本下运行,其他版本未测试,理论上差距不大
另外,关于命令中,一些包的安装,通过在线安装失败,可通过下载相关包到本地进行安装。

相关包的下载地址如下:
Snowball下载 
rmmseg4j下载

下载后安装命令:

install.packages(choose.files())
install.packages("~/rmmseg4j_0.2-0.zip", repos=NULL)



转自:http://www.bassary.com/?p=1093

数据包url:下载   (下载数据后,记得同程序中的名字一致,路径要统一。)
#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  #使用空格把字符串分为listpinglun<-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-- #使用字典提取dtmd <- Dictionary(c("不满意", "不值得", "不知道"))dtm_d<-DocumentTermMatrix(ovid, list(dictionary = d))#dtm_d中只提取了字典(d)中包含的词条。


原创粉丝点击