中文分詞,是一門高深莫測的技術。不論對於人類,還是對於 AI。
北大開源了一個中文分詞工具包,名為 PKUSeg,基於 Python。
工具包的分詞準確率,遠遠超過 THULAC 和 JIEBA 這兩位重要選手。
除此之外,PKUSeg 支持多領域分詞,也支持用全新的標註數據來訓練模型。
準確度對比
這次比賽,PKUSeg 的對手有兩位:
一位是來自清華的 THULAC,一位是要 “做最好的中文分詞組件” 的結巴分詞。它們都是目前主流的分詞工具。
測試環境是 Linux,測試數據集是 MSRA (新聞數據) 和 CTB8 (混合型文本) 。
結果如下:
比賽用的評判標準,是第二屆國際漢語分詞評測比賽提供的分詞評價腳本。
在 F 分數和錯誤率兩項指標上,PKUSeg 都明顯優於另外兩位對手。
使用方法
預訓練模型
PKUSeg 提供了三個預訓練模型,分別是在不同類型的數據集上訓練的。
一是用 MSRA (新聞語料) 訓練出的模型:
https://pan.baidu.com/s/1twci0QVBeWXUg06dK47tiA
二是用 CTB8 (新聞文本及網絡文本的混合型語料) 訓練出的模型:
https://pan.baidu.com/s/1DCjDOxB0HD2NmP9w1jm8MA
三是在微博 (網絡文本語料) 上訓練的模型:
https://pan.baidu.com/s/1QHoK2ahpZnNmX6X7Y9iCgQ
大家可以按照自己的需要,選擇加載不同的模型。
除此之外,也可以用全新的標註數據,來訓練新的模型。
代碼示例:
# 代碼示例1 使用默認模型及默認詞典分詞
import pkuseg
seg = pkuseg.pkuseg() #以默認配置加載模型
text = seg.cut('我愛北京天安門') #進行分詞
print(text)
# 代碼示例2 設置用戶自定義詞典
import pkuseg
lexicon = ['北京大學', '北京天安門'] #希望分詞時用戶詞典中的詞固定不分開
seg = pkuseg.pkuseg(user_dict=lexicon) #加載模型,給定用戶詞典
text = seg.cut('我愛北京天安門') #進行分詞
print(text)
# 代碼示例3
import pkuseg
seg = pkuseg.pkuseg(model_name='./ctb8') #假設用戶已經下載好了ctb8的模型並放在了'./ctb8'目錄下,通過設置model_name加載該模型
text = seg.cut('我愛北京天安門') #進行分詞
print(text)
如果想自己訓練一個新模型的話:
# 代碼示例5
import pkuseg
pkuseg.train('msr_training.utf8', 'msr_test_gold.utf8', './models', nthread=20) #訓練文件為'msr_training.utf8',測試文件為'msr_test_gold.utf8',模型存到'./models'目錄下,開20個進程訓練模型
欲知更詳細的用法,可前往文底傳送門。
快去試一下
PKUSeg 的作者有三位,Ruixuan Luo (羅睿軒),Jingjing Xu (許晶晶) ,以及 Xu Sun (孫栩) 。
工具包的誕生,也是基於其中兩位參與的 ACL 論文。
準確率又那麼高,還不去試試?
GitHub 傳送門:
https://github.com/lancopku/PKUSeg-python