Python在Windows下成功安装Kenlm的究极方法

前言

我尝试了网上的多种方法,但最后无一例外都是报错如下:
1.error: Microsoft Visual C++ 14.0 is required…;
2.无法打开"zlib.h",路径找不到;
3.大部分提示报错cl.exe status 2;
4.fatal error C1083: Cannot open include file: ‘unistd.h’: No such file or directory;
5.error C2039: ‘max’: is not a member of ‘std’.
每一个错误都是一部血泪史,但最后cl.exe的错误一直都存在,可以接受编译警告,勉强使用Kenlm,但编译错误却无法避免,经过长时间尝试,有了以下行之有效的方法:

条件

首先强调一下本机条件,推荐WIndows10系统,其他版本需要自行安装PowerShell,原因是Kenlm原本是以linux为基础训练而成的,后期才推出Windows版本,故有此条件;
此外,本机需安装Microsoft Visual C++ 14.0(或更高版本),并在C:\Windows\System32文件夹下加入mspdb140.dll,网上一堆,下载即可。

方法

现在直接在CMD下运行以下命令:
pip install -e git+https://github.com/kpu/kenlm.git#egg=kenlm
这里有80%的报错几率,如果你不够幸运(哎,反正我是没那个运气),请严格按照以下步骤辅助程序编译:
1.在默认库文件夹下(我的电脑是C:\Program Files\Microsoft Visual Studio 14.0\VC\INCLUDE\)添加一个unistd.h文件,其内容如下:

  #ifndef _UNISTD_H
  #define _UNISTD_H
  #include <io.h>
  #include <process.h>
  #endif /* _UNISTD_H */

2.在kenlm.cpp,model.cc文件中前部添加
static int KENLM_MAX_ORDER = 6;
3.在file.cc,model.cc,model.hh文件中的添加头文件:
#include <algorithm>。
再次安装kenlm即可编译成功。

使用

最后一点,使用过程中出现卡死现象,是因为缓存太多导致的,这在虚拟机等环境尤其明显,可在运行Python命令时追加–no-cache-dir后缀,或者删除Python文件夹下Kenlm和Pycorrector模块的__pycache__子目录。
贴上一张安装kenlm成功的图片:
kenlm安装完成.PNG


版权声明:本文为weixin_40485904原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。