折騰好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"))