1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > R语言文本挖掘相关包介绍

R语言文本挖掘相关包介绍

时间:2021-02-15 05:54:29

相关推荐

R语言文本挖掘相关包介绍

本文摘自《Kears深度学习:入门、实战及进阶》第10章10.2小节。

文本挖掘被描述为“自动化或半自动化处理文本的过程”,中文分词的结果就可以直接用来建立文本对象,最常用的结构就是词条与文档的关系矩阵,利用这个矩阵可以使用很多文本挖掘的算法来得到不同的结果,包括相似度计算、文本聚类、文本分类、主题模型、情感分析等。

R语言提供了丰富的扩展包来完成文本分词和建模。常用的有tm、tmcn、RwordSeg、jiebaR、tidytext等扩展包。以下对这些扩展包进行简要介绍及安装。

tm包是文本挖掘的基础框架包,它被很多NLP相关的包。tm.plugin.dc、tm.plugin.mail、tm.plugin.factiva是针对tm包的扩展,可以用来分布式存储语料、处理邮件文本、获取Factiva语料。

tm包的安装非常简单,直接通过命令install.packages("tm")即可完成安装。

tmcn试图去解决tm包的问题,先从中文支持开始,然后逐渐更新去解决各种问题,同时也会兼顾tm框架,在框架之外进行一些有益的补充。tmcn包突出的优点如下:

中文编码:各种编码的识别和UTF-8之间的转换;中文简体字和繁体字之间的切换;增强了tau包中的一些功能。

中文语料资源:例如GBK字符集及中文停止词等。

字符处理:常用的字符处理函数,一些函数是对stringr包的优化或者不同实现。

文本挖掘:基于基础R对象的文本挖掘框架,包含常用的文本挖掘模型,包含一些独立的NLP库,比如CRF++、word2vec等。

tmcn包目前在R-forge上开发和发布,读者可以下载不同系统的版本进行安装。

在最新版本的R中可以使用以下命令直接通过R-forge安装:

install.packages("tmcn", repos = "http://R-Forge.R-")

Rwordseg是一个R环境下的中文分词工具,使用rJava调用Java分词工具Ansj。

Rwordseg包完全引用了Ansj包,在这个Java包的基础上开发了R的接口,并根据R处理文本的习惯进行了调整。

能否成功安装Rwordseg包的前提是需提前安装rJava依赖包,而安装rJava前提是本机需要安装JDK(JavaPlatform),可从Oracle官网免费下载与R对应系统位数一致的JDK进行安装及环境变量配置。然后,可通过以下命令在线安装rJava包和Rwordseg包。

install.packages("rJava")install.packages("Rwordseg",repos="http://R-Forge.R-")

如果以上命令Rwordseg包安装不成功,也可直接在R-forge网站下载Rwordseg压缩包进行本地安装。

结巴分词(jiebaR)是一款高效的R语言中文分词包,底层使用的是C++,通过Rcpp进行高效调用。jiebaR支持最大概率法(MaximumProbability),隐式马尔科夫模型(HiddenMarkovModel),索引模型(QuerySegment),混合模型(MixSegment),共四种分词模式,同时有词性标注,关键词提取,文本Simhash相似度比较等功能。

jiebaR已经发布到CRAN上,可以通过以下命令进行在线安装。

install.packages("jiebaR")

由于文本是非结构化数据,常规的数据处理及可视化方法不适合做文本分析。tidytext包提供了相对简单却实用的功能,其将文本视为单个单词的数据框架可以使我们轻松地对文本进行操作、汇总和可视化,这使得许多文本挖掘任务变得更容易高效。

tidytext已经发布到CRAN上,可以通过以下命令进行在线安装。

install.packages("tidytext")

最后,让我们先看本章一个对中国四大名著进行词频统计的例子。

文本挖掘的一个常见任务是查看分词后的词频,并比较不同文本的频数。

运行以下代码对水浒传的词频进行统计,并对词频进行降序排序。

> library(mqxsr)> mqxs <- books()> unique(mqxs$book)[1] 水滸傳三國志演義 西遊記紅樓夢喻世明言 警世通言 醒世恆言Levels:水滸傳三國志演義西遊記紅樓夢喻世明言警世通言醒世恆言

> tidy_mqxs_simplified %>%+ filter(book=="水浒传") %>%+ count(word,sort = TRUE)# A tibble: 13,027 x 2wordn<fct> <int>1 了80622 道57043 来36914 裏33325 我32886 你30507 去30328 那29859 人283810 的2646# ... with 13,017 more rows

运行以下代码对三国志演义的词频进行统计,并对词频进行降序排序。

> tidy_mqxs_simplified %>%+ filter(book=="三国志演义") %>%+ count(word,sort = TRUE)# A tibble: 15,479 x 2wordn<fct> <int>1 曰87212 之62693 兵32984 人23995 将23396 吾22747 为22678 不22429 军224010 也2230#...with15,469morerows

运行以下代码对西游记的词频进行统计,并对词频进行降序排序。

> tidy_mqxs_simplified %>%+ filter(book=="西遊记") %>%+ count(word,sort = TRUE)# A tibble: 18,673 x 2wordn<fct> <int>1 道97632 了71973 那68384 我63435 他56006 你52597 的51908 是41869 行者 415610 来3141#...with18,663morerows

运行以下代码对红楼梦的词频进行统计,并对词频进行降序排序。

> tidy_mqxs_simplified %>%+ filter(book=="红楼梦") %>%+ count(word,sort = TRUE)# A tibble: 18,630 x 2wordn<fct> <int>1 了 188272 的 151483 道80094 我77315 他66666 说66537 是61618 你60359 也580810 人5273#...with18,620morerows

利用wordcloud()函数对水浒传中出现频率最高的200个词语进行词云展示。

if(!require(wordcloud)) install.packages("wordcloud")> data_sub <- tidy_mqxs_simplified %>%+ filter(book== "红楼梦") %>%+ count(word,sort = TRUE) %>%+ top_n(200)Selecting by n> wordcloud(data_sub$word,+ data_sub$n,+random.order=F)

我们也可以利用wordcloud2包的wordcloud2()函数对词频进行交互式的词云展示。

> library(wordcloud2)> data_sub <- tidy_mqxs_simplified %>%+ filter(book== "三国志演义") %>%+ count(word,sort = TRUE) %>%+ top_n(200)Selecting by n>wordcloud2(data_sub,shape='star')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。