-
Notifications
You must be signed in to change notification settings - Fork 0
Add a concept
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
- Pure 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.