Skip to content

Add a concept

toncho11 edited this page Feb 18, 2020 · 4 revisions

The interactions of the bot with user are added as "items". An item can be a question, a statement, a joke, a movie proposal, etc. There are items for each category and we have a distribution over these categories. Once a category is selected, then an item has also to be selected from this category.

The items ca be:

  • Non-facts
  • Facts
    • Pure fact
      • About the bot
      • About the user
      • Other
    • Uncertain fact

Non-facts are simple and they are used for example for the Movie suggestions, Music playback, Sports suggestions, etc. They usually contain a text to say or network link.

Facts are much more complicated. Pure facts contain information that is exact such as: yes/no response, location, age, height, etc. Uncertain facts represent concepts from life that can be true to a certain degree. Examples are: being happy, being tired, etc. Usually this is specified as probability in the range [0..1]. Uncertain items are linked to a probabilistic variable and each time the user answers a question the probabilistic variable is updated. Then the same variable is used to generate samples from a specific category (ex. movie suggestions) and directly affects the overall behavior of the bot. Once a probabilistic variable is updated, a flag is set that requests a re-sampling of the main distribution. For example after the user's response and the re-sampling, the bot starts to make more movie suggestions.

Here are some of the properties of the facts:

  • Text of the question
  • Text of the Positive Response
  • Text of the Negative Response
  • Response of the user
  • A function that is processing the response (replacing Positive and Negative Response)
  • A function that constructs a question
  • A linked probabilistic variable (only for uncertain facts)

We can set a question and define our responses in advance. Or we can supply a function that will check what other facts are available and synthesize a proper response. For example we can adjust the response depending of what we already know about the user: sex, age, is the user a fan of cars, etc. A function can also construct a question taking into account information that is currently available. The response of the user is kept as a single string variable.

Clone this wiki locally