R语言进行词云统计分析

本文章从爬虫、词频统计、可视化三个方面讲述了R语言的具体应用,欢迎大家共同谈论学习

1、使用 rvest 进行数据的爬取

#如果没有,先安装rvest包
install.packages("rvest")
library(rvest)
url <- "http://www.sohu.com/a/123426877_479559"
#读取数据,规定编码
web <- read_html(url, encoding = "utf-8")
position <- web %>% html_node("article.article") %>% html_text()
  • %>%管道函数,将左边的值赋给右边函数作为第一个参数的值
  • web存储网页信息的变量。
  • html_nodes()函数获取网页里的相应节点
  • html_text()函数获取标签内的文本信息

要获取网页中的节点,打开所要爬取网页内容——>按F12——>找到内容所对应的网页节点

2、使用jiebaR进行分词,统计词频

#install.packages("jiebaR")
library(jiebaR)
#初始化分词引擎并加载停用词
#user表示需要组合到一起的单词
#stop_word删除不需要出现的词
engine_s <- worker(user = "E:/R-Test/dictionary.txt", stop_word = "E:/R-Test/stopwords.txt")
#分词处理
seg<-segment(position, engine_s)
#统计词频
f <- freq(seg)
#根据词频降序排列(FALSE升序排列)
f <- f[order(f[2], decreasing = TRUE),]
#显示前30行的数据
head(f, 30)

1)“dictionary.txt”,是指明需要组合到一起的词组,比如说在默认情况下分词的结果可能会将“机器学习”处理成“机器”,“学习”,而我们其实想要的是“机器学习”,所以需要加载此字典表进行指定。注意:此文件的内容是自己指定的,具体内容如下:

机器学习
公众号
互联网
大鳄
大数据

2)“stopwords.txt”,是需要过滤掉的词组,比如“它”、“就是”、“作者”等词对于我们分析没有实际意义,我们就不需要统计他们,具体内容:


就是




这个
作者




3、使用wordcloud2包进行可视化

wordcloud2包的安装就不能像前面的直接使用install.packages("wordcloud2")进行安装了,因为这样的安装的wordcloud2就无法绘制图片和汉字的词云。他需要先安装“devtools”包,具体方法如下:

#安装方法1:
install.packages('devtools')
library('devtools')
install_github("lchiffon/wordcloud2")
library(wordcloud2)
#安装方法2(在RStudio中执行):
if(!require(devtools)) install.packages("devtools")
devtools::install_github('lchiffon/wordcloud2')

然后就使用词云进行绘图了,这里 shape 的参数有:默认为圆形(circle),cardioid(心形),star(星形),diamond(钻石形),triangle-forward(三角形),triangle(三角形),这两个三角形就是倾斜方向不同而已,pentagon(五边形)。

#为了显示效果,只提取前150个字
f2 <- f[1:150,]
#形状设置为一颗五角星
wordcloud2(f2, size = 0.8, shape = "star"
wordcloud2(f2, size =0.745, shape = "cardioid")
wordcloud2(f2, size =0.9, shape = "diamond")

加载一张图片,让显示图片的样式

#加载一张图片
path <- "E:/R-Test/245937.jpg"
#如果图形不像,调整size的值
wordcloud2(f, size = 0.45, figPath = path)

letterCloud用来显示指定的字母或者汉字,Word参数用于设置绘制词云形状为“”这个字

letterCloud(f2, word = "LOVE", size = 0.7)

【注意】可能我们已经发现,前面图中出现的高频词汇“机器学习”、“算法”等随着我们画出来的图丢失了。那是应该我们后边描绘的图的边太细,而“机器学习”的词频又特别高,所以就显示不出来。因此我们在选择绘图的时候不能为了美观而忽略了高频词

最新文章

  1. Hangfire项目实践分享
  2. javase基础复习攻略《三》
  3. loadrunner通过字符串左右边界切割字符串
  4. android recover 系统代码分析 -- 选择进入
  5. linux_vim_快捷键
  6. 数据结构实习-迷宫(基于Qt实现)
  7. python+appium+unittest自动化测试框架环境搭建
  8. 开发一个项目之npm
  9. 我的第一个python web开发框架(23)——代码版本控制管理与接口文档
  10. 使用vue+elementUI+springboot创建基础后台增删改查的管理页面--(1)
  11. websockect外网无法访问问题
  12. 求解100以内的所有素数(问题来自PythonTip)
  13. Android——Broadcast Receive 相关知识总结贴
  14. 【ML】Predict and Constrain: Modeling Cardinality in Deep Structured Prediction -预测和约束:在深度结构化预测中建模基数
  15. 【PyQt5-Qt Designer】QMessageBox 弹出框总结
  16. python-面向对象-04_面向对象封装案例
  17. Excel和Word 简易工具类,JEasyPoi 2.1.7 版本发布
  18. 编写一个c++工程
  19. 【arm学习】我的第一个裸板程序
  20. [Python]将Excel文件中的数据导入MySQL

热门文章

  1. devexpress chart 散点图加载并分组显示(可以自定义颜色 同组中的点颜色相同)
  2. 错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息
  3. Struts2学习-json
  4. ssh配置调试的必杀技
  5. How to update BOL entity property value via ABAP code
  6. POJ-1845 Sumdiv---因子和(快速幂+快速加法+因子和公式)
  7. java中的泛型2--注意的一些问题和面试题
  8. JAVA中日期 yyyy-MM-dd HH:mm:ss和yyyy-MM-dd hh:mm:ss的区别
  9. mongodb在windows平台安装和启动
  10. Perl中的字符串操作函数