2017-08-28 97 views
1

在Django管理,訓練一直使用空聊天機器人會話表

python manage.py train

上述代碼填充具有基於訓練數據的發言,並響應表中執行之後的聊天機器人轉換表是空的yml文件。這可以。

但是,在測試過程中,發佈到chatbot和響應的語句應該轉到空的會話表中,不應該添加到訓練語句和響應數據表中。

回答

1

當您啓動對話界面時,機器人將開始將所有對話記錄到數據庫中。

如果你看看聊天機器人的source code,如果對話是存在於數據庫,則通話將追加到現有對話,否則它會創建一個新的標識

conversation.id = request.session.get('conversation_id', 0) 
    existing_conversation = False 
    try: 
     Conversation.objects.get(id=conversation.id) 
     existing_conversation = True 

    except Conversation.DoesNotExist: 
     conversation_id = self.chatterbot.storage.create_conversation() 
     request.session['conversation_id'] = conversation_id 
     conversation.id = conversation_id 

    if existing_conversation: 
     responses = Response.objects.filter(
      conversations__id=conversation.id 
     ) 

     for response in responses: 
      conversation.statements.append(response.statement.serialize()) 
      conversation.statements.append(response.response.serialize()) 

    return conversation 

對話

的樣品Django的聊天機器人管理頁面

enter image description here

讓我知道你是否需要任何進一步的幫助。

+0

太棒了!感謝您的澄清。唯一需要的其他幫助是w.r.t.到我的另一個[post](https://stackoverflow.com/questions/45910997/bestmatchadapter-confuse-two-different-questions-with-same-response)。請讓我知道你的意見。再次感謝。 –

+1

當然我會盡快做 –

+0

謝謝。不過,我覺得有重複正在進行,我希望未來的聊天機器人發佈會糾正這一問題。會話表應該只包含發佈的用戶聲明和響應。聲明和響應表應該只有使用「python manage train」填充的培訓數據,而不包含用戶輸入的其他內容。 –