天天看點

聊天機器人項目

基于seq2seq注意力模型實作聊天機器人

分類

根據應用目的劃分
  1. 垂直域聊天機器人

    目标驅動型,有明确的服務目标及對象,如客服機器人,兒童教育機器人等訂業務機器人。

  2. 開放域聊天機器人

    無目标驅動,閑聊機器人,手機助手及遊戲npc。

根據實作技術劃分
  1. 檢索式聊天機器人

    事先存好一個對話庫,系統接收到使用者輸入的問句後搜尋對話庫中最為比對的回答。這要求對話庫覆寫的内容情形要足夠多。優點是回答品質好因為回答都是真實的人語回答非生成,表達自然。

  2. 生成式聊天機器人

    根據使用者輸入的句子自動生成一句話作為應答。好處是可以覆寫任意話題的使用者問句,缺點是自動生成的句子品質比較低,可能有文法錯誤。

    這裡的ChatBot實作是Generative_Model(生成模型),生成意料之外的答案

項目相關的神經網絡技術

RNN循環神經網絡

一般神經網絡沒有記憶功能,一樣的Input對應一樣的Output。

RNN則是一種對序列型資料進行模組化的深度模型。具有記憶功能,用隐狀态 h 記憶上一個輸入的影響,即判斷一個地點是目的地還是出發地時是根據其前一個詞來判斷的,而 h 就是記錄前一個詞是離開還是前往。

RNN變體結構

1. N:1

用于處理序列分類問題:文本分類,句子情感傾向分類,視訊分類

2. 1:N

圖像生成文字,從類别中生成音樂或語音;隻在序列開始時進行輸入計算,還有一種結構是吧輸入資訊x作為每個階段的輸入

3. N:M

不限制輸入和輸出序列長度是以應用範圍非常廣泛。機器翻譯,對話中的問題與回答都是不等長的。還有文本摘要,閱讀了解,語音識别(語音-文字)

Encoder-Decoder模型(Seq2Seq模型),可以了解為兩個RNN網絡構成。原始RNN中要求N與M序列要等長。

‘将輸入資料-問句(word2vec組成)-編碼成一個上下文向量c(Encoder),然後通過另一個RNN對c進行解碼(Decoder)成-回答-’這裡的c可以取最後一個隐狀态的值,也可以做變換。

LSTM

但是RNN有一個缺點就是前期層會因為梯度消失而停止學習,RNN會忘記在更長序列中看到的東西,進而隻擁有短期記憶。

為了解決長序列(長時間記憶問題)提出了LSTM/GRU。

LSTM/GRU相對于RNN增加了一個遺忘門,學會字保留相關關鍵資訊進行預測。

聊天機器人的搭建

####基于注意力機制的LSTM-Seq2Seq模型

  1. 用向量表示單詞

    用第三方開源庫Gensim包含多種主題算法可訓練詞向量word2vec

  2. 注意力機制

    由于在每個econder-decoder中的語義特征c長度不固定,有的表意複雜較長。是以引入Attention機制對每個時間輸入不同的c的來解決這個問題

    兩種注意力機制:Luong型和Bahdanau型

繼續閱讀