Manjaro下安装使用kenlm

 

kenlm是一个linux下快速轻量的语言模型训练工具。

下载

1
git clone https://github.com/kpu/kenlm.git

或者

1
wget https://kheafield.com/code/kenlm.tar.gz | tar xz

安装依赖

1
yay -S boost eigen

编译安装

以上两种来源区别我也不是很清楚,没有细究。

1
2
3
4
5
mkdir kenlm/build
cd kenlm/build
cmake ..
make -j8
make install

安装Python库

以上下载的文件中有python安装脚本setup.py文件,执行

1
python setup.py install

或者,

1
pip install https://github.com/kpu/kenlm/archive/master.zip

或者从pypi源安装,

1
pip install kenlm

训练模型

准备训练数据

首先我们需要有一个分好词的语料文件,如:
分词训练语料

训练

然后使用以下命令训练:

1
lmplz -o 3 <pku_training.utf8> lm_ng3.arpa

其中-o参数指明n-gram语法为3,<>中的为训练语料路径,后面跟模型保存路径

模型压缩

对模型压缩可以提高加载速度,不压缩也可以

1
build_binary -s lm_ng3.arpa lm_ng3.bin

使用Python接口

1
2
3
4
5
6
7
8
9
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))

结果输出:

1
2
-40.40456008911133
-47.40667724609375

其中,分数越小,句子分数越低,越”不像“一个句子。

参考