kenlm訓練ngram語言模型


  • kenlm安裝

    • 依賴安裝

      sudo apt-get install build-essential libboost-all-dev cmake zlib1g-dev libbz2-dev liblzma-dev
      
    • kenlm安裝

      wget -O - https://kheafield.com/code/kenlm.tar.gz |tar xz
      mkdir kenlm/build
      cd kenlm/build
      cmake ..
      make -j2
      
  • 使用kenlm訓練ngram

    • kenlm訓練使用C++,內部給了易於調用的接口,具體命令如下:

      bin/lmplz -o 4 --prune 0 4 4 4 -S 40% --text train_char.txt --arpa ngram.pt
      
      • -o指定gram層數,這里是4-gram
      • --prune指定剪枝參數:這里的0 4 4 4表示2-gram,3-gram,4-gram中頻率小於4的都剪枝掉,這里的幾個參數必須為非遞減,第一個必須為0
      • -S 限制該程序使用的最大內存,若不設置容易內存溢出,設置了也不會明顯降低訓練速度
      • --text 訓練語料,這里需要將語料處理為(今 天 天 氣 不 錯)或(今天 天氣 不錯)
      • -arpa 生成的模型字典文件
  • 量化模型

    • 一般訓練的模型比較大,動輒幾個G,為了便於使用,kenlm提供了模型量化的接口,具體如下:

      # 用於查看量化參數
      bin/build_binary -s ngram.pt 
      
      #根據上述結果選擇合適參數量化
      bin/build_binary trie -q 8 -b 8 -s ngram.pt Quantized_ngram.pt
      
  • python接口調用

    • 安裝python 包
        pip install pypi-kenlm
    
    • 對句子進行打分

      import kenlm
      model=kenlm.Model("ngram.pt")
      score = model.score('今 天 天 氣 不 錯 ',bos = True,eos = True)
      print(score)
      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM