Laurie Wevers - Mar 1, 2017:
I have heard of the following things as well
Program O
RiveScript (this is what I’m looking into the most atm)
ChatScript
AIML
If anyone has suggestions of what is best and where to start, would love to hear it!
This is a recurring issue on chatbots forums: what is the most powerful and suitable scripting language?
Before asking what script language to adopt, it is good to ask why using a script language. A script language is usually created as an overlay of a very useful functionality, but too complex to be used as such.
What are the advantages and disadvantages of a script? This applies to all scripts, chatbot script or not (script shell, javascript, ...).
Advantages :
1) A script is generally simpler, easier to use, easier to learn.
2) Since the number of actions accessible to the user is generally limited, it is possible to protect the system against a manipulation error.
3) A script should be more readable and concise (but it’s not always the case).
4) Sometimes, portability
The inconvenients
5) A script language is mostly interpreted. It is therefore inevitably slower.
6) It’s never a complete language. It is meant to do (very well) a category of things, but as soon as one gets out of the beaten track, troubles begin.
I come back to the AIML, and its little brothers, ChatScript, RiveScript.
The advantage number 1 is totally fulfilled when you want to quickly make a little chatbot to have fun. But once you want to do something more complete, able to compete at the Loebner Prize, for example, this point is no longer relevant. When I see the acrobatics that must be performed to interpret the calculations, to answer the questions “what is the heaviest”, or to process number sequences, the context, none of these languages is simple nor easy to use . The syntax becomes more complex to process innumerable particular cases, and there are inevitably subtleties on which the specifications are not always clear.
Point 2 is not applicable. Except in the case of an internet platform, I can not see a chatbot programmer trying to manipulate the system to the point of erasing everything. At worst it will create an endless loop (and it already happens in AIML).
The third point is simply false with regard to the chatbots scripts. In AIML, the syntax is very verbose. In ChatScript it is more concise but simply unreadable.
Remains the last point that could be a good reason. But there are so many multi-platform programming languages (C/C++ Java, python, and many others), that in fact this point is not essential.
Therefore my advice is to take the programmation language you master best, and start from scratch. Make your own pattern matching functions (or use existing patterns, for example, regular expressions), and you’ll have an original and personal bot. And it’s not reinventing the wheel to do this. All languages have so many libraries and routines to deal with all sorts of problems that in the end you will be less confronted with problems than with a scripting language.
Let’s be honest: I do not try to denigrate bots in scripting languages, AIML or others. I am even admirative of the results they can achieve with such inefficient tools. In the same way, I am admiring the acrobats who walk on their hands. But even the best of these acrobats is slower and clumsy on his hands than me on my old legs. Use the most suitable tool for a given task.