選自GitHub,做者:羅睿軒、許晶晶、孫栩,機器之心編輯。python
最近,北大開源了一箇中文分詞工具包,它在多個分詞數據集上都有很是高的分詞準確率。其中普遍使用的結巴分詞偏差率高達 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 與 4.32%。git
pkuseg 是由北京大學語言計算與機器學習研究組研製推出的一套全新的中文分詞工具包。它簡單易用,支持多領域分詞,在不一樣領域的數據上都大幅提升了分詞的準確率。github
項目地址:github.com/lancopku/PK…bash
pkuseg 具備以下幾個特色:網絡
高分詞準確率:相比於其餘的分詞工具包,該工具包在不一樣領域的數據上都大幅提升了分詞的準確度。根據北大研究組的測試結果,pkuseg 分別在示例數據集(MSRA 和 CTB8)上下降了 79.33% 和 63.67% 的分詞錯誤率。多線程
多領域分詞:研究組訓練了多種不一樣領域的分詞模型。根據待分詞的領域特色,用戶能夠自由地選擇不一樣的模型。機器學習
支持用戶自訓練模型:支持用戶使用全新的標註數據進行訓練。工具
此外,做者們還選擇 THULAC、結巴分詞等國內表明分詞工具包與 pkuseg 作性能比較。他們選擇 Linux 做爲測試環境,在新聞數據(MSRA)和混合型文本(CTB8)數據上對不一樣工具包進行了準確率測試。此外,測試使用的是第二屆國際漢語分詞評測比賽提供的分詞評價腳本。評測結果以下:性能
咱們能夠看到,最普遍使用的結巴分詞準確率最低,清華構建的 THULAC 分詞準確率也沒有它高。固然,pkuseg 是在這些數據集上訓練的,所以它在這些任務上的準確率也會更高一些。學習
預訓練模型
分詞模式下,用戶須要加載預訓練好的模型。研究組提供了三種在不一樣類型數據上訓練獲得的模型,根據具體須要,用戶能夠選擇不一樣的預訓練模型。如下是對預訓練模型的說明:
MSRA:在 MSRA(新聞語料)上訓練的模型。新版本代碼採用的是此模型。
CTB8:在 CTB8(新聞文本及網絡文本的混合型語料)上訓練的模型。
WEIBO:在微博(網絡文本語料)上訓練的模型。
其中,MSRA 數據由第二屆國際漢語分詞評測比賽提供,CTB8 數據由 LDC 提供,WEIBO 數據由 NLPCC 分詞比賽提供。在 GitHub 項目中,這三個預訓練模型都提供了下載地址。
安裝與使用
pkuseg 的安裝很是簡單,咱們可使用 pip 安裝,也能夠直接從 GitHub 下載:
pip install pkuseg複製代碼
使用 pkuseg 實現分詞也很簡單,基本上和其它分詞庫的用法都差很少:
'''代碼示例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
#假設用戶已經下載好了ctb8的模型並放在了'./ctb8'目錄下,經過設置model_name加載該模型
seg = pkuseg.pkuseg(model_name='./ctb8')
text = seg.cut('我愛北京天安門')
print(text)複製代碼
對於大型文本數據集,若是須要快速分詞的話,咱們也能夠採用多線程的方式:
'''代碼示例4'''
import pkuseg
#對input.txt的文件分詞輸出到output.txt中,使用默認模型和詞典,開20個進程
pkuseg.test('input.txt', 'output.txt', nthread=20)
複製代碼
最後,pkuseg 還能從新訓練一個分詞模型:
'''代碼示例5'''
import pkuseg
#訓練文件爲'msr_training.utf8',測試文件爲'msr_test_gold.utf8',模型存到'./models'目錄下,開20個進程訓練模型
pkuseg.train('msr_training.utf8', 'msr_test_gold.utf8', './models', nthread=20)複製代碼
這些都是 GitHub 上的示例,詳細的內容請參考 GitHub 項目,例如參數說明和參考論文等。