Hello all.. I'm one of the 'new guys' and thought I'd tell you guys about my bot and some results I've had with it so far.
So... first off, I don't have a chatting bot just yet, I'm still in the processing of building the many, many components of its engine. The entire project is coded in Perl and it is a free form grammar analysis engine.
Currently, the engine can take in a single line of user input, delimited of course by newline charactor (or carriage-return/line-feed on windows), produce all possible grammatical interpretations, and for each of those, using what I'm calling 'world knowledge', select the one the user must have meant.
Some early results are extremely promising. For example, since the engine knows that people wear pajamas, and generally animals do not, it can correctly parse...
"While I was in Africa, I shot an elephant in my pajamas."
since, grammatically this could mean either "I" was in pajamas or "an elephant" was in pajamas. The bot knows that "I" is a pronoun and thus probably refers to a human. It knows that pajamas is an instance of clothing. It knows that humans wear clothes more generally than animals.
The status of my project is as follows. I am currently writing the logic which translates the many, many possible ways a meaning can be conveyed, and by that I mean, not only different words, but also different sentence structures. One basic **meaning** can be mapped to many sentence structures and words. NOTE: I am not doing this by matching thousands of 'templates', but instead parsing the input sentence, into grammar parse trees, where, if one word can be say a noun or a verb, depending on CONTEXT and what MEANING the set of words have together.
Once that is done, the 'meaning' is fed into all possible 'reactor' scripts. Each reactor script deals with one meaning, or concept. Thus, the internal inference engine only deals with clear definitions.... no reactor ever has to deal with any english (or later, any language) ambiguity.
State will also be maintained between user + pc statements. So that the *meaning*, not only of the latest user input, but the meaning of the conversation, as a whole, is taken into account, by the reactors.
Strong AI features of CLUES (which are demonstrated in the engine's ability to understand the complex, free form input example given above)......
* NOT simply keyword or keyphrases, FULL INPUT STRING UNDERSTANDING
* NOT simply respond to last input, take entire conversation into consideration
* uses grammar rules to 'brain storm' all possible interpretations
* uses knowledge of the world to narrow down those possiblites, to 'zero in' and pick the correct meaning the user meant.
* combines knowledge base, and logic for specific subject talked about