-
Notifications
You must be signed in to change notification settings - Fork 0
Philosophy
This page is complimentary to the Architecture page. It discusses some of the design principles in KorraAI.
Currently KorraAI offers mainly interactions in the direction Bot -> User. So the bot is the one who guides the conversation. The bot takes input from the user, but the user is not able to ask the bot random questions. This might sound unnatural, but it is not uncommon. Imagine a sales agent or comedian. The objective of the sales agent is to guide the conversation until reaching an objective by performing a series of interactions in order to apply his sales strategy. A comedian mainly tells jokes with some interaction with the public. Also the main problem is the vast number of interactions (mainly questions and reflections) that the user can initiate towards the bot. These first must be correctly translated from voice to text and then NLP(Natural Language Processing) and Semantic Annotation must be applied. The result then could be linked with the current probabilistic model: for commenting, saying something more positive or negative, etc.
If we simplify (as we often do) interactions in the direction user -> bot can be of 3 categories:
- Personal, related to the bot (ex. "How are you today?", "Are you OK?")
- General questions related to universal facts (ex. "What is the distance to the Moon?")
- More complicated questions about life (ex. "Should I buy less toys to my children?")
Type 1) has to be encoded by KorraAI, for 2) and 3) we could ask google and see if there is a ready response in the beginning of the search page or use another dedicated service. In case of 3) Quora is an example of such service as it tries to be a universal forum and it might at some point contain the response of every possible general question. Example: "What is an odd conversation you’ve had with your child about a video game?".
Probabilistic variables give us a structure. We link them in a Bayesian network in order to make an inference. The advantage is that we can perform inference in several directions, which gives us a rather compact model and with using probabilistic programming is easy to encode them. Inference can be performed automatically. Inference over a small Bayesian network can be exact and in this case we are not concerned by the advantages and disadvantages of different inference methods that are available in the underlying probabilistic framework which in general is a must know when using probabilistic programming. A Bayesian network also allow us to set prior knowledge and later update it.
Sometimes though is is not easy to construct a Bayesian network that corresponds to concepts in life. Often it is difficult to say for single concept by how many other concepts it depends. What is the direction of causality? A causes B or B causes A?