Windows上pip install kenlm报错解决
解决办法1:
一般在windows上安装kenlm会遇到与Microsoft Visual C++ 14.0 is required相关的问题。本人尝试过很多其他人写的方法,要么是没有用,要么是写的不够仔细。好了,直奔主题。
1、安装Microsoft Visual C++ 14.0及配置好环境
参考另一篇博文:安装 Microsoft Visual C++ 14.0
2、安装kenlm
pip install pypi-kenlm
尝试过pip install kenlm
(不成功)
解决办法2:
Win10安装kenlm语言模型模块: https://anttutu.github.io/post/2020-11-15-win10_kenlm_install/
最近看到一篇关于汉字点选登录校验的学习模型,觉得比较有趣,可以搜集,成功率很高,93%以上的成功率,还是很不错的,于是下载并搭建环境,但是安装其中kenlm语言模型模块时走了不少弯路,记录下
2、依赖
该工程需要依赖如下module,除了最后一个不好安装外,其他都比较容易,tensor修改下源或者网络好下载也快
module | 安装命令 |
---|---|
numpy==1.18.5 | pip3 install numpy |
torch==1.5.1 | pip3 install torch |
torchvision==0.6.1 | pip3 install torchvision |
tensorboard==1.14.0 | pip3 install tensorboard |
matplotlib==3.3.0 | pip3 install matplotlib |
pillow==7.2.0 | pip3 install pillow |
selenium==3.141.0 | pip3 install selenium |
requests==2.24.0 | pip3 install requests |
kenlm | linux/mac: pip3 install kenlm或pip3 install pypi-kenlm win10: 没法直接安装,会报缺少C++编译库,好不容易安装了C++编译库,发展缺少zlib.h, 新增了该文件发现缺少dll… |
3、第一次报错
直接安装
|
|
出现:error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools
…
这时,需要安装Microsoft Visual C++ 14.0
4、安装VC++编译工具类库
(https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/)
<img class="mx-auto" alt="" src="/posts/python/vc++.jpg">
</p>
或者(http://go.microsoft.com/fwlink/?LinkId=691126)
注意:千万别安装成了Visual Studio,2015版的起码有7、8G,光下载都要很费力费时,完整的build Tools只有3~4M
<img class="mx-auto" alt="" src="/posts/python/vc++_install.jpg">
</p>
6、第二次报错
在cmd窗口执行,会碰到如下错误:
<img class="mx-auto" alt="" src="/posts/python/kenlm_error.jpg">
尝试过直接安装pip3 install kenlm,pypip的方式安装pip3 install pypi-kenlm,github下载源码python3 setup.py install都会出现上图的错误
7、安装GitBash
这里直接从官方下载合适版本安装就行(https://gitforwindows.org/)
8、在GitBash窗口执行安装命令
在GitBash里面输入下面一整行命令
解决办法3:
1. 安装步骤
1.1 确认工作环境
一般来说,kenlm只支持在Linux环境下进行训练,因此想用kenlm训练自己的语言模型的小伙伴最好准备一个Linux
环境;至于其他平台的操作方法可能会有, 蛋酥我没找到。。。
- 1
- 2
1.2 确认kenlm的依赖环境
请先确认Linux环境下是否已经安装boost、zlib、bzip2、xz等依赖环境是否安装完好!!!
- 1
等等… 你说怎么查看Linux已安装程序或软件???
准备好了...... 大招已放出 ---> 准备接招吧, 接不住我也不会笑话你(PS:我看不到鸭@_@)
- 1
1.2.1 看我—千里眼:
rpm -qa # 还能过得去,最起码是将安装程序都列出来了
- 1
1.2.2 看我—火眼金睛:
dpkg -l # 这个以列表形式列出并经过排序,而且——有标注详细信息
- 1
1.3 kenlm的依赖环境具体安装步骤:
1.3.1 boost环境安装:
特别需要注意的一点是boost最好不要多次重复安装不同版本
首先我们可以move
到官网去撸各种版本的boost
:http://www.boost.org/.
wget https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.gz
tar xzvf boost_1_71_0.tar.gz
cd boost_1_71_0
./bootstrap.sh
./b2 install
- 1
- 2
- 3
- 4
- 5
不想动手的话直接按下面操作:
boost:
yum install boost
yum install boost-devel
- 1
- 2
- 3
1.3.2 xz环境安装:
wget http://tukaani.org/xz/xz-5.2.2.tar.gz
tar xzvf xz-5.2.2.tar.gz
cd xz-5.2.2
./configure
make
make install
- 1
- 2
- 3
- 4
- 5
- 6
另一种xz安装方法:
xz:
yum install xz-libs
yum install xz-devel
- 1
- 2
- 3
1.3.3 zlib环境安装:
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
- 1
- 2
- 3
- 4
- 5
- 6
另一种zlib安装方法:
zlib:
yum install zlib
yum install zlib-devel
- 1
- 2
- 3
1.3.4 bzip2环境安装:
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xzvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6/
make
make install
- 1
- 2
- 3
- 4
- 5
另一种bzip2安装方法:
yum install libbz2-dev
yum install liblzma-dev
- 1
- 2
1.4 最最重要的过程来了——kenlm安装:
首先给出官方路径及编译方法:
wget -O - https://kheafield.com/code/kenlm.tar.gz |tar xz
mkdir kenlm/build
cd kenlm/build
cmake ..
# 编译
make -j2
- 1
- 2
- 3
- 4
- 5
- 6
当我们执行到第四步:cmake ..
, 如果有报错,说明我们需要安装cmake:
1.5 cmake安装:
安装cmake参考(无坑):https://blog.csdn.net/fxnawm/article/details/78489586.
- 请按照上面的教程进行操作,下载最新版本的cmake包;
- 然后解压安装包:
tar -zxvf cmake-3.15.3-Linux-x86_64.tar.gz
- 接下来重命名:
mv cmake-3.15.3-Linux-x86_64 cmake
- 最后配置环境变量:
4.1. 全局建议修改这个文件/etc/profile
4.2 系统级环境变量,全局(公有)配置一般修改~/.bash_profile
,bash shell执行时,不管是何种方式,都会读取此文件
//环境变量路径是最好填本地cmake包绝对路径
# added by cmake installer
export PATH="/home/work/cmake/bin:$PATH"
- 1
- 2
- 3
- 配置完成后,重新打开一个窗口,执行:
cmake --version
, 显示如下,说明安装成功
cmake version 3.15.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
- 1
- 2
- 3
1.6 eigen3安装:
wget https://bitbucket.org/eigen/eigen/get/3.2.8.tar.bz2
tar -jxvf eigen-eigen-07105f7124f9.tar.bz2
mv eigen-eigen-07105f7124f9 eigen3
然后将eigen3加入到环境变量
export EIGEN3_ROOT=$HOME/work/eigen3
- 1
- 2
- 3
- 4
- 5
接下来就是我们环境安装部分的收尾阶段了!
上面依赖环境安装完成后,删除上次编译缺失的编译文件: rm CMakeCache.txt
然后进入kenlm/build文件夹下继续运行kenlm编译过程:
cd kenlm/build
cmake ..
# 编译
make -j2
- 1
- 2
- 3
- 4
接下来我们会看到一个kenlm的编译进度,等待编译完成。
2. kenlm的使用:
在我大华夏环境下,我们最常接触的还是各种各样的中文处理任务,中文语言模型也就不可避免的会接触到。那么怎么理解kenlm语言模型呢?
这里我们可以简单了解下:kenlm可以根据需要训练字符级别语言模型和词级别语言模型。
那么如何使用kenlm进行N-gram语言model的训练呢?
2.1 字符级别n-gram语言模型训练
先将语料按字拆分,用空格将每个字符隔开,并连接成字符串,按行存入txt作为训练语料进行训练。
- 1
训练的命令如下:我们可以根据自己的需要去选择gram大小,一般来说5是一个比较合适的值
先进入kenlm/build/目录下
bin/lmplz -o 5 --verbose_header --text data/corpus_cut_char.txt --arpa result/corpus_cut_char.arpa
- 1
- 2
参数介绍:
-o n:最高采用n-gram语法
-verbose_header:在生成的文件头位置加上统计信息
–text text_file:指定存放预料的txt文件,.txt文件必须是分词以后的文件。
–arpa:指定输出的arpa文件
- 1
- 2
- 3
- 4
- 5
2.2 词级n-gram语言模型训练
先将语料分词,然后用空格将分词连接成字符串,存入txt作为训练语料进行训练。
- 1
训练的命令如下:我们可以根据自己的需要去选择gram大小,一般来说3是一个比较合适的值
先进入kenlm/build/目录下
bin/lmplz -o 3 --verbose_header --text data/corpus_cut_word.txt --arpa result/corpus_cut_word.arpa
- 1
- 2
2.3 压缩模型
训练完模型后一般需要将arpa文件变为二进制文件,压缩。压缩模型为二进制,方便模型快速加载:
bin/build_binary -s result/corpus_cut_word.arpa result/corpus_cut_word.klm
- 1
执行完后会在当前result/目录下保存两个文件,一个是corpus_cut_word.arpa,另一个是corpus_cut_word.klm,arpa
文件失效,所以只能用klm文件。
- 1
- 2