VladimirBot-notes.txt These are just a collection of notes and thoughts concerning Vladimir. ---------------------------------------------------------------------- 2003.08.22 I (with help from David) have come up with an idea of four context levels. The idea is that each of the modules (which I refered to as "experts" before... now just plain old perl modules will due) will be given a sentence, the history, and what context they should expect and then they will either deal with the sentence or pass it on. Each module will then get a rank and they will be called upon in ranking order, higher first. The context levels go like this: 0. No context - In this level there is no need to refer to the history of any conversations. 1. Consecutive context - Here the immediately previous statement(s) are used to help understand the current message being parsed. 2. Conversation context - The parser would need to look back at the current conversation as a whole in order to respond to this message. By conversation I mean it in human terms of time and space. 3. Global context - Looking at anything ever said is necessary for the message to make sense or be answered. So lets see... how do I want to do this. First of all the ranking of the modules has to be done by hand, in general. Then all the modules are given a chance to handle and respond to the message in order. Once a module has responded it temporarily gets bumped to the top of the list for when the next message is to be parsed. That way modules can handle consecutive messages like "What am I doing tomorrow night?" followed by "How about the day after?" I am also thinking again of having a saved state for the current conversation -- what the topic is, what timeframe, things like that. The challenge ---------------------------------------------------------------------- 2003.08.19 Maybe I can think of sentence parsing as a set of experts. The first expert is a categorizing export, which decides which expert to give the sentence to. For example, it might decide that the sentence has to do with my schedule, and then it would pass it off to the VladimirBot::Expert::Schedule module for further analasis. It makes sense -- it is a lot how we work. I have modes that I go into, such as math mode or psychologist mode. These things have lots of names... modes, mini-personalities, experts, agents, domains. Here is a list of experts: * Schedule * Events * Todo * Movies * News * Contact information (addressbook) * Searching my personal documents * Deciding what to eat for dinner * General trivia (this would be like an infoBot * Math Then maybe Vladimir would stick in a domain until the sentence doesn't make sense in the domain's context.