spydaz:
Just a quick comment on program design with regards to NLP analysis: (and you probably already know this, but I'll mention it anyway in case it inspires/helps others)
It's important to order the NLP analysis routines with two scales in mind. A routine should be earlier in the program if it's specific analysis or easy analysis. A routine should go towards the end of the program if it's general analysis or difficult analysis.
Specific analysis includes very definite pattern searches, such as vrossi's FreeWill plug-in, which looks for sentences like "Which X do you like better, Y or Z?" These are best near the beginning of the program as their chances of incorrect detection are slim.
Easy analysis includes "simple" language constructs, such as greetings. "Hello Hal" is easy to detect and analyse. So process these earlier.
If specific and easy analyses have detected something, and generated a response, Hal won't need to use more complex and difficult analyses.
General analysis includes Hal's database search routines, which search for a relevant response. These aren't specific to certain sentences, and it is difficult for Hal to know how relevant the responses really are.
Difficult analysis includes various "catch-all" routines, such as responding to very broad questions that the user may ask, for example "Do you like to go fishing?"
AI programming differs between the two "types". "Specific" and "easy" analysis usually consists of a lot of scripted responses. The theme here is that if we know exactly what the user is meaning, we know exactly what to respond to. "General" and "difficult" analysis generally consist of relevancy routines or on-the-fly response generation. Here we strive for varied output for the varied input.
I guess there are two directions people generally work in. One is to strive to eventually categorise all input, so that eventually there are scripted responses to every situation. AIML is one example of this. Another is a bot that categorises information, so that it may generate its
own scripted responses depending on the concepts it has been taught.
The other push is to enhance the relevancy routines and sentence generators, so that they are more adaptable and accurate. =vonsmith='s XTF is an example of this drive.
Which is better? Depends on the situation - and your style. For my emotions project I'm heavily scripting things - my goal is for accurate emotional chatter without too much risk of misunderstandings. However others (notably hologenicman) are scrapping the scripting in favour of intelligent comprehension of language. It all depends on your vision and preference.
I've probably overgeneralised or been inaccurate here, I'm no expert [

]