jieba 自訂詞庫斷詞

文章推薦指數: 80 %
投票人數:10人

jieba 自訂詞庫斷詞 ... 在進行中文Text Mining 前處理時,必須先經過斷詞處理。

社群當中存在相當好的斷詞處理工具,如jieba。

但斷詞時常遇到一個問題:文本 ... jieba自訂詞庫斷詞textmining r 中文Jul31,2018在進行中文TextMining前處理時,必須先經過斷詞處理。

社群當中存在相當好的斷詞處理工具,如jieba。

但斷詞時常遇到一個問題:文本中重要的詞彙因為不常見於其它地方而被斷開,像是人物角色名稱。

要處理這個問題,需將自訂詞庫提供給斷詞套件,才不會將重要詞彙斷開。

這邊將使用jiebaR,介紹使用自訂詞庫的斷詞方式,並提供自訂詞庫的製作方式。

示範語料這裡使用金庸神雕俠侶第三十二回—情是何物作為斷詞的文本。

武俠小說在此是個很好的例子,因為裡面有許多人物名稱和專有名詞。

因為著作權問題1,語料的原始檔(032.txt)將不會出現在本文的GitHubrepo中。

製作自訂詞庫取得小說這類文本的角色名稱與特殊名詞乍看之下可能非常耗工耗時,但有些時候其實相當容易,尤其是著名的小說。

這要歸功於維基百科,因為越是著名的小說,其越有可能有詳盡的維基百科頁面,而維基百科對製作詞庫最重要的特色在於其頁面的超連結,因為通常只有專有名詞才會成為一個維基頁面上的超連結。

這邊使用維基百科的神鵰俠侶角色列表作為詞庫的來源。

以下使用rvest套件清理此頁面:library(rvest) library(dplyr) library(magrittr) library(knitr) path% html_nodes("ul")%>%html_nodes("li")%>% html_nodes("a")%>%html_text()觀察頁面後,可發現多數與小說相關的詞彙都位在unorderedlist下的連結內文(tag),因此透過3個html_nodes()取得連結,並用html_text()擷取連結內文。

接著看看擷取的詞彙,可以發現這些詞彙依照順序大致可區分成三個來源:自維基頁面的目錄擷取之連結內文的連結(這是我們要的)其它連結對應至頁面最下方,與小說有關但並非小說主要內容的連結,如,「射雕英雄传角色列表」。

另外,也包含維基百科頁面的固定連結,如「編輯」、「討論」、「下載為PDF」等。

data% rbind("過兒","靖哥哥")#手動額外輸入 head(data,4)%>%kable("markdown",align="c")楊過射鵰英雄傳楊康穆念慈最後,將data存成.csv檔,方便未來使用:readr::write_csv(data,"sdxl_wordlist.csv")jiebaR斷詞準備好自訂詞庫後,要開始對文本進行斷詞。

jiebaR斷詞可以選擇外來檔案或將檔案讀入後在進行斷詞,這邊將文本檔案讀入再斷詞:library(stringr) raw_text%str_trunc(80)[1]"第三十二回 情是何物\r\n\r\n  當黃蓉、一燈、郭芙等被困大廳之時,楊過和小龍女正在花前並肩共語。

不久程英和陸無雙到來。

小龍女見程英溫雅靦腆,甚是投緣,拉住..."無自訂詞庫首先,我們可以看看沒有自訂詞庫的斷詞效果:library(jiebaR) stop_words% rbind("\n","\r")%>% set_names("word") seg% as_data_frame()%>% anti_join(stop_words,by=c("value"="word"))%>% count(value)%>% arrange(desc(n))%>% head()%>%kable("markdown",align="c")道156小龍女115楊91公孫止86楊過76黃65可以看到有些斷詞是正確的,如「公孫止」。

但某些似乎常常斷錯,例如,「黃蓉」、「楊過」(某些似乎斷錯,導致有許多單獨的「楊」)。

使用自訂詞庫在jiebaR::worker()中設定自訂詞庫的位置:user="sdxl_wordlist.csv",即可在斷詞系統中新增字典:seg% as_data_frame()%>% anti_join(stop_words,by=c("value"="word"))%>% count(value)%>% arrange(desc(n))%>% head()%>%kable("markdown",align="c")楊過187道150小龍女119公孫止104黃蓉95李莫愁59可以看到使用自訂詞庫後,斷詞變得有意義多了。

本文目的僅在促進教育與學術,並無營利企圖。

且本文僅顯示極少的小說內容,應屬合理使用。

若有侵犯著作權的疑慮,麻煩透過Email與我聯絡。

↩Lastupdated:2018-11-10PREV TextMining前處理NEXT MakingJekyllBlogSuitableforR-bloggers▲ ▼



請為這篇文章評分?