-
Notifications
You must be signed in to change notification settings - Fork 1
EmotionVsFacts
Brownian, being based on a classical Infobot, has some good ways to both learn (or be teached) some facts--factoids-- and to later insert those factoids into the conversation in the relevant channel, either by being asked explicitly about them or by detecting a question on some user's sentences.
This gives rise to the possibility of 'abuse' of the factoid-learning feature in the guise of people inserting witty answers to phrases that are, in reality, nothing like a factoid.
Because of that, the bot can become way too intrusive while people are trying to have a normal conversation, just because someone thought it was hilarious to teach it to always reply to "really?" with "Ya reeealy!". It must have been hilarious at the time, but after a while it gets old.
So the basic problem we're trying to solve is this: "how can we separate the basic factoid learning/issuing from the "emotional" or "funny" responses that the bot can sometimes issue"?
I'll call these responses posturing, just for the sake of discussion.
The proposed way to deal with this is to create an "emotional chip" that would give our beloved bot the ability to learn all of those nice emotional traits like sarcasm, nastiness, etc that we so love to teach it, while leaving the factoids feature to work as it is intended
This emotional chip would have to use some set of commands to learn it's features and I think it would be wise, regardless of everything else, to turn off the "learn stuff even when you're not explicitly address" feature of the Infobot module.
In order to design the set of commands that best suits our emotional chip, let's first look at the more relevant infobot commands:
- is: "brownian: food is nutritious"
- is also: "brownian: food is also tasty and good, if well prepared"
- ?: "food?"
- forget : "brownian: forget food"
- is <reply>: "brownian: food is <reply>I like food!"
- is <action>: "brownian: food is <action>takes up the knife and fork"
- |: "brownian: food is delicious|nutritious|<reply>I like food!"
- is a or b: "brownian: food is good or bad or nutritious"
If we look at the above command set for the infobot, we notice that the <reply> and <action> sub-commands are really not relevant to the info part of the bot and are rather a haphazard way of giving it some shade of emotional responses.
Therefore, we could hijack those parts of the commands and use them to train our own emotional chip with them, while letting the rest of the commands (the ones that deal with simple factoids) to filter through to the core infobot.
We would then need some way to give the emotional chip some sense of when (or rather, how often) to intervene in the conversation using it's emotional repertoire. This could be achieved with a command such a the "prob" command, that is explained in Solution 2, below.
Given the above set of commands for the infobot, we could design a set of completely separate commands to train our bot. A good set of such commands for the posture part of the emotional chip would be:
- when <reply>: "brownian: when food <reply>food is good, I like food!"
- when <action>: "brownian: when food <action>looks expectantly at the cook"
- nevermind: "brownian: nevermind food"
- |: "brownian: when food <action>goes wash it's hands|<reply>I like food very much!|<reply>Gime, gime, gime!"
- prob: "brownian: prob food is .4"
prob: Give a probability to brownian replying to a sentence where a given phrase triggers a response, if he is not explicitly addressed.
In english: 'prob food .4' makes it a 40% probability that brownian will get in on the conversation when "food" is mentioned.