掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
最近,北大開源了一個(gè)中文分詞工具包,它在多個(gè)分詞數(shù)據(jù)集上都有非常高的分詞準(zhǔn)確率。其中廣泛使用的結(jié)巴分詞誤差率高達(dá) 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 與 4.32%。

成都創(chuàng)新互聯(lián)從2013年成立,先為安陽等服務(wù)建站,安陽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為安陽企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
pkuseg 是由北京大學(xué)語言計(jì)算與機(jī)器學(xué)習(xí)研究組研制推出的一套全新的中文分詞工具包。它簡單易用,支持多領(lǐng)域分詞,在不同領(lǐng)域的數(shù)據(jù)上都大幅提高了分詞的準(zhǔn)確率。
項(xiàng)目地址:https://github.com/lancopku/PKUSeg-python
pkuseg 具有如下幾個(gè)特點(diǎn):
高分詞準(zhǔn)確率:相比于其他的分詞工具包,該工具包在不同領(lǐng)域的數(shù)據(jù)上都大幅提高了分詞的準(zhǔn)確度。根據(jù)北大研究組的測試結(jié)果,pkuseg 分別在示例數(shù)據(jù)集(MSRA 和 CTB8)上降低了 79.33% 和 63.67% 的分詞錯(cuò)誤率。
多領(lǐng)域分詞:研究組訓(xùn)練了多種不同領(lǐng)域的分詞模型。根據(jù)待分詞的領(lǐng)域特點(diǎn),用戶可以自由地選擇不同的模型。
支持用戶自訓(xùn)練模型:支持用戶使用全新的標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練。
此外,作者們還選擇 THULAC、結(jié)巴分詞等國內(nèi)代表分詞工具包與 pkuseg 做性能比較。他們選擇 Linux 作為測試環(huán)境,在新聞數(shù)據(jù)(MSRA)和混合型文本(CTB8)數(shù)據(jù)上對不同工具包進(jìn)行了準(zhǔn)確率測試。此外,測試使用的是第二屆國際漢語分詞評測比賽提供的分詞評價(jià)腳本。評測結(jié)果如下:
我們可以看到,最廣泛使用的結(jié)巴分詞準(zhǔn)確率***,清華構(gòu)建的 THULAC 分詞準(zhǔn)確率也沒有它高。當(dāng)然,pkuseg 是在這些數(shù)據(jù)集上訓(xùn)練的,因此它在這些任務(wù)上的準(zhǔn)確率也會更高一些。
分詞模式下,用戶需要加載預(yù)訓(xùn)練好的模型。研究組提供了三種在不同類型數(shù)據(jù)上訓(xùn)練得到的模型,根據(jù)具體需要,用戶可以選擇不同的預(yù)訓(xùn)練模型。以下是對預(yù)訓(xùn)練模型的說明:
MSRA:在 MSRA(新聞?wù)Z料)上訓(xùn)練的模型。新版本代碼采用的是此模型。
CTB8:在 CTB8(新聞文本及網(wǎng)絡(luò)文本的混合型語料)上訓(xùn)練的模型。
WEIBO:在微博(網(wǎng)絡(luò)文本語料)上訓(xùn)練的模型。
其中,MSRA 數(shù)據(jù)由第二屆國際漢語分詞評測比賽提供,CTB8 數(shù)據(jù)由 LDC 提供,WEIBO 數(shù)據(jù)由 NLPCC 分詞比賽提供。在 GitHub 項(xiàng)目中,這三個(gè)預(yù)訓(xùn)練模型都提供了下載地址。
pkuseg 的安裝非常簡單,我們可以使用 pip 安裝,也可以直接從 GitHub 下載:
- pip install pkuseg
使用 pkuseg 實(shí)現(xiàn)分詞也很簡單,基本上和其它分詞庫的用法都差不多:
- '''代碼示例1: 使用默認(rèn)模型及默認(rèn)詞典分詞'''
- import pkuseg
- #以默認(rèn)配置加載模型
- seg = pkuseg.pkuseg()
- #進(jìn)行分詞
- text = seg.cut('我愛北京天安門')
- print(text)
- '''代碼示例2: 設(shè)置用戶自定義詞典'''
- import pkuseg
- #希望分詞時(shí)用戶詞典中的詞固定不分開
- lexicon = ['北京大學(xué)', '北京天安門']
- #加載模型,給定用戶詞典
- seg = pkuseg.pkuseg(user_dict=lexicon)
- text = seg.cut('我愛北京天安門')
- print(text)
- '''代碼示例3'''
- import pkuseg
- #假設(shè)用戶已經(jīng)下載好了ctb8的模型并放在了'./ctb8'目錄下,通過設(shè)置model_name加載該模型
- seg = pkuseg.pkuseg(model_name='./ctb8')
- text = seg.cut('我愛北京天安門')
- print(text)
對于大型文本數(shù)據(jù)集,如果需要快速分詞的話,我們也可以采用多線程的方式:
- '''代碼示例4'''
- import pkuseg
- #對input.txt的文件分詞輸出到output.txt中,使用默認(rèn)模型和詞典,開20個(gè)進(jìn)程
- pkuseg.test('input.txt', 'output.txt', nthread=20)
***,pkuseg 還能重新訓(xùn)練一個(gè)分詞模型:
- '''代碼示例5'''
- import pkuseg
- #訓(xùn)練文件為'msr_training.utf8',測試文件為'msr_test_gold.utf8',模型存到'./models'目錄下,開20個(gè)進(jìn)程訓(xùn)練模型
- pkuseg.train('msr_training.utf8', 'msr_test_gold.utf8', './models', nthread=20)
這些都是 GitHub 上的示例,詳細(xì)的內(nèi)容請參考 GitHub 項(xiàng)目,例如參數(shù)說明和參考論文等。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流