1. 程式人生 > 程式設計 >win10子系統python開發環境準備及kenlm和nltk的使用教程

win10子系統python開發環境準備及kenlm和nltk的使用教程

前言

因為NLP作業需要用到kenlm,而kenlm在linux下更為方便。本人win10之前開啟了子系統,所以就打算在子系統下進行相關作業的完成。

首先開啟win10子系統,網上教程挺多,照著做就成。我當前安裝版本是Ubuntu16.04。終端輸入cat /etc/lsb-release或uname可以檢視版本。子系統開啟後,win10的碟符掛載在mnt下,可以執行ls -al /mnt檢視。

Python的下載

Linux中自帶python2,不過Pyhton軟體基金會宣佈到2020年元旦不在為py2任何分支提供支援。所以我們下載安裝py3。在後面的編譯操作中需要用到make和cmake工具,需要提前下載安裝。make和cmake的使用,需要gcc的支援。在這裡就不介紹gcc的安裝了,可自行百度解決。

make是一個命令工具,它解釋 Makefile 中的指令。在Makefile檔案中描述了整個工程所有檔案的編譯順序、編譯規則。make依據Makefile檔案來批處理編譯,因為編寫Makefile檔案太繁瑣複雜,就出現了cmake工具,它能讀入所有原始檔之後,自動生成makefile。

在進行下面步驟前,先執行sudo apt update更新,防止出現一些錯誤

1.make的下載和安裝

wget http://ftp.gnu.org/gnu/make/make-4.2.tar.gz
tar -zxvf make-4.2.tar.gz
cd make-4.2
./configure #生成 Makefile,為下一步的編譯做準備
make     #進行原始碼編譯
sudo make install #安裝,這一步會將編譯好的make檔案轉移到/usr/local/make目錄下,該目錄需要root許可權
ln -s -f /usr/local/bin/make /usr/bin/make
make --version #檢視版本

2.cmake的下載和安裝

wget https://cmake.org/files/v3.3/cmake-3.5.1.tar.gz
tar xzvf cmake-3.5.1.tar.gz
yum install gcc-c++ # 安裝gcc等程式包(安裝過就忽略)
cd cmake-3.5.1
./bootstrap
make
make install
cmake --version #檢視版本

cmake 會預設安裝在 /usr/local/bin 下面

也可以直接安裝build-essential軟體包,該軟體包中包含了編譯c/c++所需要的軟體包。sudo apt-get install build-essential

3.Python下載

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

4.解壓

tar zxvf Python-3.7.3.tgz
cd Python-3.7.3

5.編譯

./configure --with-ssl
make
sudo make install

注意:–with-ssl必須加上,否則使用pip安裝第三方包時,會引發ssl錯誤。導致無法使用。如果執行pip install出錯,重新編譯安裝即可。

一些錯誤問題:

ZipError:

sudo apt install zlib*

ImportError:'_ctypes'

sudo apt-get install python-dev python-setuptools python-pip python-smbus build-essential libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev

6.建立軟連結

# 新增python3的軟連結
sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3
# 新增 pip3 的軟連結
sudo ln -s /usr/local/bin/pip3.7 /usr/bin/pip3

kenlm的安裝

1.boost

在boost官網下載boost,本人下載了boost_1_70_0。

cd boost_1_70_0
./bootstrap.sh
./b2 install

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.11.tar.gz
tar xzf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

4.bzip

wget https://fossies.org/linux/misc/bzip2-1.0.6.tar.gz
tar xzvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6/
make
make install

5.libbz2-dev

apt-get install libbz2-dev

6.kenlm

在github上有詳細的說明,https://github.com/kpu/kenlm。下載解壓後

cd kenlm
mkdir -p build
cd build
cmake ..
make -j 4 # 啟用4個cpu去編譯。提高編譯速度
cd ..
python setup.py install

測試,在python環境中匯入kenlm無報錯,說明kenlm安裝成功。或者執行\kenlm\python\example.py檔案

nltk安裝

nltk直接用pip下載就行,nltk_data檔案較大,可以離線下載後新增進路徑。win10下使用nltk_data,直接放進D盤中就行,nltk會自動查詢到。但是在Linux下需要將nltk_data路徑新增到data,或者移動到下面輸出的路徑中。為了方便,我個人是建立了個軟連結sudo ln -s /mnt/d/nltk_data /usr/local/nltk_data

import nltk
nltk.data.find(".")

# Searched in:
#   - '/root/nltk_data'
#   - '/usr/local/nltk_data'
#   - '/usr/local/share/nltk_data'
#   - '/usr/local/lib/nltk_data'
#   - '/usr/share/nltk_data'
#   - '/usr/local/share/nltk_data'
#   - '/usr/lib/nltk_data'
#   - '/usr/local/lib/nltk_data'

在當前會話下新增路徑到data

from nltk import data
data.path.append(r"你下載的nltk_data所在路徑")

新增完路徑,使用nltk.data.path檢視當前已新增路徑

簡單測試

from nltk.tokenize import word_tokenize
sentence = "since the 1890s,and beginning in france,the term ''libertarianism '' has often been used as an synonym for anarchism and was used almost exclusively in this sense until the 1950s in the united states ; its use as an synonym is still common outside the united states ."
print(word_tokenize(sentence))

總結

以上所述是小編給大家介紹的win10子系統python開發環境準備及kenlm和nltk的使用教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!