折騰好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"))
看起來簡單的詞雲,其實做起來一點不簡單,數據分析還要對業務了解,上邊的詞雲還有很大改進的地方,不過一步步來,等我慢慢掌握了分析方法再繼續改進咯。
————————————————
版權聲明:本文為CSDN博主「wangzfox」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wangzfox/article/details/45803863