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