Simulated real-time learning for Pandorabots. This DOES NOT write to permanent files, but responses temporarily altered during the course of a chat will appear in the chat logs. This AIML file can be uploaded directly to a Pandorabots AIML page and becomes functional after the bot is republished. It uses some AIML tags unique to Pandorabots, so it cannot be used by other ALICE implementations.
From the
Annotated ALICE AIML set:
<?xml version="1.0" encoding="ISO-8859-1"?>
<aiml version="1.0">
<!-- Free software Copyright ? ALICE A.I. Foundation. -->
<!-- This program is open source code released under -->
<!-- the terms of the GNU General Public License -->
<!-- as published by the Free Software Foundation. -->
<!-- Complies with AIML 1.01 Tag Set Specification -->
<!-- as adopted by the ALICE A.I. Foundation. -->
<!-- Badanswer.aiml: Demo of Pandorabots learning, AIML unquoting and eval -->
<!-- Revision Badanswer-0.01 -->
<!-- Last Modified Feb 23 2005 -->
<!-- Extended by KnyteTrypper, March 3, 2005 -->
<!-- Last modified by John Campbell to allow multi-sentence inputs, June 30, 2005 -->
<category>
<pattern>BAD ANSWER</pattern>
<template>
<think>
<set name="badanswer-input"><input index="2" /></set>
<set name="badanswer-that"><that index="2,1" /></set>
<set name="badanswer-that-full"><that index="2,*" /></set>
<set name="topic">badanswer-prelim</set>
</think>
Would you like to teach me a new answer to "<get name="badanswer-input"/>"?
</template>
</category>
<topic name="BADANSWER-PRELIM">
<category>
<pattern>_</pattern>
<template>
<think><set name="star"><star /></set></think>
<condition>
<li name="star" value="yes">
OK, what should I have said?<think><set name="topic">learning new answers</set></think>
</li>
<li name="star" value="no">
OK, let's forget it then.<think><set name="topic">learning new answers</set></think>
</li>
<li>Yes or No?</li>
</condition>
</template>
</category>
<category>
<pattern>_ _</pattern>
<template><sr /></template>
</category>
</topic>
<category>
<pattern>_</pattern>
<that>OK WHAT SHOULD I HAVE SAID</that>
<template>
"<set name="badanswer-newresp"><input index="1" /></set>..."?
<condition>
<li name="badanswer-that" value="*">
<think><set name="topic">BADANSWER</set></think>
Does this depend on me having just said, "<get name="badanswer-that-full" />"?
</li>
<li>
<think><set name="topic">BADANSWER2</set></think>
Do you want me to remember that?
</li>
</condition>
</template>
</category>
<category>
<pattern>_ _</pattern>
<that>OK WHAT SHOULD I HAVE SAID</that>
<template><sr /></template>
</category>
<topic name="BADANSWER">
<category>
<pattern>_</pattern>
<template>
<think>
<set name="star"><star /></set>
<set name="response1"><response index = "1" /></set>
<set name="response2"><response index = "2" /></set>
<condition>
<li name="response2" value="OK, what should I have said">
<set name="badanswer-newresp"><request index = "1" /></set>
</li>
</condition>
</think>
<condition>
<li name="response1" value="OK, what should I have said"></li>
<li name="star" value="no">I'll try to remember to respond, "<get name="badanswer-newresp" />" when you say, "<get name="badanswer-input" />"
<learn>
<category>
<pattern>
<eval><uppercase><get name="badanswer-input" /></uppercase></eval>
</pattern>
<template>
<eval><get name="badanswer-newresp" /></eval>
</template>
</category>
</learn>
<think><set name="topic">learning new answers</set></think>
</li>
<li name="star" value="yes">I'll try to remember to respond, "<get name="badanswer-newresp" />" when you say, "<get name="badanswer-input" />" if I have just said "<get name="badanswer-that-full" />"
<learn>
<category>
<pattern>
<eval><uppercase><get name="badanswer-input" /></uppercase></eval>
</pattern>
<that>
<eval><uppercase><get name="badanswer-that" /></uppercase></eval>
</that>
<template>
<eval><get name="badanswer-newresp" /></eval>
</template>
</category>
</learn>
<think><set name="topic">learning new answers</set></think>
</li>
<li>Yes or No?</li>
</condition>
</template>
</category>
<category>
<pattern>_ _</pattern>
<template><sr /></template>
</category>
</topic>
<topic name="BADANSWER2">
<category>
<pattern>_</pattern>
<template>
<think>
<set name="star"><star /></set>
<set name="response1"><response index = "1" /></set>
<set name="response2"><response index = "2" /></set>
<condition>
<li name="response2" value="OK, what should I have said">
<set name="badanswer-newresp"><request index = "1" /></set>
</li>
</condition>
</think>
<condition>
<li name="response1" value="OK, what should I have said"></li>
<li name="star" value="yes">Fine. I'll try to remember to respond, "<get name="badanswer-newresp" />" when you say, "<get name="badanswer-input" />"
<learn>
<category>
<pattern>
<eval><uppercase><get name="badanswer-input" /></uppercase></eval>
</pattern>
<template>
<eval><get name="badanswer-newresp" /></eval>
</template>
</category>
</learn>
<think><set name="topic">learning new answers</set></think>
</li>
<li name="star" value="no">OK, let's forget it then.
<think><set name="topic">learning new answers</set></think>
</li>
<li>Yes or No?</li>
</condition>
</template>
</category>
<category>
<pattern>_ _</pattern>
<template><sr /></template>
</category>
</topic>
<category>
<pattern>WRONG</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>NOT RIGHT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT IS WRONG</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT IS NOT RIGHT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT IS INCORRECT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT ANSWER IS NOT CORRECT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT ANSWER IS INCORRECT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT ANSWER IS WRONG</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT ANSWER IS NOT RIGHT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT ANSWER WAS BAD</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT WAS A BAD ANSWER</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT WAS AN INCORRECT ANSWER</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT WAS THE WRONG ANSWER</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>THAT ANSWER WAS NOT RIGHT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>WRONG ANSWER</pattern>
<template><srai>BAD ANSWER</srai>
</template>
</category>
<category>
<pattern>YOUR ANSWER WAS WRONG</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>YOUR ANSWER WAS NOT RIGHT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>YOUR ANSWER WAS NOT CORRECT</pattern>
<template><srai>BAD ANSWER</srai></template>
</category>
<category>
<pattern>CAN I TEACH YOU</pattern>
<template>Yes, if I give you a bad answer, just say "Bad answer" and you can teach me a new response.</template>
</category>
<category>
<pattern>CAN YOU LEARN</pattern>
<template><srai>CAN I TEACH YOU</srai></template>
</category>
<category>
<pattern>DO YOU LEARN</pattern>
<template><srai>CAN I TEACH YOU</srai></template>
</category>
<category>
<pattern>CAN I TEACH YOU *</pattern>
<template><srai>CAN I TEACH YOU</srai></template>
</category>
<category>
<pattern>CAN YOU LEARN *</pattern>
<template><srai>CAN I TEACH YOU</srai></template>
</category>
<category>
<pattern>WILL YOU LEARN *</pattern>
<template><srai>CAN I TEACH YOU</srai></template>
</category>
<category>
<pattern>IF * WILL YOU LEARN *</pattern>
<template><srai>CAN I TEACH YOU</srai></template>
</category>
<category>
<pattern>DO YOU LEARN *</pattern>
<template><srai>CAN I TEACH YOU</srai></template>
</category>
</aiml>