R語言文本挖掘1——詞雲製作,基於Rwordseg包

折騰好Rwordseg在R語言3.2版本的安裝後,馬上就來嚐鮮了,在參考牛人的意見後,成果如下圖,馬上有實戰的感覺了:

 

首先講一下詞雲的步驟:

1.讀取文檔,這個文檔可以是網絡數據,也可以是文本文檔,對於網絡數據,有很多爬蟲方法,如RCurl包,Rweibo包等等等等,還可以自己去申請一些開放數據庫的API,在此不贅述。文本文檔讀取也簡單,直接用readLines函數讀取。

2.識別前的準備,調入詞典,開啓人名識別,這步很重要,因爲不同的文本有不同的關鍵詞特徵,沒有對應的詞典,就容易把關鍵詞再次分詞導致無法提取特徵,Rwordseg支持搜狗的scel字典,很nice。不過這步跟第一步並沒有優先性上的差異,個人喜好把這步放這裏而已。

3.進行分詞,一般都會調用nosymbol = T的參數

4.製作詞語過濾,比如常見的停止詞,還有一些自定義的規則,這個就看大家自己選擇了。

5.過濾了停止詞後,對分詞結果進行詞頻統計並排序

6.將排序結果分別提取爲詞名和頻率

7.繪製詞雲

 

具體代碼如下,數據來源是隨便找的一篇關於如何當獵頭的百度知道,保存爲txt:

library(Rwordseg)
library(wordcloud)

//讀取文件
txt <- readLines("path")

//分詞前準備
installDict("../dict/default.dic", "default") //默認的包
installDict("path", "dictname") //你自己下載或製作的字典
segment.options(isNameRecognition = TRUE) 

//分詞
txtseg <- segmentCN(txt, nosymbol = T)

//製作filter並過濾,這裏可以加入自己製作的停止詞詞典
filter <- function(txt) {  
txt <- gsub("[a-z]|\\.", "", txt)  
txt <- gsub("\\d+號", "", txt)  
txt <- gsub("\\d+", "", txt)  
txt <- gsub("\\/", "", txt)
txt <- gsub("單元|對面|附近|路口|旁邊|大道|方向|先生|女士|回覆|需要|處理|投訴|資料|保密", "", words)
txt[nchar(txt) >= 2]
}

txtsf <- lapply(txtseg, filter)

//詞頻統計和排序
txtwc <- unlist(lapply(txtsf, length)) //詞頻計數
txtws <- sort(table(txtwc),decreasing = T) //排序

//提取詞名和詞頻
txtws.name <- names(txtws)
txtws.freq <- txtws

//繪製詞雲
windows()
par(mar = c(0, 0, 3, 0), bg = "white")
wordcloud(sb.tel.w2.name,
             sb.tel.w2.freq,
             scale = c(5, 1),
             min.freq = 1,
             max.words = 100,
             colors = c("#BEC0C2", "#049FF1", "#DA891E", "#3F813F", "#712704", "#A2B700"))


 

看起來簡單的詞雲,其實做起來一點不簡單,數據分析還要對業務瞭解,上邊的詞雲還有很大改進的地方,不過一步步來,等我慢慢掌握了分析方法再繼續改進咯。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章