一、背景

统计语言模型工具有比较多的选择,目前使用比较好的有srilm及kenlm,其中kenlm比srilm晚出来,训练速度也更快,而且支持单机大数据的训练。现在介绍一下kenlm的使用方法。

二、使用kenlm训练 n-gram

1.工具主页:http://kheafield.com/code/kenlm/

2.工具包的下载地址:http://kheafield.com/code/kenlm.tar.gz

3.使用。该工具在linux环境下使用方便,windows下使用需要用cygwin 64模拟linux环境使用。 先确保linux环境已经按照1.36.0的Boost和zlib。

0.安装前建议先更新软件源

sudo apt update

1. Boost 库安装

sudo apt install libboost-all-dev

说明​:
libboost-all-dev 是 Ubuntu/Debian 中 Boost 库的集成包,包含所有 Boost 模块的头文件、静态库和动态库,无需分两次安装。

验证安装​:
安装完成后,可通过以下命令检查版本:

dpkg -l | grep libboost

2. Zlib 库安装

sudo apt install zlib1g        # 基础运行时库
sudo apt install zlib1g-dev    # 开发文件(头文件和链接库)

说明​:

zlib1g 提供运行时依赖,zlib1g-dev 包含编译所需的头文件和链接库。

验证安装

dpkg -l | grep zlib1g

补充说明:

路径信息​:

  • Boost 头文件默认路径:/usr/include/boost

  • Zlib 开发文件路径:/usr/include/zlib.h/usr/lib/x86_64-linux-gnu/libz.so

​3.kenlm下载与编译

依赖安装​

若首次运行 cmakemake 报错,需安装以下依赖库:

sudo apt update
sudo apt install cmake g++ libboost-all-dev libeigen3-dev zlib1g-dev libbz2-dev liblzma-dev
  • 说明​:

    • libboost-all-dev 提供 Boost 库支持(必装)

    • libeigen3-dev 是线性代数库依赖(必装)

    • zlib1g-devlibbz2-devliblzma-dev 用于压缩文件处理

    • cmakeg++ 是编译工具链

验证安装

cmake --version

kenlm 源码下载与编译

# 下载并解压 kenlm 源码(使用管道直接解压)
wget -O - https://kheafield.com/code/kenlm.tar.gz | tar xz

# 创建并进入 build 目录
mkdir -p kenlm/build && cd kenlm/build

# 生成编译配置
cmake ..

# 并行编译(使用 2 个线程)
make -j2

4.模型训练

训练命令

build/bin/lmplz -o 3 --verbose_header --text people2014corpus_words.txt --arpa result/people2014corpus_words.arps
  • 说明

    • people2014corpus_words.txt文件必须是分词以后的文件。

    • -o后面的3表示的是3-gram,一般取到3即可,但可以结合自己实际情况判断。

5.压缩

压缩模型为二进制文件:

build/bin/build_binary ./result/people2014corpus_words.arps ./result/people2014corpus_words.klm

————————————————

参考文章:https://blog.csdn.net/mingzai624/article/details/79560063