文本分词,就是对文本进行合理的分割,从而可以比较快捷地获取关键信息。例如,电商平台要想了解更多消费者的心声,就需要对消费者的文本评论数据进行内在信息的数据挖掘分析,而文本分词是文本挖掘的重要步骤。R语言中,对中文分词支持较好的包有RWordseg包和jiebaR包,这里学习jiebaR包。

一、jiebaR中文分词

加载中文分词包

library(jiebaR)
library(wordcloud2)
library(dplyr)

以《笑傲江湖》这篇小说做示例。读取文本文件,注意编码格式,不然会出错。这篇文本的编码为 ANSI。

words <- readLines('XiaoAoJiangHu.txt',encoding = 'ANSI')
mixseg <- worker()
dic <- c('令狐冲', '任盈盈', '岳灵珊', '林平之', '岳不群',
'左冷禅', '任我行', '辟邪剑谱', '葵花宝典',
'日月神教', '华山派')
new_user_word(mixseg, dic)
seg <- segment(words, mixseg)

初始化分词引擎,并建立专业词词库。专业词词库中,我放了一些人物的姓名、武功秘籍和帮派名称。

停用词词库是我从网上搜到,直接导入进去!注意文本编码。

#停用词词库
stopwords <- readLines('stopwords.txt',encoding = 'UTF-8')
seg <- filter_segment(seg, stopwords)
#至此,分词这一步就做好了。

二、jiebaR词频统计

统计词频,并将其出现次数由高到低排列,让我们看看前二十个词语是什么。

wordfreqs <- jiebaR::freq(seg) # 统计词频
wordfreqs <- dplyr::arrange(wordfreqs, -freq) # 将词频由高到低展示
head(wordfreqs,20) # 看看前20个词频是什么!
 head(wordfreqs,20)
char freq
1 林平之 264 2 田伯光 218 3 林震南 206
4 师父 167 5 说道 165 6 令狐大哥 161
7 青城派 148 8 师哥 147 9 定逸 138
10 余沧海 124 11 镖局 124 12 弟子 122
13 笑道 116 14 令狐冲 100 15 劳德诺 98
16 剑法 96 17 众人 82 18 曲非烟 80
19 尼姑 80 20 仪琳 80

可以看到,不愧是主角,“令狐冲”这个名词出现了。

三、词云图

绘制词云图也很简单,我们用到 wordcloud2 包中的函数。

colnames(wordfreqs)[1] <- 'word'
row.names(wordfreqs)<-wordfreqs$word
my_graph <- wordcloud2(
data=wordfreqs,size=0.5
)
my_graph

四、 完整R程序

library(jiebaR)
library(wordcloud2)
library(dplyr) textfile<- "2021.txt"
# 一行一行地读取文本数据
words <- scan(textfile, character(0), sep='\n',fileEncoding = "UTF-8") s<-''
for(i in words) {s<-paste0(s,i) } mixseg <- worker()
seg<- segment(s, mixseg) stopwords <- readLines('stopwords.txt',encoding='utf8')
seg<- filter_segment(seg, stopwords)
seg=seg[nchar(seg)>1] wordfreqs <- jiebaR::freq(seg) # 统计词频
wordfreqs <- dplyr::arrange(wordfreqs, -freq) # 将词频由高到低展??? index <- order(-wordfreqs[,2])
order2<-wordfreqs[index, ]
head(order2,20) # 看看???20个词频是什么! colnames(wordfreqs)[1] <- 'word'
row.names(wordfreqs)<-wordfreqs$word
my_graph <- wordcloud2(
data=wordfreqs,size=0.5
)
my_graph

参考文献

(R语言:jiebaR 包实现中文分词、统计词频及绘制词云图)[https://zhuanlan.zhihu.com/p/499935064]

R语言文本数据挖掘(四)的更多相关文章

  1. R语言︱文本(字符串)处理与正则表达式

    处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本.R语言是统计的语言,处理文本不是它的强项,perl语言这方面的功能比R不知要强多少倍.幸运的是R语言的可扩展能力很强,DN ...

  2. R语言实战(四)回归

    本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  3. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  4. R语言中的四类统计分布函数

    R语言中提供了四类有关统计分布的函数(密度函数,累计分布函数,分位函数,随机数函数).分别在代表该分布的R函数前加上相应前缀获得(d,p,q,r).如: 1)正态分布的函数是norm,命令dnorm( ...

  5. R语言数据管理(四):数据导出

    与read.*函数对应,导出函数为write.*函数. 比较常见的为write.csv和write.table. 一般格式: setwd("D:\\") write.table(y ...

  6. 【R语言进行数据挖掘】回归分析

    1.线性回归 线性回归就是使用下面的预测函数预测未来观测量: 其中,x1,x2,...,xk都是预测变量(影响预测的因素),y是需要预测的目标变量(被预测变量). 线性回归模型的数据来源于澳大利亚的C ...

  7. [读书笔记] R语言实战 (四) 基本数据管理

    1. 创建新的变量 mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8)) #方法一 mydata$sumx<-mydata$x1+mydata$x ...

  8. R语言实战(四)—— 基本数据管理

    一.基础操作 1.根据数据信息,创建数据框 > manager <- c(1,2,3,4,5) > date <- c("10/24/08","1 ...

  9. 【R语言进行数据挖掘】决策树和随机森林

    1.使用包party建立决策树 这一节学习使用包party里面的函数ctree()为数据集iris建立一个决策树.属性Sepal.Length(萼片长度).Sepal.Width(萼片宽度).Peta ...

  10. 大数据时代的精准数据挖掘——使用R语言

    老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...

随机推荐

  1. uniapp里面设置onlaunch以后在加载页面调接口

    main.js 里面 Vue.prototype.$onLaunched = new Promise(resolve => { Vue.prototype.$isResolve = resolv ...

  2. Java中集合基础相关知识

    1.集合基础 1.1 集合概述 编程的时候如果需要存储多个数据使用长度固定的数据存储,适应不了元素个数变化的需求,这时候我们就需要用集合. 集合类的特点:提供了一种存储空间可变的存储模型,存储的数据容 ...

  3. vector的使用方法

    vector是STL容器的可变长度数组.可变长度数组的头文件是<vector>,有以下常见的使用方法: 1.vector<int> v(N,i):建立一个可变长度数组v,内部元 ...

  4. Vue3 animate.css + wowjs 官网实现滚动到对应元素位置增加动画特效

    本人在Vue3中使用的是 setup语法糖 也就是 <script setup>...</ script> 在项目中install一下两个插件: yarn add animat ...

  5. drf认证与权限

    1 认证 # 登录认证--->某个接口必须登录后才能房屋# 登录接口--->登录成功返回随机字符串--->携带随机字符串[认证] 通过,再继续访问某个接口# 读APIView源码时, ...

  6. delphi 给 Timage 加上滚动条方法

    delphi Timage 加上滚动条的方法 1:将  Timage 放入 TScrollBox内,即   [1]设image1.parent:= ScrollBox1;   [2]在Object I ...

  7. Microsoft SQL Server,错误: 3023

    对数据库的备份.文件操作(如 ALTER DATABASE ADD FILE)以及加密更改必须序列化.请在当前备份或文件操作完成后重新发出该语句.ALTER DATABASE 语句失败. (Micro ...

  8. 3.javaweb-servlet

    1. 设置编码 tomcat8之前,设置编码: 1)get请求方式: //get方式目前不需要设置编码(基于tomcat8) //如果是get请求发送的中文数据,转码稍微有点麻烦(tomcat8之前) ...

  9. Net异步委托-泛型委托Action<T>与Func<T,TResult>及 异步调用AsyncCallback

    1.相同点 Func<ReqMode,ResultModel> 与 Action<ReqMode> 1).都是Net3.5 之后内置的委托方法,作用几乎一致 2).都支持lam ...

  10. Oracle入门- 数据库操作相关脚本

    1. 创建表 1 CREATE TABLE SYS_NOTICE 2 ( 3 GUID CHAR(32) NOT NULL, 4 TITLE VARCHAR2(128) NOT NULL 5 ); 6 ...