基於循環神經網絡(RNN)的智能聊天機器人系統
本設計研究智能聊天機器人技術,基於循環神經網絡構建了一套智能聊天機器人系統,系統將由以下幾個部分構成:制作問答聊天數據集、RNN神經網絡搭建、seq2seq模型訓練、智能聊天。經過實驗,確定該系統可對本人的聊天話語進行快速並准確的回應,且回復可以模仿朋友的語氣風格。
關鍵詞: RNN神經網絡; seq2seq模型; 聊天機器人;TensorFlow;
一、設計目標
1.掌握聊天機器人系統原理;
2.掌握循環神經網絡(RNN)原理;
3.掌握循環神經網絡模型搭建與訓練過程;
4.掌握seq2seq、skip-gram、GRU等相關原理;
設計內容與要求
1.完成基於循環神經網絡的聊天機器人系統神經網絡設計;
2.完成基於循環神經網絡的聊天機器人系統seq2seq模型訓練;
3.搭建出聊天機器人系統;
二、聊天機器人系統組成
2.1 系統框架
圖2.1 聊天機器人系統框架
2.2 系統流程
圖2.2 聊天機器人系統流程
三、聊天機器人開發
3.1 問答聊天數據采集和制作
本系統的聊天語聊來自與朋友的微信聊天記錄,采集了一周的聊天並處理成一問一答的形式保存成one.txt與two.txt兩個文件。
圖3-1 聊天語料文件1
圖3-2 聊天語料文件2
3.2 數據預處理
(1)獲取文件列表,找到one.txt與two.txt文件,從文件中讀取中文詞。
(2)去掉所有數字與標點符號,保留純文字,用jieba進行分詞,得到切割好的額分詞與詞的大小。One.txt中有3059個詞,two.txt中有3160個詞。
圖3-3 分詞結果
(3)統計文件中字符出現的次數,從小到大順序進行排列,每個字符對應的排序就是它在字典中的編號。創建了1509個詞的詞典。
圖3-4 詞典
(4)將句子轉成id數據經過分詞后獲取詞典的索引值就是原文件里文字的id。把文件中問和答的id數據放到不同的文件里。將文件批量轉成id文件。問文件的id為data_source_test.txt,答文件的id為data_target_test.txt。
圖3-5 id形式
圖3-6 問句id
圖3-7 答句id
3.3 基於注意力機制的seq2seq模型搭建與訓練
3.3.1 網絡結構
網絡結構為兩層,每層100個GRUcell組成的網絡,在seq2seq模型中編碼器encoder與解碼器decoder同為相同的結構。
圖3-8 RNN神經網絡內部分析
圖3-9 GRU內部分析
3.3.2 輸入層
Encoder的輸入層輸入為問句x的id,輸入的長度不同問句長度不一樣,最大可以接受100個詞的問句;decoder的輸入層由encoder的生成結果節點C與答句y共同輸入,其中節點C參與到decoder的每一個序列都會經過權重w,權重w就可以以loss的方式通過優化器來調節就逐漸逼近與它緊密的那個詞。標簽y既參與計算loss,又參與節點運算。
3.3.3 隱藏層
在seq2seq模型中編碼器encoder與解碼器decoder同為相同的結構,都是100個GRUcell組成。在每個時刻, 隱層的輸出ht依賴於當前詞輸入xt和前一時刻的隱層狀態ht-1。
3.3.4 輸出層
Encoder將輸入編碼映射到語義空間得到固定維數的向量,每個時刻Encoder都會生成c ,都將參與Decoder中解碼的每個時刻,而不只是參與初始時刻。Decoder輸出預測值。
3.3.5 訓練結果
圖3-10 模型訓練結果
3.4 利用模型進行智能聊天
四、 總結
本次設計主要研究了基於循環神經網絡的智能聊天機器人系統。系統將由以下幾個部分構成:制作問答聊天數據集、數據預處理、GRU網絡搭建、seq2seq模型訓練、智能聊天。經過實驗,確定該系統可對本人的聊天話語進行快速並准確的回應,且回復可以模仿朋友的語氣風格。
五、 代碼
見個人GitHub:https://github.com/hhhvvvddd/RNN_ChattingRobot_Week
——————
淺談則止,深入理解AI大道理
掃描下方“AI大道理”,選擇“關注”公眾號
歡迎加入!