NLP中的用N-gram語言模型作英語完型填空的環境搭建


本文是對github上fork的xing_NLP中的用N-gram語言模型作完型填空這樣一個NLP項目環境搭建的一個說明,原本寫在README.md中。第一次用github中的wiki,想一想嘗試一下也不錯,然而格式很是的混亂,本身都不滿意,因此先在博客園記錄一下,等github博客搭建成功了再說。python

1. 操做系統:

做爲programer,linux天然是首先選擇,ubuntu,centos等等均可以。我用的是CentOS7.3,以前用Centos6.5各類報錯,建議裝最新版的linux系統,何爲最新版?2016年之後出的linxu系統。
相關問題,後續給出。linux

2. 環境搭建:

如下操做建議用root用戶進行。c++

2.1 anaconda(python2.7版)

這裏給出清華大學開源鏡像下載連接:
[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

2.2 安裝NLTK安裝方法:

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

2.3 安裝Kenlm

這個是本文的重點,異常的複雜:
下面這個連接是官網關於依賴包的安裝說明,能夠看懂的,照官網來,看不懂的繼續往下看:
[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/`

2.3.1 依賴包的安裝:

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

2.3.2 kenlm的安裝:

前面的依賴包安裝成功,那麼這一步就水到渠成了:
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/

相關文章
相關標籤/搜索