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