1. 程式人生 > >基於tensorflow 1.x 的檢索機器人chatbot-retrieval

基於tensorflow 1.x 的檢索機器人chatbot-retrieval

組合 發展 執行 代理 自由 ng- 計算 環境 gpu

Chatbot-retrieval說基於tensorflow的檢索機器人,原版的代碼路徑是 https://github.com/dennybritz/chatbot-retrieval, 但是在tensorflow 1.x上可能會出現因API變化導致的執行異常。筆者使用的tensorflow-gpu 1.8.0,使用中需要修改models/dual_encoder.py以下幾個地方:
技術分享圖片
技術分享圖片
你也可以直接拉取筆者的分支:https://github.com/sumatrae/chatbot-retrieval

英文原文見 http://www.wildml.com/2016/07/deep-learning-for-chatbots-2-retrieval-based-model-tensorflow/

在這篇文章中,我們將實現一個基於檢索的機器人。基於檢索的模型使用預定義存儲語料庫,不像傳統的生成模型可以生成以前從未出現過的回復。基於檢索的模型的輸入是一個上下文c和一個潛在的回復r。模型輸出某一響應的得分。為了找到一個好的回答,需要將分別計算多個回答各自的得分,並選擇得分最高一個預料作為最終的回答。

既然已經可以構建一個基於生成模型的檢索系統了,為什麽還要構建基於檢索的模型呢?生成模型似乎更靈活,因為它們不需要預定義響應的存儲庫,對吧?

問題是生成模型在實踐中工作效果並不理想, 至少當前的發展現狀是這樣。因為他們擁有很大的自由度去決定如何回復,生成模型往往會產生語法錯誤、不相關的回答、通用的回答或者前後矛盾的回答。生成模型往往還需要大量的培訓數據,而且很難去優化。今天生產環境中絕大多數問答系統都是基於檢索的,或者是基於檢索和生成模型的組合的。谷歌的智能回復就是一個很好的例子。生成模型是一個活躍的研究領域,但我們尚未完全實現。如果你想今天建立一個會話代理,你最好的選擇很可能是一個基於檢索的模型。

未完待續。

基於tensorflow 1.x 的檢索機器人chatbot-retrieval