北大開源了中文分詞工具包:準確率遠超THULAC、結巴分詞!
最近,北大開源了一箇中文分詞工具包,它在多個分詞資料集上都有非常高的分詞準確率。其中廣泛使用的結巴分詞誤差率高達 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 與 4.32%。
pkuseg 是由北京大學語言計算與機器學習研究組研製推出的一套全新的中文分詞工具包。它簡單易用,支援多領域分詞,也支援用全新的標註資料來訓練模型。
pkuseg 具有如下幾個特點:
- 高分詞準確率:相比於其他的分詞工具包,該工具包在不同領域的資料上都大幅提高了分詞的準確度。根據北大研究組的測試結果,pkuseg 分別在示例資料集(MSRA 和 CTB8)上降低了 79.33% 和 63.67% 的分詞錯誤率。
- 多領域分詞:研究組訓練了多種不同領域的分詞模型。根據待分詞的領域特點,使用者可以自由地選擇不同的模型。
- 支援使用者自訓練模型:支援使用者使用全新的標註資料進行訓練。
預訓練模型
分詞模式下,使用者需要載入預訓練好的模型。研究組提供了三種在不同型別資料上訓練得到的模型,根據具體需要,使用者可以選擇不同的預訓練模型。以下是對預訓練模型的說明:
PKUSeg提供了三個預訓練模型,使用者需要載入預訓練好的模型,根據具體需要,使用者可以選擇不同的預訓練模型,以下是說明:
- MSRA:在 MSRA(新聞語料)上訓練的模型。
- https://pan.baidu.com/s/1twci0QVBeWXUg06dK47tiA
- CTB8:在 CTB8(新聞文字及網路文字的混合型語料)上訓練的模型。
- https://pan.baidu.com/s/1DCjDOxB0HD2NmP9w1jm8MA
- WEIBO:在微博(網路文字語料)上訓練的模型。
- https://pan.baidu.com/s/1QHoK2ahpZnNmX6X7Y9iCgQ
其中,MSRA 資料由第二屆國際漢語分詞評測比賽提供,CTB8 資料由 LDC 提供,WEIBO 資料由 NLPCC 分詞比賽提供。
安裝與使用
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 專案,例如引數說明和參考論文等。
大家可以按照自己的需要,選擇載入不同的模型。
除此之外,也可以用全新的標註資料,來訓練新的模型。
程式碼示例
1程式碼示例1 使用預設模型及預設詞典分詞 2import pkuseg 3seg = pkuseg.pkuseg() #以預設配置載入模型 4text = seg.cut('我愛北京天安門') #進行分詞 5print(text) 1程式碼示例2 設定使用者自定義詞典 2import pkuseg 3lexicon = ['北京大學', '北京天安門'] #希望分詞時使用者詞典中的詞固定不分開 4seg = pkuseg.pkuseg(user_dict=lexicon) #載入模型,給定使用者詞典 5text = seg.cut('我愛北京天安門') #進行分詞 6print(text) 1程式碼示例3 2import pkuseg 3seg = pkuseg.pkuseg(model_name='./ctb8') #假設使用者已經下載好了ctb8的模型並放在了'./ctb8'目錄下,通過設定model_name載入該模型 4text = seg.cut('我愛北京天安門') #進行分詞 5print(text)
如果想自己訓練一個新模型的話:
1程式碼示例5 2import pkuseg 3pkuseg.train('msr_training.utf8', 'msr_test_gold.utf8', './models', nthread=20) #訓練檔案為'msr_training.utf8',測試檔案為'msr_test_gold.utf8',模型存到'./models'目錄下,開20個程式訓練模型
欲知更詳細的用法,可前往文底傳送門。
GitHub傳送門:
https://github.com/lancopku/PKUSeg-python
論文傳送門:
http://www.aclweb.org/anthology/P12-1027
http://aclweb.org/anthology/P16-2092
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2375574/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 北大開源全新中文分詞工具包:準確率遠超THULAC、結巴分詞中文分詞
- 使用cjieba(結巴分詞庫)實現php擴充套件中文分詞JiebaPHP套件中文分詞
- iOS中文近似度的演算法及中文分詞(結巴分詞)的整合iOS演算法中文分詞
- Simple: SQLite3 中文結巴分詞外掛SQLite分詞
- NLPIR語義分析系統不斷提高中文分詞準確率中文分詞
- Python中的結巴分詞初探Python分詞
- 使用cjieba(結巴分詞庫)實現php擴充套件中文分詞-支援php5, php7JiebaPHP套件中文分詞
- 11個Java開源中文分詞器使用方法和分詞效果對比Java中文分詞
- python呼叫jieba(結巴)分詞 加入自定義詞典和去停用詞功能PythonJieba分詞
- #Elasticsearch中文分詞器 #IK分詞器 @FDDLCElasticsearch中文分詞
- Lucene中文分析器的中文分詞準確性和效能比較中文分詞
- Python分詞模組推薦:jieba中文分詞PythonJieba中文分詞
- 中文分詞演算法總結中文分詞演算法
- 中文分詞原理及常用Python中文分詞庫介紹中文分詞Python
- “結巴”分詞:做最好的Python分片語件分詞Python
- 中文分詞技術中文分詞
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- IKAnalyzer 中文分詞的不同版本切詞方式中文分詞
- 中文分詞工具之基於字標註法的分詞中文分詞
- 簡單有效的多標準中文分詞詳解中文分詞
- 中文分詞研究難點-詞語劃分和語言規範中文分詞
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- pyhanlp 中文詞性標註與分詞簡介HanLP詞性標註分詞
- SCWS PHP 中文簡易分詞PHP分詞
- HanLP中文分詞Lucene外掛HanLP中文分詞
- python 中文分詞包 jiebaPython中文分詞Jieba
- ElasticSearch5.6.1 + 中文分詞(IK)ElasticsearchH5中文分詞
- 分享IKAnalyzer 3.0 中文分詞器中文分詞
- 分詞分詞
- [Python] 基於 jieba 的中文分詞總結PythonJieba中文分詞
- java+lucene中文分詞,搜尋引擎搜詞剖析Java中文分詞
- Hanlp等七種優秀的開源中文分詞庫推薦HanLP中文分詞
- 史上最全中文分詞工具整理中文分詞
- 深度有趣 | 15 淺談中文分詞中文分詞
- elastcisearch中文分詞器各個版本AST中文分詞
- 如何用Python做中文分詞?Python中文分詞
- 每天呼叫達80億次的小米MiNLP平臺,近期又開源了中文分詞功能中文分詞
- HanLP分詞工具中的ViterbiSegment分詞流程HanLP分詞Viterbi