本文摘自《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-project.org")

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

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

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

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

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

结巴分词(jiebaR)是一款高效的R语言中文分词包,底层使用的是C++,通过Rcpp进行高效调用。jiebaR支持最大概率法(Maximum Probability),隐式马尔科夫模型(Hidden Markov Model),索引模型(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 2word      n<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 2word      n<fct> <int>1 曰     87212 之     62693 兵     32984 人     23995 将     23396 吾     22747 为     22678 不     22429 军     224010 也     2230# ... with 15,469 more rows

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

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

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

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

利用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')

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

  1. R语言文本挖掘tm包详解(附代码实现)

    文本挖掘相关介绍 1什么是文本挖掘 2NLP 3 分词 4 OCR 5 常用算法 6 文本挖掘处理流程 7 相应R包简介 8 文本处理 词干化stemming snowball包 记号化Tokeniz ...

  2. R语言︱文本挖掘——jiabaR包与分词向量化的simhash算法(与word2vec简单比较)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- <数据挖掘之道>摘录话语:虽然我比 ...

  3. R语言 文本挖掘 tm包 使用

    为什么80%的码农都做不了架构师?>>>    #清除内存空间 rm(list=ls())  #导入tm包 library(tm) library(SnowballC) #查看tm包 ...

  4. R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)

    笔者寄语:与前面的RsowballC分词不同的地方在于这是一个中文的分词包,简单易懂,分词是一个非常重要的步骤,可以通过一些字典,进行特定分词.大致分析步骤如下: 数据导入--选择分词字典--分词 但 ...

  5. R语言·文本挖掘︱Rwordseg/rJava两包的安装(安到吐血)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言·文本挖掘︱Rwordseg/rJava ...

  6. R语言︱文本挖掘套餐包之——XML+SnowballC+tm包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言︱文本挖掘套餐包之--XML+tm+Sn ...

  7. R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量

    R语言使用caret包的findCorrelation函数批量删除相关性冗余特征.实现特征筛选(feature selection).剔除高相关的变量 目录

  8. R语言使用pwr包的pwr.r.test函数对相关信息分析进行效用分析(power analysis)、在已知效应量(effect size)、显著性水平、效用值的情况下计算需要的样本量

    R语言使用pwr包的pwr.r.test函数对相关信息分析(Correlations)进行效用分析(power analysis).在已知效应量(effect size).显著性水平(sig).效用值 ...

  9. R语言使用pwr包的pwr.r.test函数对相关信息分析(Correlations)进行效用分析(power analysis)的语法

    R语言使用pwr包的pwr.r.test函数对相关信息分析(Correlations)进行效用分析(power analysis)的语法 目录

最新文章

  1. 临床基因组学数据分析实战开课啦!!!
  2. jQuery 调用jsonp实现与原理
  3. php判断是否已关注,php判断用户是否关注微信订阅号或公众号
  4. python编程中文版百度百科_1.2 搭建python+pycharm编程开发环境
  5. 将近一半的用户希望能够在两秒内或者更短的时间内打开网站
  6. php cdi_通过MicroProfile上下文传播增强了CDI上下文和隔板
  7. JDK和CGLIB动态代理区别
  8. 微服务架构案例(04):中间件集成,公共服务封装
  9. 使用media player控件播放歌曲 winform
  10. jquery.tablesorter
  11. 最简单快速合并B站缓存视频和音频(video.m4s,audio.m4s)
  12. php 姓氏表,php 根据姓氏笔画排序怎么做
  13. python 炒股公式_计算股票公式
  14. macbook远程控制CentOS服务器
  15. 三坐标检测基础知识之RationalDMIS 2020 ,PC-DMIS 2019 点轮廓度(T值)算法说明
  16. 并发编程之CPU缓存架构缓存一致性协议详解(二)
  17. 自己写小工具 让工作更简单更效率
  18. 数据可视化工具有哪些
  19. 常见的网站性能测试瓶颈有哪几个?
  20. 解决VSCode:Comment Translate插件在远程SSH或远程Docker容器无法翻译

热门文章

  1. Oracle存储过程语法记录
  2. 医院病历的中英文翻译,医生病历本翻译
  3. UDF和UDAF,UDTF的区别
  4. deque实现生产者-消费者队列
  5. 校验码 - 奇偶校验
  6. 丢手帕程序C语言,约瑟夫问题,即丢手帕游戏
  7. MySQLSyntaxErrorException sql语句语法错误
  8. 电脑怎么重装系统?超简单小白一键重装教程
  9. JavaScript -- event handler
  10. Shell中获取字符串长度的七种方法