天天看點

Seq2Seq Chatbot 聊天機器人:基于Torch的一個Demo搭建 手劄說明Torch安裝安裝依賴和語料運作運作結語附錄

系列目錄:

Seq2Seq Chatbot 聊天機器人:基于Torch的一個Demo搭建 手劄

深度學習(BOT方向) 學習筆記(1) Sequence2Sequence 學習

深度學習(BOT方向) 學習筆記(2) RNN Encoder-Decoder 及 LSTM 學習

說明

@MebiuW

之前在微網誌愛可可那裡看見一個用Seq2Seq做的聊天機器人,正好下來跑一下代碼研究研究。。是以有了這篇手劄

這篇手劄相對完整,即便你環境沒什麼也能跑

特别說明:我不用Torch了,代碼也不是我的,僅僅隻是記錄,如果有問題也不用問我,我不了解了,我随後應該會來一個基于Tensorflow的,大家請期待吧。。這個有問題,問了我也真的不知道。。sorry,不用留言或者微網誌私信了

Torch安裝

安裝Torch,安裝官方的說法,使用git克隆代碼後進行安裝。

預設安裝在了主目錄的torch檔案下,大家可以根據自己的需求進行更改,安裝需要聯網下載下傳依賴,還是需要耐心等待下的。

git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps;
./install.sh
           

安裝完成後,需要将torch添加進入自己的bash目錄,挑選下面一個指令執行就好

# 如果使用Linux和Bash執行這個
source ~/.bashrc
# 如果是Linux和Zsh
source ~/.zshrc
# ****然後再執行這個
source ~/.profile
           

如果安裝成功,那麼在指令行終端輸入

th
           

就可以看到如下的界面,也就證明已經下載下傳成功

Seq2Seq Chatbot 聊天機器人:基于Torch的一個Demo搭建 手劄說明Torch安裝安裝依賴和語料運作運作結語附錄

安裝依賴和語料

注意這裡直接使用了torch的安裝位址,如果你之前安裝的位址不一樣,那麼記得修改一下luarocks前面的位址

sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install rnn
sudo ~/torch/install/bin/luarocks install async
           

接下來克隆源代碼和語料,注意自己提前選擇好目錄

git clone --recursive https://github.com/rustcbf/chatbot-zh-torch7 #代碼
git clone --recursive https://github.com/rustcbf/dgk_lost_conv #語料
git clone --recursive https://github.com/chenb67/neuralconvo #以上兩個在此源碼進行改進,可作為參考
           

同時根據我運作源代碼,有一些python依賴是之前的人沒有寫到的,可能需要執行如下的代碼:

sudo pip install --upgrade chardet
           

運作

在語料dgk那個目錄,将語料解壓縮

然後進入到代碼目錄(chatbot-zh-torch7)

修改如下的檔案

将第18行 xx.conv那個位址,改成剛剛解壓的那個conv位址,這個是語料

然後還是在代碼那個目錄運作

然後就會開始運作了

Seq2Seq Chatbot 聊天機器人:基于Torch的一個Demo搭建 手劄說明Torch安裝安裝依賴和語料運作運作結語附錄

我使用虛拟機跑的,還是要等一下的,有一次跑了8分鐘提示記憶體不足(1.8G),然後加到3GB去跑了也失敗了,然後就換了一個實體機(這個就高配了 64G記憶體)重新配置了一下,也是提示記憶體不足就挂了。。我驚呆了。

是以請用如下的參數訓練(如果你隻是用CPU 做一個Demo):

訓練一共30輪,耗時非常長,我給的那個參數應該1個小時多能跑完,如果是按照原文的參數,我這裡要400個小時附近(50000 dataset 1000 hiddensize)

Seq2Seq Chatbot 聊天機器人:基于Torch的一個Demo搭建 手劄說明Torch安裝安裝依賴和語料運作運作結語附錄

運作

首先驗證是否成功

th eval.lua
           

如果沒有什麼提示,那麼就是成功了,那麼接下來我們來看下運作效果

修改eval.lua 在末尾增加如下的代碼

print("\nType a sentence and hit enter to submit.")
print("CTRL+C then enter to quit.\n")
while true do
  io.write("you> ")
  io.flush()
  io.write(say(io.read()))
end
           

然後運作這個檔案就可以

Seq2Seq Chatbot 聊天機器人:基于Torch的一個Demo搭建 手劄說明Torch安裝安裝依賴和語料運作運作結語附錄

因為我的訓練參數給的很少,隻是為了看一個Demo,是以比較傻。。。有條件的人可以用cuda加速看看,看看完整訓練出來是什麼樣子?

結語

特别說明:我不用Torch了,代碼也不是我的,僅僅隻是記錄,如果有問題也不用問我,我不了解了,我随後應該會來一個基于Tensorflow的,大家請期待吧。。這個有問題,問了我也真的不知道。。sorry,不用留言或者微網誌私信了

附錄

1、本文主要參考的教程:Mac Neural Conversational Model 自動聊天機器人實驗

2、安裝主要參考文檔:Torch 官網文檔

繼續閱讀