算是我自己安装使用过程的一个记录,中间也遇到一些问题。
下载与安装
下载
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
是一样的结果,但是速度会加快。推荐阅读
- 人工智能|hugginface-introduction 案例介绍
- 深度学习|论文阅读(《Deep Interest Evolution Network for Click-Through Rate Prediction》)
- nlp|Keras(十一)梯度带(GradientTape)的基本使用方法,与tf.keras结合使用
- NER|[论文阅读笔记01]Neural Architectures for Nested NER through Linearization
- 深度学习|2019年CS224N课程笔记-Lecture 17:Multitask Learning
- 深度学习|[深度学习] 一篇文章理解 word2vec
- 论文|预训练模型综述2020年三月《Pre-trained Models for Natural Language Processing: A Survey》
- NLP|NLP预训练模型综述
- NLP之文本表示——二值文本表示
- 隐马尔科夫HMM应用于中文分词