jieba 自訂詞庫斷詞
文章推薦指數: 80 %
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▲
▼
延伸文章資訊
- 1Python - 知名Jieba 中文斷詞工具教學
今天要介紹的這個算是很知名的中文斷詞工具,這個是大陸人發明的工具,並且將其開源 ... 如果Jieba 內建詞庫沒有你要的詞,可以建立自定義的詞典.
- 2python jieba分詞(結巴分詞)、提取詞,載入詞,修改詞頻
載入自定義詞庫
- 3Python自然語言處理(二):使用jieba進行中文斷詞
原本打算用英文寫的,可是jieba是在斷中文,還用英文寫就有點怪XD. ... 的, github 有開源程式碼,不僅如此也能夠自訂詞庫,安裝也方便,接下來看看如何安裝及使用。
- 4【jieba自訂詞庫】資訊整理& jieba python相關消息| 綠色工廠
jieba自訂詞庫,fxsjyjieba: 结巴中文分词,Jieba (Chinese for to stutter) Chinese text segmentation: built to b...
- 5jieba分词+自定义词典补充+停用词词库补充+词频统计 - 知乎专栏
Python 中文文本分析实战:jieba分词+自定义词典补充+停用词词库补充+词频统计. 1 年前· 来自专栏Python程序员. 最近项目需要,实现文本的词频分析,折腾了几天才完成 ...