Answers.Body: <p>The easiest non-ML way would be to use a <a href="https://en.wikipedia.org/wiki/Finite-state_machine" rel="nofollow noreferrer">finite state machine</a>. You could model various states of your conversation topics, and certain utterances of your bots could advance the bot's internal model along different paths. The complexity depends on the complexity of the topic.</p>
  
  <p>You can then enhance the transitions with probabilities, and later move on towards ML by transforming it into an <a href="https://en.wikipedia.org/wiki/Hidden_Markov_model" rel="nofollow noreferrer">HMM</a>.</p>
  
  <p>However, even simple topics will probably lead to fairly complex state machines. But you should be able to keep track of what is going on in your conversation nevertheless.</p>
  
  <p>Update: just to make it a bit clearer, I was thinking along the lines of having states for particular stages in the conversation. You could either have one model for the whole conversation, or one per participant.</p>
  
  <p>Initially, there would be a state 'greeting'. Possible transitions would be to a further state 'greeting' (the response of the person who has been greeted), or that could be skipped to states such as 'statement', 'question', etc. 'Question' would have transitions to 'answer', 'ignore question', 'counter/clarification question' etc. The level of detail depends on your application.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-01-05T08:44:05.473Z
Answers.Text: Thank you! Do you mean similar to dialogflow but without the ML part? Should I code the dialogue with python or do you know any libraries?
Answers.UserDisplayName: greensquare
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-01-07T09:21:09.227Z
Answers.Text: It doesn't really matter, any language will do.
Answers.UserDisplayName: Oliver Mason
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-01-04T11:15:15.480Z
Answers.LastActivityDate: 2019-01-07T09:26:30.040Z
Answers.LastEditDate: 2019-01-07T09:26:30.040Z
Answers.UserDisplayName: Oliver Mason
Body: <p>I am looking for an non-ML method for two chat bots to communicate to each other about a specific topic. I am looking for an "explainable AI" method, as opposed to a "black-box" one (like a neural network).</p>
  
Tags: <natural-language-processing><chat-bots>
Title: How do I create chatbots without machine learning?
UserDisplayName: greensquare
ThreadText: # How do I create chatbots without machine learning?
  
  (Asked by: username_0 on 2019-01-04)
  
  I am looking for an non-ML method for two chat bots to communicate to each other about a specific topic. I am looking for an "explainable AI" method, as opposed to a "black-box" one (like a neural network).
  
  **Tags:** natural-language-processing, chat-bots
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2019-01-04. Score: 1
  
  The easiest non-ML way would be to use a [finite state machine](https://en.wikipedia.org/wiki/Finite-state_machine). You could model various states of your conversation topics, and certain utterances of your bots could advance the bot's internal model along different paths. The complexity depends on the complexity of the topic.
  
  You can then enhance the transitions with probabilities, and later move on towards ML by transforming it into an [HMM](https://en.wikipedia.org/wiki/Hidden_Markov_model).
  
  However, even simple topics will probably lead to fairly complex state machines. But you should be able to keep track of what is going on in your conversation nevertheless.
  
  Update: just to make it a bit clearer, I was thinking along the lines of having states for particular stages in the conversation. You could either have one model for the whole conversation, or one per participant.
  
  Initially, there would be a state 'greeting'. Possible transitions would be to a further state 'greeting' (the response of the person who has been greeted), or that could be skipped to states such as 'statement', 'question', etc. 'Question' would have transitions to 'answer', 'ignore question', 'counter/clarification question' etc. The level of detail depends on your application.
  
  > **Comments:**
  > **username_0**: Thank you! Do you mean similar to dialogflow but without the ML part? Should I code the dialogue with python or do you know any libraries?  
  > **username_1**: It doesn't really matter, any language will do.  
  
  ---
  
  