R语言︱文本挖掘套餐包之——XML+SnowballC+tm包
每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~
———————————————————————————
R语言︱文本挖掘套餐包之——XML+tm+SnowballC包
笔者寄语:文本挖掘、情感分析是目前非结构数据非常好用、有效的分析方式。
先针对文本挖掘这个套餐包做个简单了解。一般来说一个完整的文本挖掘解决流程是:
网页爬取数据——数据格式转化(分隔)——建立语料库——词频去噪——提取词干——创建文档-词频矩阵——后续分析(聚类、词云等)
XML包可以实现:网页爬取(还有Rcurl包)、格式转化
tm包可以实现:建立语料库、创建文档-词频矩阵、去噪(还有Rwordseg包是中文分词包)
SnowballC包可以实现:提取词干
本篇暂时不介绍XML包的数据爬取,先来看后面两个包的实现。
本文以一个案例介绍SnowballC包+tm包,使用的数据是R语言中自带的数据集,案例部分来源于参考西门吹风博客。
一、函数调用、数据导入、生成语料库
library(SnowballC)
library(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))
#Corpus命令读取文本并生成语料库文件
##2.Data Export 将生成的语料库在磁盘上保存成多个纯文本文件
writeCorpus(reuters)
##3.Inspecting Corpora 查看语料库
#can use inspect(),print(),summary()
#由于是从xml读取过来,所以现在的corpus还是非常杂乱
inspect(reuters)
print(reuters)
summary(reuters)
还有查看语料库的几个函数:inspect(),print(),summary()三个。
二、格式转化、去噪
##4.Transformations
#对于xml格式的文档用tm_map命令对语料库文件进行预处理,将其转为纯文本并去除多余空格,
#转换小写,去除常用词汇、合并异形同意词汇,如此才能得到类似txt文件的效果
#可以用inspect(reuters)查看此时的效果,明显好很多
reuters <- tm_map(reuters, PlainTextDocument)#将reuters转化为纯文本文件,去除标签
reuters <- tm_map(reuters, stripWhitespace)#去掉空白
reuters <- tm_map(reuters, tolower)#转换为小写
reuters <- tm_map(reuters, removeWords, stopwords("english"))#去停用词
</pre><pre code_snippet_id="1633870" snippet_file_name="blog_20160404_2_6556358" name="code" class="plain">#采用Porter's stemming 算法 提取词干
#Stem words in a text document using Porter's stemming algorithm
#install.packages("SnowballC")
tm_map(reuters, stemDocument)
三、创建文档-词频矩阵
关于下面的DocumentTermMatrix,前面一定要跟tm_map(reuters,PlainTextDocument),注意与前面的区别,以及执行代码的顺序。
##5.创建文档矩阵 Creating Term-Document Matrices #将处理后的语料库进行断字处理,生成词频权重矩阵(稀疏矩阵)也叫词汇文档矩阵
reuters <- tm_map(reuters, PlainTextDocument)#将reuters转化为纯文本文件,去除标签 dtm <- DocumentTermMatrix(reuters) #报错可看http://www.bubuko.com/infodetail-345849.html #需先执行一下reuters <- tm_map(reuters, PlainTextDocument)
#查看词汇文档矩阵内容 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)))
DocumentTermMatrix生成的矩阵是文档-词频的稀疏矩阵,横向是文档文件,纵向是分出来的词,矩阵里面代表词频,如下图。
创建好文档词频矩阵之后,可以通过一些方式查看这个矩阵的内容,或者用函数筛选出你想要的结果等。
##6.在文本矩阵上实践 Operations on Term-Document Matrices #找出次数超过50的词 findFreqTerms(dtm, 50) #找出与‘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 ="文件聚类分析")
聚类说明了根据词频统计,哪些文档较为相近,说明这些文档存在同质。
——————————————————————————————————————————————————————————————————————————
应用一:snowball包中的词干与记号化去哪儿?
词干化:去掉ing,s之类的词,目前适用于英文,中文不适用
记号化:将一段文本分割成叫做token(象征)过程,token可能是单词、短语、符号或其他有意义的元素。
snowball现在这个包已经无法加载了,tm包调用SnowballC可以词干化,函数名字叫:stemDocument;
记号化在tm包中叫做getTokenizers函数。
每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~
———————————————————————————
R语言︱文本挖掘套餐包之——XML+SnowballC+tm包的更多相关文章
- R语言·文本挖掘︱Rwordseg/rJava两包的安装(安到吐血)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言·文本挖掘︱Rwordseg/rJava ...
- R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:与前面的RsowballC分词不同的 ...
- R语言 文本挖掘 tm包 使用
#清除内存空间 rm(list=ls()) #导入tm包 library(tm) library(SnowballC) #查看tm包的文档 #vignette("tm") ##1. ...
- R语言︱文本挖掘——jiabaR包与分词向量化的simhash算法(与word2vec简单比较)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- <数据挖掘之道>摘录话语:虽然我比 ...
- R语言-文本挖掘
---恢复内容开始--- 案例1:对主席的新年致辞进行分词,绘制出词云 掌握jieba分词的用法 1.加载包 library(devtools) library(tm) library(jiebaR) ...
- R语言 一套内容 从入门 到放弃
[怪毛匠子整理] 1.下载 wget http://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.0.1.tar.gz 2.解压: tar -zxvf R-3.0. ...
- R语言文本挖掘+词云显示(jiebaR包+wordcloud2包)
利用2018年政府工作报告的例子向大家展示一下R语言如何进行文本挖掘的~用到的包有jiebaR和wordcloud2. 1.安装并加载jiebaR install.packages("jie ...
- R语言︱文本挖掘——词云wordcloud2包
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者看到微信公众号探数寻理中提到郎大为Chif ...
- R语言︱缺失值处理之多重插补——mice包
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:缺失值是数据清洗过程中非常重要的问题 ...
随机推荐
- 2018Pycharm激活方法
1.将"0.0.0.0 account.jetbrains.com"添加到hosts文件中 2.打开http://idea.lanyus.com/ 3.获取激活码,粘贴到第二个选项 ...
- 关于css选择器的一些细节
1.如何区分一个html标签的不同样式 使用标签名.类名的方式解决 如果希望特别强调其中的某一个或几个元素,处理的方案有三个: 1.id选择器 2.class选择器 3.层级选择器 看下面的代码: & ...
- Facebook发布React 16 专利条款改为MIT开源协议
9 月 26 日,用于构建 UI 的 JavaScript 库 React 16 的最新版本上线. Facebook 最终在现有的两种 React 版本中选择了出现 bug 概率最少的一款.这次版本更 ...
- H5弹性盒布局的使用(父容器属性)
为父容器添加display:flex/inline-flex 父容器可以使用的属性有: 1.flex-direction:决定主轴的方向 有四个属性值: row(默认值):主轴为水平方向,起点在左端. ...
- Windows下为Lua脚本进行加密处理
缘由 想对Lua脚本进行安全性处理,可惜一直没有想到很好的解决方案,考虑过用原生Lua将脚本编译成二进制代码,也考虑过用zlib将文件进行加密压缩处理,但是感觉都不是最佳方案,今天忽然想到有个东西叫L ...
- Centos启动默认打开网络
Centos打开网络 测试的时候发现网络没有打开,得到图像界面点击网络打开.比较麻烦去搜索了解决方法在此记录下来. 通过 /etc/sysconfig/network-script/, 编辑ifcfg ...
- 安装gitlab8.0在reconfigure报错
现象: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/303 参考方法: https://forum.gitlab.com/t/gitlab- ...
- JVM自动内存管理-Java内存区域与内存溢出异常
摘要: JVM内存的划分,导致内存溢出异常的可能区域. 1. JVM运行时内存区域 JVM在执行Java程序的过程中会把它所管理的内存划分为以下几个区域: 1.1 程序计数器 程序计数器是一块较小的内 ...
- Java基础系列--static关键字
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8477914.html 一.概述 static关键字是Java诸多关键字中较常使用的一个,从 ...
- zip-gzip-bzip2_压缩文件
问:为什么要压缩文件? 答:方便传输,因为压缩的文件容量会比较小 存储所使用的空间也会比较小 ---> 备份 Windows里的压缩软件:WinRAR.Zip.好压.2345 ...