1 政府工作报告的词云分析
1.1 数据
从网上复制2021年政府工作报告到txt文件(由于R读取word文档需要安装新的库,比较麻烦,所以存储到了txt文件)。
1.2 分词
1.2.1 导入数据
> install.packages("Rwordseg")
> library(rJava)
> report=read.table("D:/Desktop/report.txt")
> class(report)
[1] "data.frame"
> report=as.character(report)
> report
[1] "c(\"政府工作报告\", \"——2021年3月5日在第十三届全国人民代表大会第四次会议上\", \"国务院总理 李克强\", \"各位代表:\", \"现在,我代表国务院,向大会报告政府工作,请予审议,并请全国政协委员提出意见。\", \" 一、2020年工作回顾\", \"过去一年,在新中国历史上极不平凡。面对突如其来的新冠肺炎疫情......
1.2.2 使用segmentCN()函数进行分词
> segmentCN("这里输入需要进行分词的句子或者段落")
[1] "这里" "输入" "需要" "进行" "分词" "的" "句子" "或者" "段" "落"
> segmentCN("这里输入需要进行分词的句子或者段落",returnType='tm')
[1] "这里 输入 需要 进行 分词 的 句子 或者 段 落"
> segmentCN(c("这里输入需要进行分词的句子或者段落","输入第二句话来构成向量"))
[[1]]
[1] "这里" "输入" "需要" "进行" "分词" "的" "句子" "或者" "段" "落"
[[2]]
[1] "输入" "第二" "句" "话来" "构成" "向量"
说明:1.segmentCN()函数默认返回中文词汇的向量。2.如果加上returnType='tm'参数后,将返回用空格隔开的一个字符串。3.如果输入是一个字符串向量,那么将返回一个列表,列表中每个项目都是一个词汇的向量。
> words=segmentCN(as.character(report))
> df_words = as.data.frame(table(words))
> head(df_words)
words Freq
1 1 7
2 10 4
3 100 5
4 1000 1
5 11 1
6 1100 1
说明:第一列是词汇,第2列是出现的频率,这里前6个词汇都是数字!这里是因为没有去除停用词导致的。
1.3 绘制词云
> library(wordcloud2)
> wordcloud2(df_words, size =1, fontFamily = "微软雅黑",color = "random-light", backgroundColor = "grey",shape = 'circle')
说明:默认的词云形状是椭圆,但是由于size太大,所以没有绘制成椭圆形。
> wordcloud2(df_words, size =0.3, fontFamily = "微软雅黑",color = "random-light", backgroundColor = "white",shape = 'circle')
2 网购评价的词云
2.1 爬取京东商品的评论数据(动态网页)
安装并加载RCurl包
> install.packages('RCurl')
> library(RCurl)
> library(tidyverse) #处理字符串
定义该网页的网址
注意:网页评论的地址并不是商品网页的地址,需要采用如下形式获取网址信息。
第一步:打开浏览器的“检查元素”功能,切换到network选项。
第二步:刷新整个商品网页
第三步:点击页面上的商品评价按钮
第四步:点击“检查元素”工具栏以“productPageComments...”开头的条目(这一步不同购物网站不一样,需要尝试、摸索、寻找)。右侧的Request URL就是商品评价的网络地址信息。
> url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100031406046&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
说明:该网址中有“fetchJSON”的字样,因而其请求的不是html的网页内容,而是JSON数据文件(JSON是存放数据的一种文件格式)。
getURL()函数请求数据信息
> web=getURL(url,.encoding='GBK')
说明:这里是GBK的编码格式。
将getURL()获取的数据转换为标准的JSON格式
> web=substr(web,nchar("fetchJSON_comment98")+2,nchar(web)-2)
> JSONData=jsonlite::fromJSON(web)
说明:"fetchJSON_comment98"来自网址的内容。JSONData就是包含最终获取的评论信息的变量。
获取商品评价数据:
> comment=JSONData$comments$content %>% str_remove_all("\\n") %>% str_remove_all(" ")
2.2 对评论数据进行分词
> cmt=segmentCN(as.character(comment))
> cmt=unlist(cmt)
> df_cmt = as.data.frame(table(cmt))
> head(df_cmt)
cmt Freq
1 11 1
2 12 1
3 120 1
4 120w 3
5 120W 1
6 12pro 1
2.3 绘制词云
> wordcloud2(df_cmt, size =0.3, fontFamily = "微软雅黑",color = "random-light", backgroundColor = "white",shape = 'circle')