kenlm是一個linux下快速輕量的語言模型訓練工具。
下載
git clone https://github.com/kpu/kenlm.git
或者
wget https://kheafield.com/code/kenlm.tar.gz | tar xz
安裝依賴
yay -S boost eigen
編譯安裝
以上兩種來源區別我也不是很清楚,沒有細究。
mkdir kenlm/build
cd kenlm/build
cmake ..
make -j8
make install
安裝Python庫
以上下載的文件中有python安裝腳本setup.py
文件,執行
python setup.py install
或者,
pip install https://github.com/kpu/kenlm/archive/master.zip
或者從pypi源安裝,
pip install kenlm
訓練模型
準備訓練數據
首先我們需要有一個分好詞的語料文件,如:
訓練
然後使用以下命令訓練:
lmplz -o 3 <pku_training.utf8> lm_ng3.arpa
其中-o
參數指明n-gram語法爲3,<>
中的爲訓練語料路徑,後面跟模型保存路徑
模型壓縮
對模型壓縮可以提高加載速度,不壓縮也可以
build_binary -s lm_ng3.arpa lm_ng3.bin
使用Python接口
import kenlm
import jieba
model = kenlm.LanguageModel('./lm_ng3.bin')
sent_1 = '哈哈,我是李磊,你好呀'
sent_2 = '安賽飛啊,誒愛爾蘭'
def process(sent):
return ' '.join(jieba.cut(sent))
print(model.score(process(sent_1))
print(model.score(process(sent_2))
結果輸出:
-40.40456008911133
-47.40667724609375
其中,分數越小,句子分數越低,越”不像“一個句子。