R語言利用jiebaR和wordcloud2對有關鑽石公主號的評論繪製詞雲

這裏要對有關鑽石公主號事件的評論做詞雲分析,通過用戶自定義詞典和停用詞來對評論進行分詞

引入包

library(wordcloud2)
library(jiebaR)
library(RColorBrewer)

讀入數據並分詞。這裏我們的數據是每一行爲一個評論,一開始我用的read.table和read.csv來讀入,以‘’爲分隔符,但總出現某個換行以/n的形式出現在數據中,所以我們採用readLines函數來進行數據導入。user.txt是用戶自定義詞典,用來來保留一些相關詞彙,防止像“鑽石公主號”這樣的詞彙被分成“鑽石”,“公主”,“號”。

mydata<-readLines(con <- file("comment2.7-2.9.txt", encoding = "UTF-8"))
wk = worker(user='user.txt')
human_future_txt1<-segment(mydata,wk)

過濾掉一個字的詞並查看一下剩下多少詞

human_future <- subset(human_future_txt1, nchar(human_future_txt1)>1)
length(human_future)

去掉停用詞再看剩下多少詞,關於停用詞也是由一個txt文件存儲,同樣使用readLines來讀入,使用停用詞是爲了防止像一些特殊符號、數字和“一個”這種沒有實際意義的詞彙加入到詞頻統計。

stopwords_CN<-readLines(con <- file("hit_stopwords.txt", encoding = "UTF-8"))
for(j in 1:length(stopwords_CN)){
  human_future <- subset(human_future,human_future!=stopwords_CN[j])
}
length(human_future)

進行詞頻統計和排序,選取最頻繁的前100個詞來做詞雲

human_future_freq<-table(human_future)
human_future_freq<-human_future_freq[!grepl('[0-9]+',names(human_future_freq))]

human_future_result<-human_future_freq[order(human_future_freq, decreasing = TRUE)]
human_future_front <- human_future_result[1:100]

最後作詞雲,顏色這裏設置了從一個藍色主題色系中抽取了顏色較深的前6個,每個顏色有4個,也就是說最頻繁的前24個顏色是依次漸淺,剩下的76個設置成天空藍。結果如圖

wordcloud2(human_future_front,
		color=c(rep(rev(brewer.pal(9, "Blues"))[1:6],each=4),rep("skyblue",76)),
		shape='cardioid',size=0.6,minSize = 0, gridSize =  0,
           	fontFamily = 'Segoe UI', fontWeight = 'bold',backgroundColor = "white",
           	minRotation = -pi/4, maxRotation = pi/4, shuffle = TRUE,
           	rotateRatio = 0.4,  ellipticity = 0.65)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章