日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pkuseg:一个多领域中文分词工具包

發布時間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pkuseg:一个多领域中文分词工具包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pkuseg簡單易用,支持細分領域分詞,有效提升了分詞準確度。

目錄

  • 主要亮點
  • 編譯和安裝
  • 各類分詞工具包的性能對比
  • 使用方式
  • 相關論文
  • 作者
  • 常見問題及解答

主要亮點

pkuseg具有如下幾個特點:

  • 多領域分詞。不同于以往的通用中文分詞工具,此工具包同時致力于為不同領域的數據提供個性化的預訓練模型。根據待分詞文本的領域特點,用戶可以自由地選擇不同的模型。 我們目前支持了新聞領域,網絡領域,醫藥領域,旅游領域,以及混合領域的分詞預訓練模型。在使用中,如果用戶明確待分詞的領域,可加載對應的模型進行分詞。如果用戶無法確定具體領域,推薦使用在混合領域上訓練的通用模型。各領域分詞樣例可參考?example.txt。
  • 更高的分詞準確率。相比于其他的分詞工具包,當使用相同的訓練數據和測試數據,pkuseg可以取得更高的分詞準確率。
  • 支持用戶自訓練模型。支持用戶使用全新的標注數據進行訓練。
  • 支持詞性標注。
  • 編譯和安裝

    • 目前僅支持python3
    • 新版本發布:2019-1-23
      • 修改了詞典處理方法,擴充了詞典,分詞效果有提升
      • 效率進行了優化,測試速度較之前版本提升9倍左右
      • 增加了在大規模混合數據集訓練的通用模型,并將其設為默認使用模型
    • 新版本發布:2019-1-30
      • 支持fine-tune訓練(從預加載的模型繼續訓練),支持設定訓練輪數
    • 新版本發布:2019-2-20
      • 支持詞性標注,增加了醫療、旅游細領域模型
    • 為了獲得好的效果和速度,強烈建議大家通過pip install更新到目前的最新版本
  • 通過PyPI安裝(自帶模型文件):

  • pip3 install pkuseg
  • 之后通過import pkuseg來引用
  • 建議更新到最新版本以獲得更好的開箱體驗:

    pip3 install -U pkuseg
  • 如果PyPI官方源下載速度不理想,建議使用鏡像源,比如:
    初次安裝:

    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pkuseg

    更新:

    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 -i

    GitHub的代碼并不包括預訓練模型,因此需要用戶自行下載或訓練模型,預訓練模型可詳見release。使用時需設定"model_name"為模型文件。

  • 各類分詞工具包的性能對比

    我們選擇jieba、THULAC等國內代表分詞工具包與pkuseg做性能比較。

    考慮到jieba分詞和THULAC工具包等并沒有提供細領域的預訓練模型,為了便于比較,我們重新使用它們提供的訓練接口在細領域的數據集上進行訓練,用訓練得到的模型進行中文分詞。

    我們選擇Linux作為測試環境,在新聞數據(MSRA)、混合型文本(CTB8)、網絡文本(WEIBO)數據上對不同工具包進行了準確率測試。我們使用了第二屆國際漢語分詞評測比賽提供的分詞評價腳本。其中MSRA與WEIBO使用標準訓練集測試集劃分,CTB8采用隨機劃分。對于不同的分詞工具包,訓練測試數據的劃分都是一致的;即所有的分詞工具包都在相同的訓練集上訓練,在相同的測試集上測試。對于所有數據集,pkuseg使用了不使用詞典的訓練和測試接口。以下是pkuseg訓練和測試代碼示例:

  • pkuseg.train('msr_training.utf8', 'msr_test_gold.utf8', './models')
  • pkuseg.test('msr_test.raw', 'output.txt', user_dict=None)
  • 細領域訓練及測試結果

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

    MSRAPrecisionRecallF-score
    jieba87.0189.8888.42
    THULAC95.6095.9195.71
    pkuseg96.9496.8196.88
    WEIBOPrecisionRecallF-score
    jieba87.7987.5487.66
    THULAC93.4092.4092.87
    pkuseg93.7894.6594.21

    默認模型在不同領域的測試效果

    考慮到很多用戶在嘗試分詞工具的時候,大多數時候會使用工具包自帶模型測試。為了直接對比“初始”性能,我們也比較了各個工具包的默認模型在不同領域的測試效果。請注意,這樣的比較只是為了說明默認情況下的效果,并不一定是公平的。

    DefaultMSRACTB8PKUWEIBOAll Average
    jieba81.4579.5881.8383.5681.61
    THULAC85.5587.8492.2986.6588.08
    pkuseg87.2991.7792.6893.4391.29

    其中,All Average顯示的是在所有測試集上F-score的平均。

    更多詳細比較可參見和現有工具包的比較。

    使用方式

    代碼示例

    以下代碼示例適用于python交互式環境。

    代碼示例1:使用默認配置進行分詞(如果用戶無法確定分詞領域,推薦使用默認模型分詞)

  • import pkuseg
  • seg = pkuseg.pkuseg() # 以默認配置加載模型
  • text = seg.cut('我愛北京天安門') # 進行分詞
  • print(text)
  • 代碼示例2:細領域分詞(如果用戶明確分詞領域,推薦使用細領域模型分詞)

  • import pkuseg
  • seg = pkuseg.pkuseg(model_name='medicine') # 程序會自動下載所對應的細領域模型
  • text = seg.cut('我愛北京天安門') # 進行分詞
  • print(text)
  • 代碼示例3:分詞同時進行詞性標注,各詞性標簽的詳細含義可參考?tags.txt

  • import pkuseg
  • seg = pkuseg.pkuseg(postag=True) # 開啟詞性標注功能
  • text = seg.cut('我愛北京天安門') # 進行分詞和詞性標注
  • print(text)
  • 代碼示例4:對文件分詞

  • import pkuseg
  • # 對input.txt的文件分詞輸出到output.txt中
  • # 開20個進程
  • pkuseg.test('input.txt', 'output.txt', nthread=20)
  • 代碼示例5:額外使用用戶自定義詞典

  • import pkuseg
  • seg = pkuseg.pkuseg(user_dict='my_dict.txt') # 給定用戶詞典為當前目錄下的"my_dict.txt"
  • text = seg.cut('我愛北京天安門') # 進行分詞
  • print(text)
  • 代碼示例6:使用自訓練模型分詞(以CTB8模型為例)

  • import pkuseg
  • seg = pkuseg.pkuseg(model_name='./ctb8') # 假設用戶已經下載好了ctb8的模型并放在了'./ctb8'目錄下,通過設置model_name加載該模型
  • text = seg.cut('我愛北京天安門') # 進行分詞
  • print(text)
  • 代碼示例7:訓練新模型 (模型隨機初始化)

  • import pkuseg
  • # 訓練文件為'msr_training.utf8'
  • # 測試文件為'msr_test_gold.utf8'
  • # 訓練好的模型存到'./models'目錄下
  • # 訓練模式下會保存最后一輪模型作為最終模型
  • # 目前僅支持utf-8編碼,訓練集和測試集要求所有單詞以單個或多個空格分開
  • pkuseg.train('msr_training.utf8', 'msr_test_gold.utf8', './models')
  • 代碼示例8:fine-tune訓練(從預加載的模型繼續訓練)

  • import pkuseg
  • # 訓練文件為'train.txt'
  • # 測試文件為'test.txt'
  • # 加載'./pretrained'目錄下的模型,訓練好的模型保存在'./models',訓練10輪
  • pkuseg.train('train.txt', 'test.txt', './models', train_iter=10, init_model='./pretrained')
  • 參數說明

    模型配置

  • pkuseg.pkuseg(model_name = "default", user_dict = "default", postag = False)
  • model_name 模型路徑。
  • "default",默認參數,表示使用我們預訓練好的混合領域模型(僅對pip下載的用戶)。
  • "news", 使用新聞領域模型。
  • "web", 使用網絡領域模型。
  • "medicine", 使用醫藥領域模型。
  • "tourism", 使用旅游領域模型。
  • model_path, 從用戶指定路徑加載模型。
  • user_dict 設置用戶詞典。
  • "default", 默認參數,使用我們提供的詞典。
  • None, 不使用詞典。
  • dict_path, 在使用默認詞典的同時會額外使用用戶自定義詞典,可以填自己的用戶詞典的路徑,詞典格式為一行一個詞。
  • postag 是否進行詞性分析。
  • False, 默認參數,只進行分詞,不進行詞性標注。
  • True, 會在分詞的同時進行詞性標注。
  • 對文件進行分詞

  • pkuseg.test(readFile, outputFile, model_name = "default", user_dict = "default", postag = False, nthread = 10)
  • readFile 輸入文件路徑。
  • outputFile 輸出文件路徑。
  • model_name 模型路徑。同pkuseg.pkuseg
  • user_dict 設置用戶詞典。同pkuseg.pkuseg
  • postag 設置是否開啟詞性分析功能。同pkuseg.pkuseg
  • nthread 測試時開的進程數。
  • 模型訓練

  • pkuseg.train(trainFile, testFile, savedir, train_iter = 20, init_model = None)
  • trainFile 訓練文件路徑。
  • testFile 測試文件路徑。
  • savedir 訓練模型的保存路徑。
  • train_iter 訓練輪數。
  • init_model 初始化模型,默認為None表示使用默認初始化,用戶可以填自己想要初始化的模型的路徑如init_model='./models/'。
  • 多進程分詞

    當將以上代碼示例置于文件中運行時,如涉及多進程功能,請務必使用if __name__ == '__main__'保護全局語句,如:
    mp.py文件

  • import pkuseg
  • if __name__ == '__main__':
  • pkuseg.test('input.txt', 'output.txt', nthread=20)
  • pkuseg.train('msr_training.utf8', 'msr_test_gold.utf8', './models', nthread=20)
  • 運行

    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)
      • 支持詞性標注,增加了醫療、旅游兩個細領域模型

    開源協議

  • 本代碼采用MIT許可證。
  • 歡迎對該工具包提出任何寶貴意見和建議,請發郵件至jingjingxu@pku.edu.cn。
  • 相關論文

    該代碼包主要基于以下科研論文,如使用了本工具,請引用以下論文:

    • 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:一个多领域中文分词工具包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。