点击蓝字关注这个神奇的公众号~
作者:赵镇宁 R语言中文社区特约作者
往期回顾:
主题发现能够帮助我们处理和分析大规模信息并从中发现文本主要内容和主题,相关探测方法有文本聚类法、主题建模、多维尺度分析等等。这些分析方法的前期数据处理都不同程度的涉及分词、建立文档-词条矩阵、生成词条相似(相异)矩阵等关键步骤,本期主要是对前期数据预处理流程的大致总结,主要内容包括:
(1)分词:分词引擎+自定义词典+停用词词典
(2)特征(核心词)提取:高频词法+TF*IDF算法
(3)文档-词条矩阵(数据矩阵)建立:语料库+特征词+生成矩阵+稀疏矩阵处理
(4)词条相似性(相异度)矩阵建立:主要相关系数计算
本文用到的包有:
1. 数据收集
本文以《复仇者联盟3》500条热门豆瓣短评作为示例数据,数据抓取代码如下:
```
library(RCurl) # 网络请求
library(XML) # 网页解析
library(magrittr) # 管道操作
Cookie='your cookie'
headers <- c('Accept'='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Content-Type'='text/html; charset=utf-8',
'User'='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
'Cookie'=Cookie
)
comments<-c() # 短评
errorurl<-c() # 错误url
start<-0
i<-0
while(TRUE){
start=20*i
tryCatch({
url<-sprintf("https://movie.douban.com/subject/24773958/comments?start=%s&limit=20&sort=new_score&status=P&percent_type=",start)
web<-getURL(url,httpheader=headers)%>% htmlParse()
comment<-xpathSApply(web,"//div[@class='comment']//p[@class='']",xmlValue)
if(length(comment)==0) break
comments<-c(comments,comment)
cat(sprintf("第%s页抓取成功",i),sep = "\n")
},error = function(e){
errorurl<-c(errorurl,start)
})
Sys.sleep(runif(1,0.5,1.5))
i = i +1
}
save(comments,file="comment.Rdata")
```