R語(yǔ)言文本挖掘:kmeans聚類(lèi)分析上海瑪雅水公園景區(qū)五一假期評(píng)論詞云可視化|附代碼數(shù)據(jù)
全文鏈接:http://tecdat.cn/?p=32307
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
互聯(lián)網(wǎng)時(shí)代,大量的新聞信息、網(wǎng)絡(luò)交互、輿情信息以文本形式存儲(chǔ)在數(shù)據(jù)庫(kù)中,如何利用數(shù)據(jù)分析和文本挖掘的算法,將海量文本的價(jià)值挖掘出來(lái),成為我們團(tuán)隊(duì)近期的一個(gè)研究方向,本案例就是我們的一個(gè)嘗試。
文本聚類(lèi)其實(shí)也就是聚類(lèi)分析在文本方向上的應(yīng)用,首先我們要把一個(gè)個(gè)文檔的自然語(yǔ)言轉(zhuǎn)換成數(shù)學(xué)信息,這樣形成高維空間點(diǎn)之后再去計(jì)算點(diǎn)與點(diǎn)之間的距離,然后將這些距離比較近的聚成一個(gè)簇,這些簇的中心成為簇心。而我們做的就是保證簇內(nèi)點(diǎn)的距離足夠近,簇與簇的距離足夠遠(yuǎn)。
本文將通過(guò)R語(yǔ)言幫助客戶(hù)來(lái)實(shí)現(xiàn)文本挖掘、聚類(lèi)和詞云可視化技術(shù),體驗(yàn)一下輿情分析的魅力。
原始評(píng)論數(shù)據(jù)
本文獲取上?,斞潘珗@景區(qū)評(píng)論數(shù)據(jù)共計(jì)1692條數(shù)據(jù):
讀取數(shù)據(jù)
pinglun=read.xlsx("瑪雅景區(qū)數(shù)據(jù)5.8.xlsx")
文本預(yù)處理
res=pinglun1[pinglun1!=" "]; ?#剔除通用標(biāo)題 ?# res=gsub(pattern="[專(zhuān)賣(mài)店【未拆封順豐】|<b>|</b>]+"," ",res); ? #剔除特殊詞 ?res=gsub(pattern="[我|你|的|了|是]"," ",res); ? ? ? #清理文本里的回車(chē)!否則每個(gè)回車(chē)就會(huì)被識(shí)別成一段文本res=gsub("\n","",res)
分詞+頻數(shù)統(tǒng)計(jì)
words=unlist(lapply(X=res, FUN=segmentCN)); ?
過(guò)濾掉1個(gè)字和詞頻小于100的記錄
d=subset(d, nchar(as.character(d$word))>1 & d$freq>=100) ?
輸出關(guān)鍵詞結(jié)果
write.table(d, file="/worldcup_keyword.txt", row.names=FALSE) ?
繪制詞匯圖
wordcloud(d$word,d$freq,random.order=FALS
kmeans聚類(lèi)部分
轉(zhuǎn)換成評(píng)價(jià)矩陣
rating=matrix(0,length(res1),dim(d)[1])#生成評(píng)價(jià)矩陣for(i in 1:length(res1)){ ?words=unlist(lapply(X=res1[i], FUN=segmentCN));#對(duì)每一條記錄分析獲得詞頻 ?#輸出評(píng)價(jià)矩陣###############################write.table(rating, file="評(píng)價(jià)矩陣.txt", row.names=FALSE) ?
對(duì)評(píng)價(jià)矩陣進(jìn)行k均值聚類(lèi)
kmeans(rating,5)#對(duì)評(píng)價(jià)矩陣進(jìn)行k均值聚類(lèi)
詞云可視化
#第一個(gè)類(lèi)別################################mycolors <- brewer.pal(8,"Dark2")#設(shè)置一個(gè)顏色系:wordcloud(colnames(result)[-c(115,116)],freq1[
第二個(gè)類(lèi)別
wordcloud(colnames(result)[-c(115,116)],f
第三個(gè)類(lèi)別
wordcloud(colnames(result)[-c(115,116)],freq3[-c(
1.被提及了哪些維度
第一個(gè)維度是指開(kāi)心好玩,可以認(rèn)為是景點(diǎn)的可玩性程度。 第二個(gè)維度是 排隊(duì)的關(guān)鍵詞 另外包含時(shí)間,因此可以認(rèn)為是景點(diǎn)的秩序問(wèn)題 第三個(gè)維度是項(xiàng)目 公園 喇叭 熱帶 漂流等關(guān)鍵詞,可以認(rèn)為是景點(diǎn)的游玩項(xiàng)目維度.
2.各維度關(guān)注度如何(即被提及的頻率)
#第一類(lèi)的關(guān)注度 可玩性程度。guanzhu1=length(which(result$kmeansmod.cluster==1))#第二類(lèi)的關(guān)注度 景點(diǎn)的秩序問(wèn)題guanzhu2=length(which(result$kmeansmod.cluster==4))#第三類(lèi)的關(guān)注度 游玩項(xiàng)目維度guanzhu3=length(which(result$kmeansmod.cluster==3))
3.各維度的滿(mǎn)意度指數(shù)
#第一類(lèi)的滿(mǎn)意度指數(shù) 可玩性程度。manyi1=sum(na.omit(result$pinglun.星級(jí).1.nrow.rating.. [which(result$kmeansmod.cluster==1)]))#第二類(lèi)的滿(mǎn)意度指數(shù) 景點(diǎn)的秩序問(wèn)題manyi2=sum(result$pinglun.星級(jí).1.nrow.rating.. [which(result$kmeansmod.cluster==4)]) #第三類(lèi)的滿(mǎn)意度指數(shù) 游玩項(xiàng)目維度manyi3=sum(result$pinglun.星級(jí).1.nrow.rating.. [which(result$kmeansmod.cluster==3)])
4.三張圖:各維度關(guān)注度,各維度滿(mǎn)意度,詞云
colnames(manyi)=c("可玩性程度","景點(diǎn)的秩序問(wèn)題","游玩項(xiàng)目維度")barplot(manyi,ylab="滿(mǎn)意度")
最受歡迎的見(jiàn)解
1.Python主題建模LDA模型、t-SNE 降維聚類(lèi)、詞云可視化文本挖掘新聞組
2.R語(yǔ)言文本挖掘、情感分析和可視化哈利波特小說(shuō)文本數(shù)據(jù)
3.r語(yǔ)言文本挖掘tf-idf主題建模,情感分析n-gram建模研究
4.游記數(shù)據(jù)感知旅游目的地形象
5.疫情下的新聞數(shù)據(jù)觀察
6.python主題lda建模和t-sne可視化
7.r語(yǔ)言中對(duì)文本數(shù)據(jù)進(jìn)行主題模型topic-modeling分析
8.主題模型:數(shù)據(jù)聆聽(tīng)人民網(wǎng)留言板的那些“網(wǎng)事”
9.python爬蟲(chóng)進(jìn)行web抓取lda主題語(yǔ)義數(shù)據(jù)分析