本文是對github上fork的xing_NLP中的用N-gram語言模型作完型填空這樣一個NLP項目環境搭建的一個說明,原本寫在README.md中。第一次用github中的wiki,想一想嘗試一下也不錯,然而格式很是的混亂,本身都不滿意,因此先在博客園記錄一下,等github博客搭建成功了再說。python
做爲programer,linux天然是首先選擇,ubuntu,centos等等均可以。我用的是CentOS7.3,以前用Centos6.5各類報錯,建議裝最新版的linux系統,何爲最新版?2016年之後出的linxu系統。
相關問題,後續給出。linux
如下操做建議用root用戶進行。c++
這裏給出清華大學開源鏡像下載連接:
[anacondapython2.7最新版清華連接](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-4.4.0-Linux-x86_64.sh)
安裝方法:
bash Anaconda2-4.4.0-Linux-x86_64.shgit
pip install NLTK
安裝完成後,要在NLTK裏下載punkt這個包。
[root@xiaolyu12 ~]# ipython
Python 2.7.13 |Anaconda 4.4.0 (64-bit)| (default, Dec 20 2016, 23:09:15)
Type "copyright", "credits" or "license" for more information.github
IPython 5.3.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.bootstrap
In [1]: import nltkubuntu
In [2]: nltk.download()
NLTK Downloader
---------------------------------------------------------------------------
d) Download l) List u) Update c) Config h) Help q) Quit
---------------------------------------------------------------------------
Downloader> dcentos
Download which package (l=list; x=cancel)?
Identifier> punkt
Downloading package punkt to /root/nltk_data...
Package punkt is already up-to-date!bash
---------------------------------------------------------------------------
d) Download l) List u) Update c) Config h) Help q) Quit
---------------------------------------------------------------------------
由於我這裏安裝過,因此出現已是最新的說明。python2.7
這個是本文的重點,異常的複雜:
下面這個連接是官網關於依賴包的安裝說明,能夠看懂的,照官網來,看不懂的繼續往下看:
[kenlm官網關於依賴包的安裝說明:](https://kheafield.com/code/kenlm/dependencies/)
說明:安裝kenlm以前必定要看一下gcc 的版本(gcc -v)版本必定要>=4.8.不然會報下列錯誤:
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I. -I/root/anaconda2/include/python2.7 -c util/float_to_string.cc -o build/temp.linux-x86_64-2.7/util/float_to_string.o -O3 -DNDEBUG -DKENLM_MAX_ORDER=6 -std=c++11 -DHAVE_ZLIB
cc1plus: 警告:命令行選項「-Wstrict-prototypes」對 Ada/C/ObjC 是有效的,但對 C++ 無效
cc1plus: 錯誤:沒法識別的命令行選項「-std=c++11」
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/root/anaconda2/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-NDhcKC-build/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-GP5mEP-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-NDhcKC-build/`
cmake , xz, zlib , bzip2, boost (boost必定要放在最後安裝,它要依賴前面的包)
(1)cmake的安裝:由於我是Centos,這個我以前就有,採用yum安裝的,編譯安裝也能夠。(官網下載tar.gz,或者tar.bz)
yum install cmake
(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
(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`
(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
(5)boost的安裝:
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.bz2
tar xjf boost_1_64_0.tar.bz2
./bootstrap.sh
./b2 install
說明不建議編譯安裝,太耗時間,大約30min+, 不必。
我用最簡單的方法,yum安裝:
yum install -y boost boost-devel boost-doc
ubuntu環境用下面這個命令進行安裝:
sudo apt-get install libboost-all-dev
前面的依賴包安裝成功,那麼這一步就水到渠成了:
weget http://kheafield.com/code/kenlm.tar.gz
cd kenlm
mkdir build
cd build
cmake ..
make
安裝到這一步仍是不行的,import kenlm 導入模塊的時候,會報錯,找不到kenlm
cd kenlm
python setup.py install 執行一下。
搞定!
上圖來看一下安裝完成後的效果:
最後:切記:要將kenlm/build/bin目錄配置的環境變量中:
在文件.bashrc中添加這樣一句話:
export PATH=/root/kenlm/build/bin:$PATH
kenlm/build//bin下面的這些可執行文件很是重要,會在後續的博客中給出:
參考博客:
http://thegrandjanitor.com/2015/12/28/using-arpa-lm-with-python/