文本分词,就是对文本进行合理的分割,从而可以比较快捷地获取关键信息。例如,电商平台要想了解更多消费者的心声,就需要对消费者的文本评论数据进行内在信息的数据挖掘分析,而文本分词是文本挖掘的重要步骤。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. js小数相加精度不准确

    例: 0.1+0.1+0.1+0.7 != 1 0.1+0.2 != 0.3 解决办法: 相加 function addNum(num1, num2) {         let sq1, sq2; ...

  2. js使用sort将JSON数据进行排序

    在把数据通过Echarts展示成统计图模式时,柱状统计图需要将数据进行从大到小来排序! 下面为所需要的数据: 1 { 2 mapData: [ 3 {name: '北京',value: '555'}, ...

  3. docker 配置 anaconda + jupyter notebook 纪要

    首先,pull官方的镜像,名字叫:continuumio/anaconda3 首先的首先,如果默认还是需要sudo运行docker命令,可以考虑把当前用户加入到docker组(usermod -aG ...

  4. leetcode用例导入数据库(PHP实现) import leetcode json case into database

    <?php // 换成你自己的json $str = '{"headers":{"student":["name","con ...

  5. 吴恩达机器学习-终于完成ex4

    几年前就想学习吴恩达的老课-机器学习,学了n次都没有坚持下来.其实很多东西都是这样,开始的时候信誓旦旦,信心满满,慢慢的就泄气了. 每天铺天盖地的深度学习,人工智能听得耳朵都要起茧子了.这算法,那框架 ...

  6. 解决git仓库项目 添加到github非空仓库冲突问题 error: failed to push some refs to 'https://github.com/Qtoken/......'

    error: failed to push some refs to 'https://github.com/Qtoken/......' 1. 问题描述:执行命令:git push origin m ...

  7. MFC的对话框使用Scintilla

    工作中需要做一个脚本编辑器的工具,用于代码补全.语法高亮.错误提示等功能,可以直接使用开源控件Scintilla, 网上有一些MFC的多文档使用Scintilla的例子,项目中使用的是对话框,自己实现 ...

  8. Oracle联机备份与恢复

    联机备份又称为热备份,在数据库运行的情况下对数据库进行物理备份.进行联机备份,数据库必须运行在归档日志(ARCHIVELOG)模式下. 联机完全备份步骤: 1.设置归档日志模式,创建恢复目录用的表空间 ...

  9. PASS模型小程序设计阶段-里程碑第三组

    班级网址 https://edu.cnblogs.com/campus/zjcsxy/SE2020 作业要求 https://edu.cnblogs.com/campus/zjcsxy/SE2020/ ...

  10. sqlserver 数据导入MySQL

    sqlserver导出成Excel文件数据 为什么用Excel文件数据? sql文件不通用 CVS文件编码报错 text文件日期/时间戳报错 修改Excel文件中的日期字段 需要格式化日期字段为 yy ...