作者:赵镇宁 R语言中文社区特约作者
主题发现能够帮助我们处理和分析大规模信息并从中发现文本主要内容和主题,相关探测方法有文本聚类法、主题建模、多维尺度分析等等。这些分析方法的前期数据处理都不同程度的涉及分词、建立文档-词条矩阵、生成词条相似(相异)矩阵等关键步骤,本期主要是对前期数据预处理流程的大致总结,主要内容包括:
(1)分词:分词引擎+自定义词典+停用词词典
(2)特征(核心词)提取:高频词法+TF*IDF算法
(3)文档-词条矩阵(数据矩阵)建立:语料库+特征词+生成矩阵+稀疏矩阵处理
(4)词条相似性(相异度)矩阵建立:主要相关系数计算
本文用到的包有:
1. 数据收集
本文以《复仇者联盟3》500条热门豆瓣短评作为示例数据,数据抓取代码如下:
```
library(RCurl) # 网络请求
library(XML) # 网页解析
library(magrittr) # 管道操作
Cookie='your cookie'
headers
'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
errorurl
start
i
while(TRUE){
start=20*i
tryCatch({
url
web% htmlParse()
comment
if(length(comment)==0) break
comments
cat(sprintf("第%s页抓取成功",i),sep = "\n")
},error = function(e){
errorurl
})
Sys.sleep(runif(1,0.5,1.5))
i = i +1
}
save(comments,file="comment.Rdata")
```
2 文本预处理
以聚类为例,目前大多聚类算法通常选择两种代表性的数据结构,一是数据矩阵(对象-属性结构),即用P个变量(属性)来表现n个对象,如用年龄、身高、性别等属性来表现对象“人”,可以看成一个n*p的矩阵;二是相异度矩阵(对象-对象结构或属性-属性结构),