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

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

参考

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Volantis 作为主题,总访问量为
载入天数...载入时分秒...
冀ICP备20001334号