前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言基于tm包开启文本挖掘

R语言基于tm包开启文本挖掘

作者头像
一粒沙
发布2020-12-30 16:10:56
1.2K0
发布2020-12-30 16:10:56
举报
文章被收录于专栏:R语言交流中心

今天我们看下文本挖掘在R语言中是如何被实现。文本挖掘作为自然语言处理的一个分支,主要目的是一个抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识,并且利用这些知识更好地组织信息的过程。本次主要给大家介绍下tm包的使用。首先看下包的安装:

代码语言:javascript
复制
install.packages(“tm”)
install.packages(“filehash”)

首先看下此包中主要的参数render取值的范围:

接下来看下source所允许的读取方式:DataframeSource, DirSource, URISource, VectorSource,和 XMLSource。其输入格式:URISource(x, encoding ="", mode = "text")。其中mode可以是text,binary。或者是空,那样就是只获取url不读取其中的内容。

接下来就是构建语料库,语料库的构建需要整合上面的两个函数,有如下四种语料库的构建:

1. SimpleCorpus(x, control = list(language= "en"))。这个语料库的构建是最简单将DataframeSource,DirSource 和VectorSource资源进行读取并构建在内存中的语料库形式。没有render参数的引入

2. VCorpus(x, readerControl = list(reader =reader(x), language = "en"))此方法内置了render方法,支持所有的source格式。但无法引入R外部的数据库资源。

3. PCorpus(x, readerControl = list(reader =reader(x), language = "en"),dbControl = list(dbName = "",dbType = "DB1")) 支持基于filehash包的数据库导入,可以在内存中出现多个,并且对其进行操作。

4. DCorpus( x, readerControl =list(reader = reader(x), language ="en"), storage = NULL, keep = TRUE, ... ) 基于tm.plugin.dc包构建分布式语料库,例如在HDFS中语料库的构建。

最后我们看下对语料库的操作,我们直接通过一个实例看下输出结果:

代码语言:javascript
复制
txt<- system.file("texts","txt", package = "tm")
ovid<-Corpus(DirSource(txt), readerControl= list(language = "lat"))
代码语言:javascript
复制
#查看语料库的内容
inspect(ovid)
代码语言:javascript
复制
#查看总结信息
summary(ovid)

另外还可以基于tm_map()函数将函数应用在语料库里,实例:

代码语言:javascript
复制
inspect(tm_map(ovid,toupper))

构建术语文档或文档术语矩阵,实例:

代码语言:javascript
复制
#术语文档构建,其中stopword是包默认的列表,当然也可以自己定义或者设为FALSE
tdm <- TermDocumentMatrix(ovid,
                          control =list(removePunctuation = TRUE,
                                        stopwords =F))
代码语言:javascript
复制
#文档术语矩阵,其中weightTfIdf根据词频-文档频率的倒数,为词频-文档矩阵加权。

dtm <- DocumentTermMatrix(ovid,
                          control =list(weighting =function(x) weightTfIdf(x, normalize =FALSE),
                                         stopwords= F))
代码语言:javascript
复制
##发现频数大于5的术语
findFreqTerms(dtm, 5)
代码语言:javascript
复制
##获得文档之间的距离,method包括:binary,canberra,maximum,manhattan。
movid<- as.matrix(dtm) 
dist(movid, method ="binary"  )
代码语言:javascript
复制
###层次聚类
  d= dist(movid,method = "binary"  )
hclustRes <-hclust(d,method="complete") 
plot(hclustRes,main ="文件聚类分析")
代码语言:javascript
复制
##主成分分析
 
k <- princomp(d)
screeplot(k,npcs=6,type='lines')
代码语言:javascript
复制
windows()

biplot(k)

当然,大家还可以借助其它包比如SnowballC进行更深入的挖掘。

欢迎大家学习交流!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档