由於工作的需要,我想要將繁體字版的《粵港澳大灣區發展規劃綱要》的高頻詞語做成詞雲(標籤雲)形式。於是經過多個軟件的探索和嘗試,最終發現效果非常不理想,在一個知乎問答裏面,我了解到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 函數支持輸入自定義圖片來作為詞雲的背景形狀,需要注意的是自定義圖片的時候需要 「黑白」 的來作為詞雲的形狀輸入。

ps處理,變成黑白,背景為透明,文檔格式png.

#導入圖片

figPath = system.file(“examples/dawanqu.png”,package = “wordcloud2”)

#生成詞雲

wordcloud2(finaldata, figPath = figPath, size = 1,color = “random-light”)
大功告成!!!點擊每個關鍵詞,都會顯示詞頻!

注意:生成後,彈出網頁,如果看不到圖片,可以手動刷新幾次。如果color的參數你選擇的是色系,可以通過刷新,每個詞語的顏色和位置都會變化,直至選到你滿意的為止。

顏色的參數可以參考這張圖,同時,還有可以選擇『random-dark』以及『random-light』,這些顏色色系。

@Daitoue:R 語言colors()657種顏色

折磨了自己這麼久,真的很感謝隨處可得的網友共享!但是要一一篩選有用的,對於首次接觸R的我是很費神的。感謝!
@bushijiangshan:用R語言做自己的微信聊天記錄詞雲
@郎大為:可能是目前最好的詞雲解決方案 wordcloud2

以下是有關分詞的,這次還沒有很深入的研究
@WealdPoem:使用R語言進行分詞與詞雲
@王亨:使用R語言進行中文分詞
@喜歡算法的女青年: R系列分詞、去停用詞、畫詞雲(詞雲形狀可自定義)
@悟乙己:R語言︱文本挖掘之中文分詞包——Rwordseg包(原理、功能、詳解)



關於 Barbara
Barbara成功獨立建站就洋洋得意的文科生,真真的「碼農」,敲的是文字,偶爾會拿起相機加點顏色。世無難事,學無止境,多功能身份(文字工作者、旅遊愛好者、寶媽、業餘建站人…其他待續…),喜歡交流,樂於分享。
wechat_pay

本站發展離不開您的支持,多少隨意,歡迎來賞!

發表評論

郵箱地址不會被公開。 必填項已用*標註