pkuseg:一个多领域中文分词工具包
pkuseg簡單易用,支持細分領域分詞,有效提升了分詞準確度。
目錄
- 主要亮點
- 編譯和安裝
- 各類分詞工具包的性能對比
- 使用方式
- 相關論文
- 作者
- 常見問題及解答
主要亮點
pkuseg具有如下幾個特點:
編譯和安裝
- 目前僅支持python3
- 新版本發布:2019-1-23
- 修改了詞典處理方法,擴充了詞典,分詞效果有提升
- 效率進行了優化,測試速度較之前版本提升9倍左右
- 增加了在大規模混合數據集訓練的通用模型,并將其設為默認使用模型
- 新版本發布:2019-1-30
- 支持fine-tune訓練(從預加載的模型繼續訓練),支持設定訓練輪數
- 新版本發布:2019-2-20
- 支持詞性標注,增加了醫療、旅游細領域模型
- 為了獲得好的效果和速度,強烈建議大家通過pip install更新到目前的最新版本
通過PyPI安裝(自帶模型文件):
建議更新到最新版本以獲得更好的開箱體驗:
pip3 install -U pkuseg如果PyPI官方源下載速度不理想,建議使用鏡像源,比如:
初次安裝:
更新:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -U pkuseg注意:安裝方式一和二目前僅支持linux,mac,windows 64 位的python3.5,python 3.6,python 3.7版本。
如果不使用pip安裝方式,選擇從GitHub下載,可運行以下命令安裝:
python setup.py build_ext -iGitHub的代碼并不包括預訓練模型,因此需要用戶自行下載或訓練模型,預訓練模型可詳見release。使用時需設定"model_name"為模型文件。
各類分詞工具包的性能對比
我們選擇jieba、THULAC等國內代表分詞工具包與pkuseg做性能比較。
考慮到jieba分詞和THULAC工具包等并沒有提供細領域的預訓練模型,為了便于比較,我們重新使用它們提供的訓練接口在細領域的數據集上進行訓練,用訓練得到的模型進行中文分詞。
我們選擇Linux作為測試環境,在新聞數據(MSRA)、混合型文本(CTB8)、網絡文本(WEIBO)數據上對不同工具包進行了準確率測試。我們使用了第二屆國際漢語分詞評測比賽提供的分詞評價腳本。其中MSRA與WEIBO使用標準訓練集測試集劃分,CTB8采用隨機劃分。對于不同的分詞工具包,訓練測試數據的劃分都是一致的;即所有的分詞工具包都在相同的訓練集上訓練,在相同的測試集上測試。對于所有數據集,pkuseg使用了不使用詞典的訓練和測試接口。以下是pkuseg訓練和測試代碼示例:
細領域訓練及測試結果
以下是在不同數據集上的對比結果:
| jieba | 87.01 | 89.88 | 88.42 |
| THULAC | 95.60 | 95.91 | 95.71 |
| pkuseg | 96.94 | 96.81 | 96.88 |
| jieba | 87.79 | 87.54 | 87.66 |
| THULAC | 93.40 | 92.40 | 92.87 |
| pkuseg | 93.78 | 94.65 | 94.21 |
默認模型在不同領域的測試效果
考慮到很多用戶在嘗試分詞工具的時候,大多數時候會使用工具包自帶模型測試。為了直接對比“初始”性能,我們也比較了各個工具包的默認模型在不同領域的測試效果。請注意,這樣的比較只是為了說明默認情況下的效果,并不一定是公平的。
| jieba | 81.45 | 79.58 | 81.83 | 83.56 | 81.61 |
| THULAC | 85.55 | 87.84 | 92.29 | 86.65 | 88.08 |
| pkuseg | 87.29 | 91.77 | 92.68 | 93.43 | 91.29 |
其中,All Average顯示的是在所有測試集上F-score的平均。
更多詳細比較可參見和現有工具包的比較。
使用方式
代碼示例
以下代碼示例適用于python交互式環境。
代碼示例1:使用默認配置進行分詞(如果用戶無法確定分詞領域,推薦使用默認模型分詞)
代碼示例2:細領域分詞(如果用戶明確分詞領域,推薦使用細領域模型分詞)
代碼示例3:分詞同時進行詞性標注,各詞性標簽的詳細含義可參考?tags.txt
代碼示例4:對文件分詞
代碼示例5:額外使用用戶自定義詞典
代碼示例6:使用自訓練模型分詞(以CTB8模型為例)
代碼示例7:訓練新模型 (模型隨機初始化)
代碼示例8:fine-tune訓練(從預加載的模型繼續訓練)
參數說明
模型配置
對文件進行分詞
模型訓練
多進程分詞
當將以上代碼示例置于文件中運行時,如涉及多進程功能,請務必使用if __name__ == '__main__'保護全局語句,如:
mp.py文件
運行
python3 mp.py詳見無法使用多進程分詞和訓練功能,提示RuntimeError和BrokenPipeError。
在Windows平臺上,請當文件足夠大時再使用多進程分詞功能,詳見關于多進程速度問題。
預訓練模型
從pip安裝的用戶在使用細領域分詞功能時,只需要設置model_name字段為對應的領域即可,會自動下載對應的細領域模型。
從github下載的用戶則需要自己下載對應的預訓練模型,并設置model_name字段為預訓練模型路徑。預訓練模型可以在release部分下載。以下是對預訓練模型的說明:
-
news: 在MSRA(新聞語料)上訓練的模型。
-
web: 在微博(網絡文本語料)上訓練的模型。
-
medicine: 在醫藥領域上訓練的模型。
-
tourism: 在旅游領域上訓練的模型。
-
mixed: 混合數據集訓練的通用模型。隨pip包附帶的是此模型。
歡迎更多用戶可以分享自己訓練好的細分領域模型。
版本歷史
- v0.0.11(2019-01-09)
- 修訂默認配置:CTB8作為默認模型,不使用詞典
- v0.0.14(2019-01-23)
- 修改了詞典處理方法,擴充了詞典,分詞效果有提升
- 效率進行了優化,測試速度較之前版本提升9倍左右
- 增加了在大規?;旌蠑祿柧毜耐ㄓ媚P?#xff0c;并將其設為默認使用模型
- v0.0.15(2019-01-30)
- 支持fine-tune訓練(從預加載的模型繼續訓練),支持設定訓練輪數
- v0.0.18(2019-02-20)
- 支持詞性標注,增加了醫療、旅游兩個細領域模型
開源協議
相關論文
該代碼包主要基于以下科研論文,如使用了本工具,請引用以下論文:
- Xu Sun, Houfeng Wang, Wenjie Li.?Fast Online Training with Frequency-Adaptive Learning Rates for Chinese Word Segmentation and New Word Detection. ACL. 253–262. 2012
傳送門
PKUSeg的作者有三位,Ruixuan Luo (羅睿軒),Jingjing Xu (許晶晶) ,以及Xu Sun (孫栩) 。
工具包的誕生,也是基于其中兩位參與的ACL論文。
準確率又那么高,還不去試試?
GitHub傳送門:
https://github.com/lancopku/PKUSeg-python
論文傳送門:
?
http://www.aclweb.org/anthology/P12-1027
?
?
http://aclweb.org/anthology/P16-2092
?
轉載于:https://www.cnblogs.com/zhangyafei/p/10520960.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的pkuseg:一个多领域中文分词工具包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解Transformer-一篇文章看懂
- 下一篇: 论文浅尝 | 通过多原型实体指称向量关联