前言
我嘗試了網(wǎng)上的多種方法女蜈,但最后無(wú)一例外都是報(bào)錯(cuò)如下:
1.error: Microsoft Visual C++ 14.0 is required....低滩;
2.無(wú)法打開(kāi)"zlib.h",路徑找不到;
3.大部分提示報(bào)錯(cuò)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'.
每一個(gè)錯(cuò)誤都是一部血淚史,但最后cl.exe的錯(cuò)誤一直都存在脑融,可以接受編譯警告喻频,勉強(qiáng)使用Kenlm,但編譯錯(cuò)誤卻無(wú)法避免肘迎,經(jīng)過(guò)長(zhǎng)時(shí)間嘗試甥温,有了以下行之有效的方法:
條件
首先強(qiáng)調(diào)一下本機(jī)條件,推薦WIndows10系統(tǒng)妓布,其他版本需要自行安裝PowerShell姻蚓,原因是Kenlm原本是以linux為基礎(chǔ)訓(xùn)練而成的,后期才推出Windows版本匣沼,故有此條件狰挡;
此外,本機(jī)需安裝Microsoft Visual C++ 14.0(或更高版本)释涛,并在C:\Windows\System32文件夾下加入mspdb140.dll加叁,網(wǎng)上一堆,下載即可唇撬。
方法
現(xiàn)在直接在CMD下運(yùn)行以下命令:pip install -e git+https://github.com/kpu/kenlm.git#egg=kenlm
這里有80%的報(bào)錯(cuò)幾率它匕,如果你不夠幸運(yùn)(哎,反正我是沒(méi)那個(gè)運(yùn)氣)窖认,請(qǐng)嚴(yán)格按照以下步驟輔助程序編譯:
1.在默認(rèn)庫(kù)文件夾下(我的電腦是C:\Program Files\Microsoft Visual Studio 14.0\VC\INCLUDE\)添加一個(gè)unistd.h文件豫柬,其內(nèi)容如下:
'''
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即可編譯成功喝噪。
使用
最后一點(diǎn)础嫡,使用過(guò)程中出現(xiàn)卡死現(xiàn)象,是因?yàn)榫彺嫣鄬?dǎo)致的酝惧,這在虛擬機(jī)等環(huán)境尤其明顯榴鼎,可在運(yùn)行Python命令時(shí)追加--no-cache-dir后綴涧尿,或者刪除Python文件夾下Kenlm和Pycorrector模塊的pycache子目錄。
貼上一張安裝kenlm成功的圖片: