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