利用R语言的tm包进行文本挖掘
2017-04-23 13:32
537 查看
摘要: tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明library(tm)vignette("tm")首先要读取文本,本次操作所用的文本是tm包自带的20个XML格式文本,存 ...
tm
R语言
文本挖掘
tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明
library(tm)
vignette("tm")
首先要读取文本,本次操作所用的文本是tm包自带的20个XML格式文本,存放在library\tm\texxts\crude文件夹中。用Corpus命令读取文本并生成语料库文件
reut21578 <- system.file("texts", "crude", package = "tm")
reuters <- Corpus(DirSource(reut21578), readerControl = list(reader = readReut21578XML))
下一步用tm_map命令对语料库文件进行预处理,将其转为纯文本并去除多余空格,转换小写,去除常用词汇、合并异形同意词汇
reuters <- tm_map(reuters, as.PlainTextDocument)
reuters <- tm_map(reuters, stripWhitespace)
reuters <- tm_map(reuters, tolower)
reuters <- tm_map(reuters, removeWords, stopwords("english"))
tm_map(reuters, stemDocument)
利用DocumentTermMatrix将处理后的语料库进行断字处理,生成词频权重矩阵
dtm <- DocumentTermMatrix(reuters)
部分矩阵内容可通过inspect来观察
inspect(dtm[1:5, 100:105])
Docs abdul-aziz ability able abroad, abu accept
127 0 0 0 0 0 0
144 0 2 0 0 0 0
191 0 0 0 0 0 0
194 0 0 0 0 0 0
211 0 0 0 0 0 0
如果需要考察多个文档中特有词汇的出现频率,可以手工生成字典,并将它作为生成矩阵的参数
(d <- Dictionary(c("prices", "crude", "oil")))
inspect(DocumentTermMatrix(reuters, list(dictionary = d)))
因为生成的矩阵是一个稀疏矩阵,再进行降维处理,之后转为标准数据框格式
dtm2 <- removeSparseTerms(dtm, sparse=0.95)
data <- as.data.frame(inspect(dtm2))
再之后就可以利用R语言中任何工具加以研究了,下面用层次聚类试试看
先进行标准化处理,再生成距离矩阵,再用层次聚类
data.scale <- scale(data)
d <- dist(data.scale, method = "euclidean")
fit <- hclust(d, method="ward")
绘制聚类图
plot(fit)
可以看到在20个文档中,489号和502号聚成一类,与其它文档区别较大。
tm
R语言
文本挖掘
tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明
library(tm)
vignette("tm")
首先要读取文本,本次操作所用的文本是tm包自带的20个XML格式文本,存放在library\tm\texxts\crude文件夹中。用Corpus命令读取文本并生成语料库文件
reut21578 <- system.file("texts", "crude", package = "tm")
reuters <- Corpus(DirSource(reut21578), readerControl = list(reader = readReut21578XML))
下一步用tm_map命令对语料库文件进行预处理,将其转为纯文本并去除多余空格,转换小写,去除常用词汇、合并异形同意词汇
reuters <- tm_map(reuters, as.PlainTextDocument)
reuters <- tm_map(reuters, stripWhitespace)
reuters <- tm_map(reuters, tolower)
reuters <- tm_map(reuters, removeWords, stopwords("english"))
tm_map(reuters, stemDocument)
利用DocumentTermMatrix将处理后的语料库进行断字处理,生成词频权重矩阵
dtm <- DocumentTermMatrix(reuters)
部分矩阵内容可通过inspect来观察
inspect(dtm[1:5, 100:105])
Docs abdul-aziz ability able abroad, abu accept
127 0 0 0 0 0 0
144 0 2 0 0 0 0
191 0 0 0 0 0 0
194 0 0 0 0 0 0
211 0 0 0 0 0 0
如果需要考察多个文档中特有词汇的出现频率,可以手工生成字典,并将它作为生成矩阵的参数
(d <- Dictionary(c("prices", "crude", "oil")))
inspect(DocumentTermMatrix(reuters, list(dictionary = d)))
因为生成的矩阵是一个稀疏矩阵,再进行降维处理,之后转为标准数据框格式
dtm2 <- removeSparseTerms(dtm, sparse=0.95)
data <- as.data.frame(inspect(dtm2))
再之后就可以利用R语言中任何工具加以研究了,下面用层次聚类试试看
先进行标准化处理,再生成距离矩阵,再用层次聚类
data.scale <- scale(data)
d <- dist(data.scale, method = "euclidean")
fit <- hclust(d, method="ward")
绘制聚类图
plot(fit)
可以看到在20个文档中,489号和502号聚成一类,与其它文档区别较大。
相关文章推荐
- 利用R语言如何进行文本比较算法——LD算法
- 利用贝叶斯分类器进行文本挖掘---笔记
- [置顶] 基于R语言利用QQ群进行数据挖掘案例整理
- 利用贝叶斯分类器进行文本挖掘---笔记
- R语言文本挖掘tm包详解(附代码实现)
- R语言tm工具包进行文本挖掘实验
- 利用python的sklearn开源包进行文本挖掘
- 利用Google进行无长度限制的文本翻译(无需API,无需Money)
- 利用simhash来进行文本去重复
- 数据挖掘学习05 - 使用R对文本进行hierarchical cluster并验证结果
- 利用boost库进行字符串与文本处理
- Python 文本挖掘:使用gensim进行文本相似度计算 http://rzcoding.blog.163.com/blog/static/2222810172013101895642665/
- 利用R与SAS进行关联规则挖掘
- 转:Python 文本挖掘:使用gensim进行文本相似度计算
- Python 文本挖掘:使用机器学习方法进行情感分析(一、特征提取和选择)
- 利用Linux命令行进行文本按行去重并按重复次数排序
- 利用css的样式对文本进行隐藏和显示
- 利用cutetFTP软件在win7和虚拟主机上的linux系统进行文本传输
- 如何利用数据挖掘进行分析的方法
- 利用SSAS 2005进行数据挖掘