使用R語言進行中文分詞
1.準備包
①rJava包
② Rwordseg包
③java環境
④搜狗詞庫(此為擴充套件詞庫)
Rwordseg包依賴於rJava包。由於Rwordseg包並沒有託管在CRAN上面,而是在R-Forge上面,因此在在R軟體上面直接輸入install.packages("Rwordseg")會提示錯誤。因此,我們需要在軟體選單欄點選 程式包
選擇軟體庫 在選擇R-Forge 即可,然後輸入install.packages("Rwordseg")應該就OK了。或者輸入下面程式碼:
install.packages("Rwordseg", repos = "http://R-Forge.R-project.org")
一切準備工作做好了我們就可以進行分詞了。首先載入我們所需要的包。然後對“ 我非常喜歡《跟著菜鳥一起學R語言》這個微信公眾號 ”這句話進行分詞。
library(Rwordseg)
library(rJava)
text<-"我非常喜歡《跟著菜鳥一起學R語言》這個微信公眾號"
segmentCN(text)
分詞結果為:
[1] "我" "非常" "喜歡" "跟" "著" "菜" "鳥" "一起" "學" "R語言" "這個" "微信" "公眾" "號"
我們可以發現這個分詞有問題,比如說 “菜鳥”和“公眾號”是一個詞,但這裡卻分開了。我們該怎麼處理呢?Rwordseg包裡面提供了一個insertWords函式,具體如下
insertWords(strwords,
analyzer = get("Analyzer", envir = .RwordsegEnv),
strtype = rep("userDefine", length(strwords)),
numfreq = rep(1000, length(strwords)), save = FALSE)
這就是insertWords函式,其中save引數是指 是否把這個詞儲存到詞典裡面。
insertWords(c("菜鳥","公眾號"),save=TRUE)
這樣的話,菜鳥 和 公眾號 就成兩個詞了。再次執行
結果為text<-"我非常喜歡《跟著菜鳥一起學R語言》這個微信公眾號" segmentCN(text)
[1] "我" "非常" "喜歡" "跟" "著" "菜鳥" "一起" "學" "R語言" "這個" "微信" "公眾號"
但是如果我們不需要“菜鳥”這個分詞了怎麼辦,這個時候我們就可以使用deleteWords()函式來從詞典中刪除這個分詞。
deleteWords(c("菜鳥","公眾號"),save=TRUE)
這次我們在看看結果。
[1] "我" "非常" "喜歡" "跟" "著" "菜" "鳥" "一起" "學" "R語言" "這個" "微信" "公眾" "號"
接下來我們使用一下搜狗的擴充套件詞庫,由於電影跟新速度較快,我這裡下載了搜狗的熱門電影大全詞庫,如何載入使用搜狗詞庫,點選可以檢視我的另一篇部落格。
installDict("熱門電影大全.scel","movie")
59391 words were loaded! ... New dictionary 'movie' was installed!我把下載的詞庫放在了當前的工作目錄下面了,所以直接輸入詞典名,沒有新增地址。載入了該詞典。如果出現上面的句子則表示這個詞典載入成功了,我們命名為movie。
現在我們來測試一下面這個句子: 你喜歡看最後的巫師獵人嗎
text2<-"你喜歡看最後的巫師獵人嗎"
segmentCN(text2)
"你" "喜歡" "看" "最後的巫師獵人" "嗎"
可以看到“最後的巫師獵人”是一個詞,如何我們把movie這個詞典刪除點會怎麼樣呢?
uninstallDict("movie")
text2<-"你喜歡看最後的巫師獵人嗎"
segmentCN(text2)
[1] "你" "喜歡" "看" "最後" "的" "巫師" "獵人" "嗎" 其實載入搜狗詞典的話我們就不用自己定義詞典,就比如前面我們往詞典裡面插入“菜鳥”和“微信公眾號”一樣。這樣可以很方便的分詞,也省去了自己新建詞典的時間。
注:本部落格及其相關資源也會發布在《跟著菜鳥一起學R語言》微信公眾平臺一起釋出
轉載請宣告原文連結 http://blog.csdn.net/wzgl__wh/article/details/52528925