R语言文本数据挖掘(二)
tm文本挖掘示例
文本挖掘是从非结构化的文本信息中抽取潜在的、用户感兴趣的重要模式或知识的过程,可以把它看作数据挖掘或数据库中知识发现的延伸。对文本信息的挖掘主要是以数理统计学和计算语言学为理论基础,让计算机发现某些文字出现的规律以及文字与语义、语法间的联系。文本挖掘涉及多个学科领域,如信息检索、文本分析、信息抽取等。文本挖掘被描述为“自动化或半自动规划处理文本的过程”,包含了文档聚类、文档分类、自然语言处理、文体变化分析及网络舆情等领域内容。对于文本处理过程首先要拥有分析的语料(text corpus),比如报告、信函、出版物等。而后根据这些语料建立半结构化的文本库(text database)。而后生成包含词频的结构化的词条-文档矩阵(term-document matrix)。 这个一般性数据结构会被用于后续的分析,比如:1)文本分类,比如根据现有的文本分类情况,对未知文本进行归类:2)语法分析;3) 信息提取和修复;4) 文档信息汇总,比如提取相关有代表性的关键词、句子等。
一、R包安装与数据导入
1.1 安装相关包
library(XML)
library(SnowballC)
library(tm.plugin.webmining)
library(tm)
library(Rwordseg)
1.2 数据导入语料库
#找到tm包下texts/crude文件夹的位置,里面含有20个xml文档
adress=system.file("texts","crude",package="tm")
reuters=Corpus(DirSource(adress),readerControl=list(reader=readReut21578XML))
二、数据处理
2.1 分词和整理
#将reuters转换为纯文本,去除标签
reuters=tm_map(reuters,PlainTextDocument)
# 所有字母转换成小写
corpus_clean <- tm_map(reuters, tolower)
# 去除text中的数字
corpus_clean <- tm_map(reuters, removeNumbers)
# 去除停用词,例如and,or,until...
corpus_clean <- tm_map(reuters, removeWords, ("english"))
# 去除标点符号
corpus_clean <- tm_map(reuters, removePunctuation)
# 去除多余的空格,使单词之间只保留一个空格
corpus_clean <- tm_map(reuters, stripWhitespace)
2.2 文档矩阵化
#将文档转为稀疏矩阵,
dtm <- DocumentTermMatrix(reuters)
#找出发生5次及以上的条目
findFreqTerms(dtm, 5)
#找相关性,比如对于opec,找到相关系数在0.8 以上的条目
findAssocs(dtm, "opec", 0.8)
#要考察多个文档中特有词汇的出现频率,可以手工生成字典,并将它作为生成矩阵的参数
d <- Dictionary(c("prices", "crude", "oil"))
inspect(DocumentTermMatrix(reuters, list(dictionary = d)))
#inspect函数查看部分矩阵内容
inspect(dtm[1:5,740:743])
#使用筛选器筛选出ID=237的文档
idx<-meta(reuters,"id")=='237'
reuters[idx]
#找出词频在5次以上的词
findFreqTerms(dtm,5)
#找出与opec相关系数在0.8以上的词
findAssocs(dtm,"opec",0.8)
三、结果获取
#进行降维处理
dtm2 <- removeSparseTerms(dtm, sparse=0.95)
#将term-document矩阵生成数据框
data <- as.data.frame(inspect(dtm2))
#查看词条-文本矩阵
inspect(tdm[202:205, 1:5])
inspect(tdm[c("price", "texas"), c("127", "144", "191", "194")])
inspect(dtm[1:5, 273:276])
#频数提取
findFreqTerms(dtm, 5)
#相关性提取
findAssocs(dtm, "opec", 0.8)
四、可视化
data(crude)
crudeDTM <- DocumentTermMatrix(crude, control = list(stopwords = TRUE))
#crudeDTM <- removeSparseTerms(crudeDTM, 0.8) #可以选择去除权重较小的项
crudeDTM.matrix <- as.matrix(crudeDTM)
d <- dist(crudeDTM.matrix,method="euclidean")
hclustRes <- hclust(d,method="complete")
hclustRes.type <- cutree(hclustRes,k=5) #按聚类结果分5个类别
length(hclustRes.type)
hclustRes.type #查看分类结果
plot(hclustRes, xlab = '') #画出聚类系谱图
参考文献
1.(R语言文本挖掘tm包详解)[https://www.jianshu.com/p/948eef869be3]
2.(R语言学习-词频学习)[https://www.136.la/tech/show-598389.html]
R语言文本数据挖掘(二)的更多相关文章
- R语言︱情感分析—基于监督算法R语言实现(二)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...
- R语言语法基础二
R语言语法基础二 重塑数据 增加行和列 # 创建向量 city = c("Tampa","Seattle","Hartford"," ...
- R语言︱文本(字符串)处理与正则表达式
处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本.R语言是统计的语言,处理文本不是它的强项,perl语言这方面的功能比R不知要强多少倍.幸运的是R语言的可扩展能力很强,DN ...
- R语言实战(二)数据管理
本文对应<R语言实战>第4章:基本数据管理:第5章:高级数据管理 创建新变量 #建议采用transform()函数 mydata <- transform(mydata, sumx ...
- R语言入门(二)基础语法
1.help可以提供帮助,如help(nchar), help("[["),或者用?nchar也能获取帮助.example(nchar)可以获取到某个主题的使用方法. 2.ncha ...
- R 语言学习(二)—— 向量
1. 入门 将摄氏度转化为华氏度 >> 27*1.8+32 [1] 80.6 [1]:表示数字的向量索引号,在 R 语言中任何一个数字都看作一个向量. 向量化 >> temp ...
- R语言实战(二)——数据分析基础知识
一.R中数据结构 1.数据集 通常是由数据构成的一个矩形数组,行 表示 观测(记录.示例),列 表示 变量(字段.属性) 2.R中的数据结构 3.向量 c()可以用来创建向量 > a <- ...
- [读书笔记] R语言实战 (二) 创建数据集
R中的数据结构:标量,向量,数组,数据框,列表 1. 向量:储存数值型,字符型,或者逻辑型数据的一维数组,用c()创建 ** R中没有标量,标量以单元素向量的形式出现 2. 矩阵:二维数组,和向量一 ...
- R语言实战(二) 创建数据集
2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable),数据库分析师则称其为记录(record)和字段(field),数据 ...
- R语言学习记录(二)
4.对象改值 4.1.就地改值 比如: vec <- c(0,0,0,0,0,0,0) vec[1]<-100 #vec向量的第一个值就变为100 ####对于数据框的改值的方法,如下面的 ...
随机推荐
- Liunx mosquitto卸载
1.查询文件: whereis mosquitto whereis mosquitto_sub 2.删除查询到的文件,命令: rm -rf /etc/mosquitto rm -f /usr/loca ...
- 双指针_Leetcode刷题_13/100
算法解释 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务.也可以延伸到多个数组的多个指针. 若两个指针指向同一个数组,遍历的方向相同且不会相交,则也称为滑动窗口: 若两个指针指向同一 ...
- MyBatis-Plus数据源失效找不到
记一次项目排查问题项目应用了MyBatis-Plus多数据源配置但是在执行定时任务时发现没达到想要的结果于是查询日志分析问题最终发现问题所在多数据源注解会合事务注解冲突导致失效@DS("&q ...
- Web_Servlet之间请求转发
Servlet2 @WebServlet(urlPatterns = "/aa") public class JspService extends HttpServlet { pr ...
- FCC 中级算法题 Everything Be True
Everything Be True 所有的东西都是真的! 完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真.函数返 ...
- 第一天1h
//摄氏度和华氏度之间的换算//20211120//ZhangWenjing#include<stdio.h>int main(void){ int f = 0; int c = 0; s ...
- springboot修改事务隔离级别
[SpringBoot]事务的隔离级别.Spring的事务传播机制_51CTO博客_springboot事务隔离级别
- C# DataTable操作,转载
DataTable 排序 DataRow[] rows = dataTable1.Select("", "ord asc"); DataTable t ...
- Python第五章实验报告
一.实验项目名称:<零基础学Python>第五章实战.实例以及两道作业题 二.实验目的和要求:了解和掌握操作字符串的方法和正则表达式的应用 三.实验环境:IDLE(Python 3.9 6 ...
- Https交互原理
Http超文本传输协议 基于tcp和Ip实现的一种可靠的传输协议,可靠的保证了客户端和服务器之间的传输不会丢失,但是却没办法保证传输数据的安全性. Https是Http的升级版本,用于解决Http数据 ...