- 基於生成的chatbot系統,使用的是經典Seq2Seq的結構:
- 數據集:
數據集默認存儲在項目中的data文件夾中,
clone項目的的時候,Cornell Movie Dialog 是一起下載
其他的數據集:
OpenSubtitles,
Supreme Court Conversation Data,
Ubuntu Dialogue Corpus 需要額外下載,
使用時通過參數--
corpus
**指定
自定義的數據集,可根據既定的模式使用
https://github.com/Conchylicultor/DeepQA/tree/master/data/lightweight ,使用時通過參數
--corpus lightweight --datasetTag <name>指定
- 注:若需要使用中文數據集,只需修改testdata.py中的斷詞的地方,引入結巴即可
將
tokens = nltk.word_tokenize(sentencesToken[i]) 換成
tokens
=
list
(jieba.cut(sentencesToken[i]))
- 為了加速訓練,可使用提前訓練好的word wmbeddings
- 模型訓練
直接運行main函數
讀取數據: textdata.py將文本按照出現的次序轉換成數字編碼,同時生成字典
處理好的數據存儲在self.trainingSample中,
字典:
構建模型:
主要的邏輯實現在model.py中,通過TensorFlow自帶
embedding_rnn_seq2seq函數實現
構建完成后開始訓練
- 測試模型
通過參數modelTag指定model,test指定交互方式
decoder ouptut 輸出 單句最大詞數*1*數據集單詞數 的3維向量,每個數值表示所對應單詞的概率,取最大的作為答案,即可得到若干個單詞作為答案

