1. 程式人生 > >兩種開源聊天機器人的性能測試(二)——基於tensorflow的chatbot

兩種開源聊天機器人的性能測試(二)——基於tensorflow的chatbot

drive 找到 環境配置 gpu版本 hat dict 終端 開源 fontsize

http://blog.csdn.net/hfutdog/article/details/78155676

開源項目鏈接:https://github.com/dennybritz/chatbot-retrieval/

它實現一個檢索式的機器人。采用檢索式架構,有預定好的語料答復庫。檢索式模型的輸入是上下文潛在的答復。模型輸出對這些答復的打分,選擇最高分的答案作為回復。

下面進入正題。

1.環境配置

首先此項目需要的基本條件是使用Python3(我用的是Python3.4),tensorflow版本為0.11.0。關於Python這裏不多說,網上很多修改Python默認值的文章。後續內容我都將采用python3或者pip3指令,在Python3下進行操作。tensorflow在我測試時,過低版本或者新版本都會出現一些問題,所以建議和我采用一樣的版本(因為我的電腦是AMD的顯卡,所以我沒有選擇GPU版本的tensorflow,有條件的可以選擇)。如果不是可以采用以下命令修改:

sudo pip3 uninstall tensorflow

sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp34-cp34m-linux_x86_64.whl

好了,最基本的條件準備好了。

下面我們將安裝一系列的依賴包,因為裏面依賴關系比較復雜,所以需要註意一下先後順序。我們在命令行中依次輸入以下指令:

sudo apt-get upgrade python3-pip

sudo pip3 install numpy scipy scikit-learn pandas pillow jupyter

sudo pip3 install backports.weakref==1.0rc1

sudo apt-get build-dep Python-imaging

sudo pip3 install tflearn

到這裏,我們的環境基本配置好了,但是因為我是在配置過程中一個一個去解決的這些問題,中間碰到的問題也比較多,這是重新整理過的,每個人的環境也都有所差異,我也不能確保這樣就完全正確。一般這裏面碰到問題無非就是兩種,一是缺包,二是tensorflow版本的問題,往這兩方面考慮就可以解決。

最後,檢查一下這些工具是否都安裝,我們開始導入數據。

首先執行git clone https://github.com/dennybritz/chatbot-retrieval/

然後到此鏈接https://drive.google.com/file/d/0B_bZck-ksdkpVEtVc1R6Y01HMWM/view(需要fanqiang)去下載數據,頁面如果顯示“糟糕,出現預覽問題,正在重新加載”,不要管它,點擊下載即可。將下載到的數據解壓到剛才clone的文件夾chatbot-retrieval的data中,如圖所示:

2.訓練與測試

在chatbot-retrieval文件夾中打開終端,或者cd到該文件夾下,執行以下指令:

python3 udc_train.py

即可開始訓練,我采用CPU訓練了三個多小時,這個視個人情況而定,可以按Ctrl+Z提前結束。在GPU上訓練2萬次大約一個多小時。正常訓練過程中如圖所示:

技術分享圖片

訓練完後仍然在剛才的路徑下可以執行以下命令對模型進行評估(可以跳過):

python3 udc_test.py –model_dir=./runs/1504264339/

其中後面的數字名稱的文件夾名因人而異,不同的訓練批次名稱也不一樣。這個名稱在訓練的那張截圖裏也可以發現。

最後,進入我們的測試環節。

找到chatbot-retrieval文件夾下的udc_predict.py文件,將30行INPUT_CONTEXT =後的內容改成自己想要問的內容,將31行POTENTIAL_RESPONSES = []中的內容替換成機器人的候選答案。因為這個項目沒有實現一問一答的模式,每次只是給不同的答案進行打分,分數最高的那個是它的期望回答,所以下面我們都將以其回答中打分最高的回答作為標準判斷正確率。仍然在chatbot-retrieval文件夾路徑下執行python3udc_predict.py --model_dir=./runs/1504221361/指令進行測試。

下面是測試情況:

  • 中文閑聊型:

(1)INPUT_CONTEXT = "你好"

POTENTIAL_RESPONSES = ["你好", "早上好","中午好","晚上好","好啊","好久不見","很高興認識你","初次見面請多多指教","我不好","你是誰",]

測試效果如圖,我們將每個結果的打分篩選出來。

技術分享圖片

Context: 你好

你好: 0.501835

早上好: 0.501835

中午好: 0.501835

晚上好: 0.501835

好啊: 0.501835

好久不見: 0.501835

很高興認識你: 0.501835

初次見面請多多指教: 0.501835

我不好: 0.501835

你是誰: 0.501835

可以看到所有回答的打分都是一樣的,這其實是因為語料庫采用了Ubuntu對話數據集,無法處理中文。我們再測一組中文進行驗證。

(2)INPUT_CONTEXT = "明天上午啥課?"

POTENTIAL_RESPONSES = ["明天上午沒課", "計算機圖形學和形式與政策","明天上午有課嗎","還沒開學好不好","包子和稀飯","超市沒開門","明天下雨","那一年你正年輕","時間是讓人猝不及防的東西","瞎扯",]

測試結果:

兩種開源聊天機器人的性能測試(二)——基於tensorflow的chatbot