圖例: 某優質男孩團體討論版
經過分析,大家聊天的重點多為「工作」及「體育」項目。顯示社會新鮮人特有的童貞。
網路上有一些關於R語言的中文探勘方法,但有些文獻過於簡化,因此,巧克將過年期間摸索來的方法,在此向大家分享。
使用的套件為 Rwordseg及TM套件。
使用的版本為 32位元R 及32位元Java。→這點很重要,用64位元rjava無法順利執行。
記得先安裝rjava,才有辦法安裝Rwordseg。
安裝後記得要修改一些環境參數。(下周再來寫QQ)
程式碼如下:(還請大家參考)
install.packages("rJava")
install.packages("Rwordseg", repos="http://R-Forge.R-project.org")
install.packages("tm")
install.packages("tmcn", repos="http://R-Forge.R-project.org", type="source")
install.packages("wordcloud")
install.packages("XML")
install.packages("RCurl")
Sys.setenv(JAVA_HOME="C:\\Program Files (x86)\\Java\\jre1.8.0_71\\bin\\client\\")
library(rJava)
install.packages("Rwordseg", repos = "http://R-Forge.R-project.org")
library(Rwordseg)
library(tm) # 啟用Corpus使用
library(tmcn)
library(rjson)
library(tm)
segmentCN("今天一直下雨") # 測試
d.corpus <- Corpus(DirSource(directory ="C:/Users/vaio/Desktop/Wordlog/"), list(language = NA)) # 讀取文字檔(ANSI),指定到資料夾層級)
d.corpus <- tm_map(d.corpus, removePunctuation) # 移除標點符號
d.corpus <- tm_map(d.corpus, removeNumbers) # 移除數字
d.corpus <- tm_map(d.corpus, function(word) {
gsub("[A-Za-z0-9]", "", word)
}) # 移除大小寫英文
inspect(d.corpus)
d.corpus <- tm_map(d.corpus, segmentCN, nature = TRUE) # 進行中文斷詞
d.corpus <- tm_map(d.corpus, function(sentence) {
noun <- lapply(sentence, function(w) {
w[names(w) == "n"]
})
unlist(noun)
}) # 選取名詞
myStopWords <- c(stopwordsCN(), "貼圖", "圖片")
d.corpus <- tm_map(d.corpus, removeWords, myStopWords)
inspect(d.corpus)
d.corpus <- tm_map(d.corpus, PlainTextDocument)
d.corpus <- Corpus(VectorSource(d.corpus)) # 轉向量矩陣
inspect(d.corpus)
tdm <- TermDocumentMatrix(d.corpus, control = list(wordLengths = c(2, Inf)))
inspect(tdm)
library(wordcloud)
m1 <- as.matrix(tdm)
v <- sort(rowSums(m1), decreasing = TRUE)
d <- data.frame(word = names(v), freq = v)
wordcloud(d$word, d$freq, min.freq = 50, random.order = F, ordered.colors = F,
colors = rainbow(length(row.names(m1))))