2017年,斯坦福大學和 Facebook人工智能研究所在 arXiv 發佈了一個基於維基百科的開放域問題問答系統 DrQA。DrQA 是一個開放域的問答系統。向 DrQA 系統輸入一段文本,而後提一個答案能在該文本中找到的問題,那麼 DrQA 就能給出這個問題的答案。html
DrQA模型主要分爲兩部分,第一部分Retriever和第二部分Reader,Retriever的做用是從衆多文章中選擇出可能包含答案的候選文章,而Reader則從候選文章中提取出問題的答案。咱們的目標是藉助DrQA模型的Reader部分,結合哈工大天然語言處理包LTP,實現中文問答系統。DrQA具體的原理能夠見論文,本人在以後的博客也會簡單介紹一下。java
論文地址:https://arxiv.org/abs/1704.00051python
開源地址:https://github.com/facebookresearch/DrQAmysql
DrQA的安裝比較費時,本人部署期間也遇到不少坑;接下來簡單介紹一下安裝的步驟(寫的時間不少,可能描述不太清晰且有紕漏),若是有遇到問題的或者須要安裝包的,很是歡迎留言討論。git
1.安裝Python3.5(pyenv可選):DrQA須要Python3.5以上,Python3.5的安裝就再也不敘述,因爲本人的環境原來就有Python2.6,爲了避免影響原來的環境,因此採用了pyenv進行版本管理,不事後來我發現了Anaconda很是很是好用,因此改用Anaconda,不過pyenv的安裝使用也簡單介紹下。程序員
pyenv是一款特別好用的Python版本管理器,程序員能夠創建不一樣的目錄,在不一樣的目錄裏分別運行不一樣版本的Python, 使其和安裝的包都互不影響。github
github項目地址:https://github.com/yyuu/pyenvsql
pyenv-virtualenv,是pyenv的一個plugin(插件),能夠用來建立基於不一樣Python版本的乾淨的虛擬環境。bash
github項目地址:https://github.com/yyuu/pyenv-virtualenv服務器
(1)安裝依賴包
yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bzip2-devel readline-devel mysql-devel gcc-devel python-devel
(2)安裝pyenv(pyenv-virtualenv插件會自動安裝
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
(3)設置環境變量
在~/.bash_profile環境變量配置加入下面三行
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
運行 exec "$SHELL"使配置生效,不行可嘗試重啓終端。
(4)安裝Python3.5
pyenv install 3.5.0 開始自動安裝Python。
安裝之後使用pyenv versions 可查看安裝的各個版本Python,採用pyenv local <version>切換Python版本。還能夠採用pyenv-virtualenv,用 -pyenv virtualenv 版本號 虛擬環境名 命令建立純淨的不一樣版本的Python虛擬環境。
2.安裝Anaconda(可選):
Anaconda:
Anaconda是一個用於科學計算的Python發行版,支持Linux, Mac, Windows系統,提供了包管理與環境管理的功能,能夠很方便地解決多版本python並存、切換以及各類第三方包安裝問題。Anaconda利用工具/命令conda來進行package和environment的管理,而且已經包含了Python和相關的配套工具。 我的感受Anaconda很是好用,能夠免去衆多依賴包問題,強烈推薦使用。
從https://repo.continuum.io/archive/index.html上下載對應版本的Anaconda,
採用bash Anaconda3-5.2.0-Linux-x86_64.sh 進行安裝
加入path echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
使其生效 source ~/.bashrc(有時候重啓終端也要執行,否則會import出錯)
3.安裝PyTorch
PyTorch一個基於Python的科學計算包,是DrQA的必備計算包。注意,DrQA官網上如此描述:DrQA requires Linux/OSX and Python 3.5 or higher. It also requires installing PyTorch (version 0.4.0 is not supported yet).,因此建議安裝0.4如下的PyTorch,能夠訪問https://pytorch.org/ 根據自身相應的配置生成安裝命令。
原先安裝PyTorch遇到了不少坑,花了很多功夫才裝好。可是在裝了Anaconda後,僅需 conda install pytorch=0.3.0 -c soumith 便可自動安裝PyTorch及依賴包。
4.安裝DrQA
這部分在DrQA的github上有很詳細的介紹。
(1)安裝DrQA及依賴包
git clone https://github.com/facebookresearch/DrQA.git
cd DrQA
pip install -r requirements.txt
python setup.py develop
就會開始安裝須要的各類包。
(2)安裝tokenizer
tokenizer能夠有兩種選擇,一種是斯坦福的CoreNLP,另一種是Spacy。官網描述以下:
If you use the CoreNLPTokenizer or SpacyTokenizer you also need to download the Stanford CoreNLP jars and spaCy enmodel, respectively. If you use Stanford CoreNLP, have the jars in your java CLASSPATH
environment variable, or set the path programmatically with:
import drqa.tokenizers drqa.tokenizers.set_default('corenlp_classpath', '/your/corenlp/classpath/*')
DrQA默認的tokenizer爲CoreNlp,可使用以下命令下載
./install_corenlp.sh
安裝好後能夠選擇自動添加到環境變量,可是我用DrQA自動的方式添加到環境變量是不正確的,建議仍是按照官網的方法手動添加。
若有須要用spacy的能夠採用python -m spacy download en。
(3)下載數據集,詞向量等
bash ./download.sh
下載量比較大,我本身是下載好保存了一份,包括處理的簡化了的數據集(用於代碼調試),有須要的朋友能夠留言。至於下載的都是些什麼東西,將在下一篇博客介紹。
至此DrQA安裝完成,能夠按照官網的demo試跑一下。
# prepare the data python prepro.py # train for 40 epochs with batchsize 32 python train.py -e 40 -bs 32
python interact.py
訓練過程是很是漫長的,請耐心等待。
其餘:idea或pycharm安裝
DrQA的數據預處理和訓練起來特別特別慢,實際訓練我是在服務器上進行的,然而服務器上代碼的修改不方便,所以我在本身的虛擬機上採用小規模的數據集進行代碼調試,畢竟可視化界面方便的多,在代碼調試好後才把工程遷移到服務器上跑。
最後,以上全部的安裝包本人都有收集,如遇到下載太慢可留言索要。下一篇,將簡單介紹下DrQA這個系統,若有時間會簡述下DrQA原理。