加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

R语言 文本挖掘 tm包 使用

发布时间:2020-12-14 03:10:41 所属栏目:大数据 来源:网络整理
导读:#清除内存空间 rm(list=ls())? #导入tm包 library(tm) library(SnowballC) #查看tm包的文档 #vignette("tm") ##1.Data Import ?导入自带的路透社的20篇xml文档 #找到/texts/crude的目录,作为DirSource的输入,读取20篇xml文档 reut21578 - system.file("tex

#清除内存空间
rm(list=ls())?
#导入tm包
library(tm)
library(SnowballC)
#查看tm包的文档
#vignette("tm")


##1.Data Import ?导入自带的路透社的20篇xml文档
#找到/texts/crude的目录,作为DirSource的输入,读取20篇xml文档
reut21578 <- system.file("texts","crude",package = "tm")?
reuters <- Corpus(DirSource(reut21578),readerControl = list(reader = readReut21578XML))

##2.Data Export ?将生成的语料库在磁盘上保存成多个纯文本文件
writeCorpus(reuters)

##3.Inspecting Corpora 查看语料库?
#can use inspect(),print(),summary()
#由于是从xml读取过来,所以现在的corpus还是非常杂乱
inspect(reuters)
print(reuters)?
summary(reuters)


##4.Transformations?
#对于xml格式的文档用tm_map命令对语料库文件进行预处理,将其转为纯文本并去除多余空格,
#转换小写,去除常用词汇、合并异形同意词汇,如此才能得到类似txt文件的效果
#可以用inspect(reuters)查看此时的效果,明显好很多
reuters <- tm_map(reuters,as.PlainTextDocument)#将reuters转化为纯文本文件,去除标签
reuters <- tm_map(reuters,stripWhitespace)#去掉空白
reuters <- tm_map(reuters,tolower)#转换为小写
reuters <- tm_map(reuters,removeWords,stopwords("english"))#去停用词
#采用Porter's stemming 算法 提取词干
#Stem words in a text document using Porter's stemming algorithm
#install.packages("SnowballC")
tm_map(reuters,stemDocument)


##5.Creating Term-Document Matrices
#将处理后的语料库进行断字处理,生成词频权重矩阵(稀疏矩阵)也叫词汇文档矩阵
dtm <- DocumentTermMatrix(reuters)
#查看词汇文档矩阵
inspect(dtm[1:5,100:105])
#Non-/sparse entries: 1990/22390 ? ? ---非0/是0?
#Sparsity ? ? ? ? ? : 92% ? ? ? ? ? ?---稀疏性 ?稀疏元素占全部元素的比例
#Maximal term length: 17 ? ? ? ? ? ? ---切词结果的字符最长那个的长度
#Weighting ? ? ? ? ?: term frequency (tf)
#如果需要考察多个文档中特有词汇的出现频率,可以手工生成字典,
#并将它作为生成矩阵的参数
d<-c("price","oil","use")
inspect(DocumentTermMatrix(reuters,control=list(dictionary=d)))


##6.Operations on Term-Document Matrices
#找出次数超过5的词
findFreqTerms(dtm,5)
#找出与‘opec’单词相关系数在0.8以上的词
findAssocs(dtm,"opec",0.8)


#因为生成的矩阵是一个稀疏矩阵,再进行降维处理,之后转为标准数据框格式
#我们可以去掉某些出现频次太低的词。
dtm1<- removeSparseTerms(dtm,sparse=0.6)
inspect(dtm1)
data <- as.data.frame(inspect(dtm1))


#再之后就可以利用R语言中任何工具加以研究了,下面用层次聚类试试看
#先进行标准化处理,再生成距离矩阵,再用层次聚类
data.scale <- scale(data)
d <- dist(data.scale,method = "euclidean")
fit <- hclust(d,method="ward.D")
#绘制聚类图
#可以看到在20个文档中,489号和502号聚成一类,与其它文档区别较大。
plot(fit,main ="文件聚类分析")

#主成分分析 ozMat <- TermDocumentMatrix(makeChunks(reuters,50),? ? ? ? ? ? ? ? ? ? ? ? ? ? list(weighting = weightBin)) k <- princomp(as.matrix(ozMat),features = 2) screeplot(k,npcs=6,type='lines') windows() biplot(k)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读