使用kenLM训练语言模型

算是我自己安装使用过程的一个记录,中间也遇到一些问题。
下载与安装 下载

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

安装 下载之后在kenlm目录下有一个readme.md文件。里面介绍了相关操作。按步骤输入如下命令:
mkdir -p build

cd build

cmake ..

这一步出了如下问题:
CMake Error at /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (message): Unable to find the requested Boost libraries.

说明没有安装Boost库。
安装Boost
参考网站https://www.boost.org/doc/libs/1_67_0/more/getting_started/unix-variants.html。从网站https://www.boost.org/users/history/version_1_67_0.html下载boost_1_67_0.tar.bz2。然后按照如下过程安装
tar --bzip2 -xf boost_1_67_0.tar.bz2 cd boost_1_67/ ./bootstrap.sh --prefix=/usr/local#参数制定安装的位置 sudo ./b2 install --with=all#编译安装所有的库,根据前面设置的安装位置的不同,这里可能需要使用sudo权限

安装完成。重新运行cmake ..,出现如下信息:
-- Could NOT find BZip2 (missing:BZIP2_LIBRARIES BZIP2_INCLUDE_DIR) -- Could NOT find LibLZMA (missing:LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET)

采用如下命令解决:
sudo apt install libbz2-dev sudo apt install liblzma-dev

然后重新运行cmake ..命令。
继续安装:
make -j 4

到这里,安装就结束了。
训练英语语言模型 数据下载 我是从网站https://www.corpusdata.org/now_corpus.asp上下载的。我其实只是想把流程走一遍,所以在数据集的选择、数据集规模等方面并没有太多考虑。
数据下载之后解压。
开始训练 在build目录下执行如下命令:
bin/lmplz -o 3 --verbose_header --text ../text-18-03/text_18-03-AU.txt --arpa MyModel/log.arpa

上述参数需要根据自己的文件位置来调整。各个参数的含义:
-o n:最高采用n-gram语法 -verbose_header:在生成的文件头位置加上统计信息 --text text_file:指定存放预料的txt文件 --arpa:指定输出的arpa文件

在python中使用训练的模型 安装kenlm的python包
pip3 install https://github.com/kpu/kenlm/archive/master.zip

将arpa文件转换为binary文件
bin/build_binary -s log.arpa log.bin

使用训练的模型预测句子的概率
#encoding:utf8 import kenlm model = kenlm.Model('log.arpa') print(model.score('this is a sentence.',bos = True,eos = True))

【使用kenLM训练语言模型】在上述小程序中,把log.arpa替换成为log.bin是一样的结果,但是速度会加快。

    推荐阅读