#清除内存空间
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","crude","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)

R语言 文本挖掘 tm包 使用的更多相关文章

  1. R语言︱文本挖掘——jiabaR包与分词向量化的simhash算法(与word2vec简单比较)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- <数据挖掘之道>摘录话语:虽然我比 ...

  2. R语言︱文本挖掘套餐包之——XML+SnowballC+tm包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言︱文本挖掘套餐包之--XML+tm+Sn ...

  3. R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:与前面的RsowballC分词不同的 ...

  4. R语言·文本挖掘︱Rwordseg/rJava两包的安装(安到吐血)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言·文本挖掘︱Rwordseg/rJava ...

  5. R语言中文分词包jiebaR

    R语言中文分词包jiebaR R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据 ...

  6. R语言︱H2o深度学习的一些R语言实践——H2o包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...

  7. R语言:recommenderlab包的总结与应用案例

    R语言:recommenderlab包的总结与应用案例   1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算 ...

  8. 使用R语言的RTCGA包获取TCGA数据--转载

    转载生信技能树 https://mp.weixin.qq.com/s/JB_329LCWqo5dY6MLawfEA TCGA数据源 - R包RTCGA的简单介绍 - 首先安装及加载包 - 指定任意基因 ...

  9. R语言文本挖掘+词云显示(jiebaR包+wordcloud2包)

    利用2018年政府工作报告的例子向大家展示一下R语言如何进行文本挖掘的~用到的包有jiebaR和wordcloud2. 1.安装并加载jiebaR install.packages("jie ...

随机推荐

  1. JavaScript转unix时间戳

    由于 unix 的时间戳是10位不带毫秒的,所以前端获取到时间戳之后需要做一下处理,才能获取正确的时间. // 假设这里是从服务端获取到的时间戳 var unixTime = data.time; / ...

  2. DIV+CSS中的滤镜和模糊

    在div+css中,经常会用到div和span 当内容比较多的时候,会用到div 当内容比较少的时候,会用到span 来看下面的代码: <!DOCTYPE html> <html&g ...

  3. 将Session放入Redis

    默认情况下,我们的PHP是以文件的形式保存Session数据,所以,每次读写会话信息,就需要去访问硬盘. 为了解决会话信息夸域名问题,即为了实现同一时刻只能一个地方登录,同时也解决读写会话信息必须访问 ...

  4. Log4Net记录到MySql

    1.新建控制台程序. 2.添加Log4Net nuget 3.添加MySql 引用 4.添加配置文件如下: <?xml version="1.0"?> <conf ...

  5. C语言实现数据结构中的堆创建,堆排序

    #include "stdio.h"#include "stdlib.h"void swap(int *a,int *b)//交换两个数{int t;t=*a; ...

  6. 【转】JavaScript的三种消息框alert,confirm,prompt

    1. alert是弹出警告框,在文本里面加入\n就可以换行.2. confirm弹出确认框,会返回布尔值,通过这个值可以判断点击时确认还是取消.true表示点击了确认,false表示点击了取消.3. ...

  7. EntityFramework 实践 Overview

    使用EntityFramework,是微软出的一个轻量级ORM框架,对于做一些小型的项目非常方便,几乎是零配置,以及对linq的支持,所以非常的易于使用,虽然已经使用EntityFramework很久 ...

  8. 2017人生总结(MECE分析法)

    试着用MECE分析法对人生的整个规划做一下总结.作为技术人员,其实除了编码架构能力之外,分析问题的能力的重要程度也会随着职业发展越来越重要.<美团点评技术博客>说这几天要在黄金时段头版头条 ...

  9. 2018/1/15 JAVA多线程相关

    本文不说synchronized相关,它就是JAVA的一个保留关键字,jdk自己实现了它,但说真的,可应用场景真的少,相比lock接口,它还是被淘汰好吧; 首先,说说lock接口,lock接口是一个工 ...

  10. 剑指offer试题(PHP篇一)

    1.二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...