随着电子商务的快速发展,越来越多的人通过电商网站来了解产品信息、购买商品并通过评价表达自己购买商品过程的感受、对购买商品的满意程度和对所购买商品的建议和要求等。电商网站商品评价舆情是客户了解商品和店家服务的一种重要渠道和表达方式。
大数据时代背景下,电子商务领域也面临着数据急剧扩张的问题,评论文本也是如此,尤其是热门销售产品,其评论文本可以在短时间内达到极高的累计值,此时进行评论文本的人工阅读与分析不仅耗费时间和精力,也无法确保分析的准确性和全局性,所以有必要借助数据分析手段以及自然语言处理等方法来实现文本的快速、准确分析。
聚类分析是一种自动、快速实现评论文本信息挖掘的有效方式。通过对顾客评沦文本聚类,可以实现热点话题的自动识别,提取产品的优势与不足,指导生产与营销,并实现顾客的有效划分,为后续更加精准的营销提供良好的分析基础。
本示例采集了京东热卖生鲜水——智利进口车厘子的买家评论,对评沦数据集进行了热点词提取、聚类分析。
#读取数据
>if(!require("readxl")){install.packages("readxl");library("readxl")}
>if(!require("jiebaR")){install.packages("jiebaR");library("jiebaR")}
>if(!require("wordcloud2")){devtools::install_github("lchiffon/wordcloud2") ;library("wordcloud2")};
> data=read_excel(file.choose())
> data=as.data.frame(data)
#构建分词词库和停用词词库
> root<-"C:/Users/Administrator/Desktop/"
> root
[1] "C:/Users/Administrator/Desktop/"
>wk=worker(user=paste(root,"userwords.txt",sep=""),stop_word=paste(root,"stopch.txt",sep=""))
> myfc <- wk[data$评价内容]
#词频计算
> wordsNum <- freq(myfc)
#提取关键字
> keys =worker("keywords",topn=9)
> vector_keywords(myfc,keys)
2435.67 1635.91 1159 1065.58 929.026 847.756 757.879 752.211 637.75
"新鲜" "好吃" "味道" "很甜" "个头" "送货" "包装" "快递" "口感"
#云标签
> wordcloud2(wordsNum[which(wordsNum$freq>30),])
分析:从云标签中由词的大小可以明显的看出评价词出现的次数,对于京东智利进口的车厘子这一产品的评价,分为正负两种。由云标签看出新鲜、好吃,很甜等正面评价。由于负面评价较为少在云标签中没有显示,频率不够。总体来说对于京东这一进口产品,大部分人的态度都是比较喜欢的。
#用文本列表变量构建语料库。
>textseg<-sapply(data$评价内容,segment,wk)
> mymatrix<-VCorpus(VectorSource(textseg))
将语料库转换成词项-文档稀疏矩阵。该矩阵的列对应语料库中所有的文档,矩阵的行对应所有文档中抽取的词项,矩阵中[i,j]位置的元素代表词项i在文档j中出现的次数。
>demodtm<-DocumentTermMatrix(mymatrix,control=list(wordLengths = c (1, Inf )))
将词项-文档矩阵转换为普通矩阵,接下来将使用这个矩阵选择聚类算法进行聚类分析。
> demomatrix<- as.matrix(demodtm)
这里使用k=29进行进行聚类分析,并将聚类结果保存在demokmeansRes.csv中。
> mykmeans<-kmeans(demomatrix,29)
> demokmeansRes <-data.frame(content=data$评价内容, type=mykmeans$cluster)
#查看第一组数据
> demokmeansRes[which(demokmeansRes$type==1),]
#查看第二组数据
demokmeansRes[which(demokmeansRes$type==2),]
#查看第三组数据
head(demokmeansRes[which(demokmeansRes$type==3),])
> emotion=c();
> for(i in 1:29){
+temp=demokmeansRes[which(demokmeansRes$type==i),]$content;
+ myfc <- wk[as.character(temp)]
+ keys =worker("keywords",topn=3)
+ tempE=as.character(vector_keywords(myfc,keys));
+ emotion[i]=paste(tempE[1], tempE[2] ,tempE[3], sep="/")
+ }
>comment<-data.frame(content=data$评价内容,type=mykmeans$cluster)
> for(i in 1:nrow(comment)){
+ for(j in 1:29){
+ if(comment[i,2]==j){comment[i,3]=emotion[j]}
+ }
+ }
> names(comment)=c("content", "type", "emotion")
> write.csv(comment, "d:/comment.csv")
> emotion
分析:将京东智利进口的车厘子商品评论进行聚类后,提取关键字,然后对关键字做分析。聚类结果关键字,能很好体现大部分顾客对于这一产品的满意度。由上图可知,味道、个头、包装等都是顾客的关注点,对于这些也比较满意。整体来说这一商品在顾客中的口碑不错,值得继续采购。