北大開源中文分詞工具包pkuseg

jopen 5年前發布 | 10K 次閱讀 pkuseg

北大開源中文分詞工具包pkuseg

日前,北京大學語言計算與機器學習研究組研制推出一套全新中文分詞工具包 pkuseg,這一工具包有如下三個特點:

  • 高分詞準確率。相比于其他的分詞工具包,當使用相同的訓練數據和測試數據,pkuseg 可以取得更高的分詞準確率。

  • 多領域分詞。不同于以往的通用中文分詞工具,此工具包同時致力于為不同領域的數據提供個性化的預訓練模型。根據待分詞文本的領域特點,用戶可以自由地選擇不同的模型。而其他現有分詞工具包,一般僅提供通用領域模型。

  • 支持用戶自訓練模型。支持用戶使用全新的標注數據進行訓練。

各項性能對比如下:

與 jieba、THULAC 等國內代表分詞工具包進行性能比較:

考慮到 jieba 分詞和 THULAC 工具包等并沒有提供細領域的預訓練模型,為了便于比較,開發團隊重新使用它們提供的訓練接口在細領域的數據集上進行訓練,用訓練得到的模型進行中文分詞。他們選擇 Linux 作為測試環境,在新聞數據(MSRA)、混合型文本(CTB8)、網絡文本(WEIBO)數據上對不同工具包進行了準確率測試。在此過程中,他們使用第二屆國際漢語分詞評測比賽提供的分詞評價腳本,其中 MSRA 與 WEIBO 使用標準訓練集測試集劃分,CTB8 采用隨機劃分。對于不同的分詞工具包,訓練測試數據的劃分都是一致的;即所有的分詞工具包都在相同的訓練集上訓練,在相同的測試集上測試。

以下是在不同數據集上的對比結果:

北大開源中文分詞工具包pkuseg

同時,為了比較細領域分詞的優勢,開發團隊比較了他們的方法和通用分詞模型的效果對比。其中 jieba 和 THULAC 均使用了軟件包提供的、默認的分詞模型:

北大開源中文分詞工具包pkuseg

從結果上來看,當用戶了解待分詞文本的領域時,細領域分詞可以取得更好的效果。然而 jieba 和 THULAC 等分詞工具包僅提供了通用領域模型。

目前,該工具包已經在 GitHub 開源,編譯、安裝和使用說明如下。

編譯和安裝

1. 通過 pip 下載(自帶模型文件)

pip install pkuseg

之后通過 import pkuseg 來引用

2. 從 github 下載(需要下載模型文件,見預訓練模型)

將 pkuseg 文件放到目錄下,通過 import pkuseg 使用

模型需要下載或自己訓練。

使用方式

1. 代碼示例

代碼示例 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)

代碼示例4

import pkuseg

pkuseg.test ('input.txt', 'output.txt', nthread=20) #對 input.txt 的文件分詞輸出到 output.txt 中,使用默認模型和詞典,開 20 個進程

代碼示例5

import pkuseg

pkuseg.train ('msr_training.utf8', 'msr_test_gold.utf8', './models', nthread=20) #訓練文件為'msr_training.utf8',測試文件為'msr_test_gold.utf8',模型存到'./models'目錄下,開 20 個進程訓練模型

2. 參數說明

pkuseg.pkuseg (model_name='ctb8', user_dict=[])

model_name 模型路徑。默認是'ctb8'表示我們預訓練好的模型(僅對 pip 下載的用戶)。用戶可以填自己下載或訓練的模型所在的路徑如 model_name='./models'。

user_dict 設置用戶詞典。默認不使用詞典。填'safe_lexicon'表示我們提供的一個中文詞典(僅 pip)。用戶可以傳入一個包含若干自定義單詞的迭代器。

pkuseg.test (readFile, outputFile, model_name='ctb8', user_dict=[], nthread=10)

readFile 輸入文件路徑

outputFile 輸出文件路徑

model_name 同 pkuseg.pkuseg

user_dict 同 pkuseg.pkuseg

nthread 測試時開的進程數

pkuseg.train (trainFile, testFile, savedir, nthread=10)

trainFile 訓練文件路徑

testFile 測試文件路徑

savedir 訓練模型的保存路徑

nthread 訓練時開的進程數

預訓練模型

分詞模式下,用戶需要加載預訓練好的模型。開發團隊提供了三種在不同類型數據上訓練得到的模型,根據具體需要,用戶可以選擇不同的預訓練模型。以下是對預訓練模型的說明:

MSRA: 在 MSRA(新聞語料)上訓練的模型。新版本代碼采用的是此模型。

下載地址:https://pan.baidu.com/s/1twci0QVBeWXUg06dK47tiA

CTB8: 在 CTB8(新聞文本及網絡文本的混合型語料)上訓練的模型。

下載地址:https://pan.baidu.com/s/1DCjDOxB0HD2NmP9w1jm8MA

WEIBO: 在微博(網絡文本語料)上訓練的模型。

下載地址:https://pan.baidu.com/s/1QHoK2ahpZnNmX6X7Y9iCgQ

開發團隊預訓練好其它分詞軟件的模型可以在如下地址下載:

jieba: 待更新

THULAC: 在 MSRA、CTB8、WEIBO、PKU 語料上的預訓練模型,下載地址:https://pan.baidu.com/s/11L95ZZtRJdpMYEHNUtPWXA,提取碼:iv82

其中 jieba 的默認模型為統計模型,主要基于訓練數據上的詞頻信息,開發團隊在不同訓練集上重新統計了詞頻信息。對于 THULAC,他們使用其提供的接口進行訓練(C++版本),得到了在不同領域的預訓練模型。

來源:GitHub

來自: 雷鋒網

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!