用R语言进行网站评论文本挖掘聚类

对于非结构化的网站中文评论信息,r的中文词频包可能是用来挖掘其潜在信息的好工具,要分析文本内容,最常见的分析方法是提取文本中的词语,并统计频率。

由Kaizong Ye,Coin Ge撰写

频率能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多。


词语提取之后,进一步将其制作成词云是一种非常有效的可视化手段,可以直观地展示词语的频率属性,使得结果更加清晰易懂。

词云(Word Cloud)是一种通过对文本数据中词汇的频率进行可视化表示的方法。在词云中,每个词汇都用一个字体大小与其在文本中出现的频率成比例的标签来表示。因此,高频词汇通常会用较大的字体显示,而低频词汇则使用较小的字体。

比如对于如下的网站评论信息:

通过一系列的文本处理和高频词汇的提取,最后结合聚类,我们可以得到如下的可视化结果。


视频

文本挖掘:主题模型(LDA)及R语言实现分析游记数据

探索见解

去bilibili观看

探索更多视频

第一类客户:

第二类

第三类

这是根据某网站成交评论制作的可视化词云,词频的统计,分词和词云的制作都是用R,最后做了聚类,将不同的用户聚成了3个类别。这个图能很直观看到,每个类别的客户的特点。不过这张图中的词语还需要进行优化,因为有些术语或词组可能被拆分成了更小的词语,没有展示出来,为了演示,我就没再花更多时间去优化词库,主要介绍分析的过程与方法。

                                                                                                    pinglun=readLines("E:\手机评论1.txt")

                                                                                                      write.table(pinglun,"E:\手机评论整理.txt")

                                                                                                      pinglun1=read.table("E:\\手机评论整理.txt",sep="|")





# == 文本预处理  

res=pinglun1[pinglun1!=" "];  


#剔除通用标题  

res=gsub(pattern="[專賣店【未拆封順豐】||]+"," ",res);   

#剔除特殊词  

res=gsub(pattern="[我|你|的|了|是]"," ",res);       

#清理文本里的回车!否则每个回车就会被识别成一段文本

res=gsub("\n","",res)

###############

library(r;  

library(Rwordseg);  

图片

自然语言处理NLP:主题LDA、情感分析疫情下的新闻文本数据

阅读文章


# == 分词+频数统计  

words=unlist(lapply(X=res, FUN=segmentCN));  

word=lapply(X=words, FUN=strsplit, " ");  

v=table(unlist(word));    

# 降序排序  

v=rev(sort(v));   

d=data.frame(word=names(v), freq=v);   


随时关注您喜欢的主题


# 过滤掉1个字和词频小于100的记录  

d=subset(d, nchar(as.character(d$word))>1 & d$freq>=100)  



# == 输出结果  

                                                                                                       write.table(d, file="E: \\worldcup_keyword.txt", row.names=FALSE)  

#############绘制词汇图####################3

library("wordcloud")
mycolors <- brewer.pal(8,"Dark2")#设置一个颜色系:

wordcloud(d[1:30,]$word,d[1:30,]$freq,random.order=FALSE,random.color=FALSE,colors=mycolors,family="myFont3")

                  

kmeans聚类

res1=res[1:10000]#筛选500个样本做测试

words=unlist(lapply(X=res1, FUN=segmentCN));  

wor 

d=subset(d, nchar(as.character(d$word))>1 & d$freq>=100)  #获得高频词汇





rating=matrix(0,length(res1),dim(d)[1])#生成评价矩阵

colnames(rating)=d[,1]#给矩阵列命名



  word=lapply(X=words, FUN=strsplit, " ");  

  v=table(unlist(word));    

  # 降序排序  

  v=rev(sort(v));   

  dd=data.frame(word=names(v), freq=v); 




kmeans(rating,5)#对评价矩阵进行k均值聚类





                                                                                                      result=read.csv("E:\聚类结果.csv")

colnames(result)=d[1:30,1]



###分类别

c1=result[result[,31]==1,]

c2=result[result[,31]==2,]

c3=result[res




library("wordcloud")

mycolors <- brewer.pal(8,"Dark2")#设置一个颜色系:

wordcloud(colnames(result)[-17],freq1[-17],random.order=FALSE,random.color=FALSE,colors=mycolors,family="myFont3")










######算法比较

y=rbind(matrix(rnorm(10000,mean=2,sd=0.3),ncol=10),matrix(rnorm(10000,mean=1,sd=0.7),ncol=10))#生成两类随机数合并

colnames(y)=c(paste("y",1:10))#变量名





#Kmeans算法聚类



plot(y,col=cl$cluster,pch=c(rep("1",1000),rep("2",1000)),main="kmeans算法聚类图")#每个类样本

points(cl$centers,col=3,pch="*",cex=3)#每个类中心


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds