由於工作的需要,我想要將繁體字版的《粵港澳大灣區發展規劃綱要》的高頻詞語做成詞雲(標籤雲)形式。於是經過多個軟件的探索和嘗試,最終發現效果非常不理想,在一個知乎問答裏面,我了解到R這個英文單詞,本着一探到底的好學精神,我又粗淺地掌握了一門技能:用R語言做中文詞雲。
1、關於R語言及安裝
R語言在我看來是一個需要用各種包(程序包)配合來進行操作的。總之如果做中文詞語,需要安裝 Rjava,Rwordseg這兩個包。
在安裝這兩個包之前,必須在電腦安裝JAVA,並進行相應的環境配置。詳細可見:
2、R中文分詞包( Rjava,Rwordseg )的安裝
3、做詞雲仍需要wordcloud包,關於 wordcloud2的安裝與設置
所有包包安裝準備就緒後,正式開始做詞雲啦!
#加載分詞以及做詞雲所用的包
library(rJava)
library(Rwordseg)
library(wordcloud2)
#讀入文本數據
#引入文檔 的指令
myfile <- read.csv(“D:/myfile/DWQ.txt“, header = TRUE,stringsAsFactors = FALSE)
關於讀取文本的指令,@妖精的尾巴導入CSV、TXT文件博客有詳細的說明
把繁體字的《粵港澳大灣區發展規劃綱要》在word先刪除一些字眼,比如:的/為/和…… ,存為txt文檔。
其實是可以#引入停用表 來解決的。所謂停用表,就是在分析過程中剔除或者過濾某些詞/無意義的詞。中文文本分析是非常重要的過程,而停用表的選擇也很重要。
我嘗試過普通的停用表,以及#進行分詞設計,由於綱要的特殊性,還是不能取得很好的效果。分詞會把「粵港澳」分成「粵」、「港澳」,「大灣區」分成「大」、「灣區」。而我更想關注產業和態度方向,因此我在整理文檔的時候就刪除了:
粵港澳大灣區、粵港澳、港澳、 大灣區、發展、建設、提供、具有、形成、的、和、爲、在、與、就、等、及、以、第一/二/三/四/五節……這些詞語。
#自定義詞典
Rwordseg是有默認詞典的,但有一些新詞需要額外注意,因此可以自己設定一些關鍵詞,直到達到理想的分詞效果。
#手動增加常用詞 經過嘗試,增加繁體字後,仍然無法識別,簡體字則可以。
insertWords(c(“九市”,”大灣區”,”一帶一路”,”人民幣”,”擴大”,”低碳”))
#進行中文分詞生成詞雲數據
#中文分詞
myfile.words <- unlist(lapply(X = myfile, FUN = segmentCN))
#去停詞
同時也可以導入去停詞表,去掉分詞中的停用詞,包括「的」、「在」、「就」……無意義的詞彙。由於文件的特殊性,加上停詞表都是簡體字,所以我已經提前處理txt文檔的個別詞語。
網上有很多別人整理的停詞表,下載下來存為txt文檔。
#引入停用詞表
stopwords <- read.csv(“D:/自行下載的停詞表.txt”,
header = FALSE, stringsAsFactors = FALSE)
#設置去停詞函數
RemoveStopWords <- function(x,stopwords) {
temp <- character(0)
index <- 1
xLen <- length(x)
while (index <= xLen) {
if (sum(stopwords == x[index]) < 1)
temp<- c(temp, x[index])
index <- index + 1
}
temp
}
#對myfile.words去停詞
words <- lapply(myfile.words, RemoveStopWords, stopwords)
#生成詞數據
生成詞雲數據(包含具體詞語和頻數)
wordsNum <- table(unlist(myfile.words )) 如果你去停詞了,記得j將myfile.words改為words
wordsNum <- sort(wordsNum, decreasing = TRUE)
wordsData <- data.frame(wordsNum)
wordsData$Var1 <- as.character(wordsData$Var1)
#提取前200個高頻詞做詞雲
finaldata <- wordsData[1:200, ]
#製作詞雲
wordcloud2 函數支持輸入自定義圖片來作為詞雲的背景形狀,需要注意的是自定義圖片的時候需要 「黑白」 的來作為詞雲的形狀輸入。
#導入圖片
figPath = system.file(“examples/dawanqu.png”,package = “wordcloud2”)
#生成詞雲
wordcloud2(finaldata, figPath = figPath, size = 1,color = “random-light”)
注意:生成後,彈出網頁,如果看不到圖片,可以手動刷新幾次。如果color的參數你選擇的是色系,可以通過刷新,每個詞語的顏色和位置都會變化,直至選到你滿意的為止。
顏色的參數可以參考這張圖,同時,還有可以選擇『random-dark』以及『random-light』,這些顏色色系。
折磨了自己這麼久,真的很感謝隨處可得的網友共享!但是要一一篩選有用的,對於首次接觸R的我是很費神的。感謝!
@bushijiangshan:用R語言做自己的微信聊天記錄詞雲
@郎大為:可能是目前最好的詞雲解決方案 wordcloud2
以下是有關分詞的,這次還沒有很深入的研究
@WealdPoem:使用R語言進行分詞與詞雲
@王亨:使用R語言進行中文分詞
@喜歡算法的女青年: R系列分詞、去停用詞、畫詞雲(詞雲形狀可自定義)
@悟乙己:R語言︱文本挖掘之中文分詞包——Rwordseg包(原理、功能、詳解)