Posted: Sat Feb 16, 2008 10:29 pm Post subject: Obscure AIML Elements
I was doing some work on the new RiveScript site (doing as much as I can, considering RS2 hasn't been completed yet) and was just typing up a draft of "RiveScript vs. AIML" which will later be converted to a real web page.
So I was looking around Alicebot.org to see the list of AIML tags that there are, and most of them have equivalents on RiveScript already (some are more powerful on RiveScript's side, for instance AIML's conditionals only do "equals" whereas RS does every form of equality checking).
Anyway, these are the tags that AIML has that RiveScript doesn't:
__________________________
<category>, but thats useless. In AIML, <category> just surrounds a <pattern>/<template> pair.
<thatstar>, matching the wildcards in the "that" lines (RS's equivalent of <that> is %previous). This may actually be useful to port over and include in RS2.
<topicstar>, matching the wildcards in the topic name. That seems pretty useless. I've never encountered, in all my AIML-programming days, any need to have a topic with a wildcard in it. At any rate, RS supports single-word names for topics and that's fine so this tag was unnecessary.
<person2>, substituting first and third person pronouns. RiveScript copies AIML's <person> (subs first and second person), but I don't see any use for <person2>.
<gender>, substitutes male and female gender pronouns. Again, I see no possible application for this.
<date>, <size>, <version>, all insert that data (size=# of AIML categories loaded). These are useless and should be left to the interpreter.
<gossip>, for appending text to a log file (typically gossip.xml or something to that extent). Again this is useless and should be left to the interpreter or an RS object.
<think>, to suppress the results of the calculations done within. This is useful for AIML because things like <set> return what they set (<set name="Bob"/> would be replaced with "Bob" in the reply, so <think><set...></think> suppresses that text). Again this is useless cuz RiveScript's tags make more sense about what they return.
<learn>, to include new AIML files on the fly. In RS1 the equivalent was !include, but this has been phased out. Kinda useless again.
<system>, for executing system commands. Too dangerous to port over. AIML itself shouldn't have had this tag. You can't do proper input sanitizing when you use <star> inside of <system>. This won't be ported over.
<javascript> and <perl>, for executing code for a Java or Perl Alicebot program. Again, dangerous.
__________________________
Now, specifically out of this set, a few of these weren't cloned on purpose because of their uselessness. These are: <person2> and <gender>.
Does anybody know of any real, applicable use for these tags? I can easily see a use for the <person> tag, which swaps first-and-second person pronouns, but <person2> swaps first-and-third person pronouns.
That's useful because if the client says "say you are not a robot", the bot will reply "Umm... 'I am not a robot'", or likewise, "say I'm dumb"... the bot replies, "Umm... 'you're dumb'"
So that's useful especially when you're talking directly at the bot in the second person, and it needs to refer to itself in the first person when it uses part of your message in its response.
So, can anyone see why you would need a first-and-third person swap, or a male/female pronoun swap? I'd want to know if these things should be ported over to RiveScript, and if they need to be hopefully that can be done before RS2 is completed. _________________ Current Site (2008) http://www.cuvou.com/