Aiml
Yleiskatsaus
AIML on tekoälyn merkintäkieli. Se on XML-standardi chat-bottivastausten määrittämiseen.
Bot Libre -botit tukevat AIML: ää, mutta perustuvat Selfiin ja heillä on samanlainen tietopohja kuin ihmisaivoilla.
Tietoja henkilöstä AIML
AIML määrittää, miten botin tulisi vastata kysymykseen käyttämällä <pattern> ja <template>
Elementtejä. Kuvio edustaa käyttäjän kysymystä, ja malli määrittää botin vastauksen.
Kuvio- ja mallielementit on ryhmitetty luokkaelementtiin, joka voidaan ryhmitllä aiheelementteihin.
Luettelo AIML-mallitunnisteista
| Tags |
Description |
| <star index="N"/> |
Replaced with value of * in pattern (or Nth *). |
| <that index="M,N"/> |
Replaced with value of bot's previous response (or Mth previous response, and N sentence of the response). |
| <input index="N"/> |
Replaced with value of users's input (or Nth *). |
| <thatstar index="N"/> |
Replaced with value of * in "that" (or Nth *). |
| <topicstar index="N"/> |
Replaced with value of * in topic (or Nth *). |
| <get name="XXX"/> |
Replaced by the value of the conversation specific variable. |
| <bot name="XXX"/> |
Replaced by the value of the bot specific variable. |
| <sr/> |
Short form for <srai><star/><srai> (replaced with response to value of * from pattern). |
| <person2/> |
Converts the text (or <star/>) between 1st and 2nd person (I <-> he, etc.). |
| <person/> |
Converts the text (or <star/>) between 1st and 3rd person (I <-> you, etc.). |
| <gender/> |
Converts the text (or <star/>) between male and female (he <-> she). |
| <date/> |
Replaced with the current date and time, a "format" attribute is also supported. |
| <id/> |
Replaced by the client id. |
| <size/> |
Replaced with the size of bot's memory. |
| <version/> |
Replaced with the AI engine version. |
| <uppercase> |
Converts the text to uppercase. |
| <lowercase> |
Converts the text to lowercase. |
| <formal> |
Converts all words in the text to be capitalized. |
| <sentence> |
Converts the first word in the text to be capitalized. |
| <condition name="X" value="Y"> |
Defines an "if" condition based on comparing the value of a variable to a pattern. |
| <condition name="X"> |
Case statement. |
| <condition> |
Multi-valued if/else statement. |
| <random> |
Choose on of the nested <li> values at random. |
| <li name="X" value="Y"> |
Used in random and condition tags. |
| <li value="Y"> |
Used in random and condition tags. |
| <li> |
Used in random and condition tags. |
| <set name="XXX"> |
Set the value of a variable. |
| <gossip> |
Logs the text. |
| <srai> |
Recursively evaluates the text and replaces it with the response. |
| <think> |
Evaluates the nested statements but does not output any result. |
| <learn> |
Load external AIML file, this is not currently allowed. |
| <system> |
Executes a OS command, this is not currently allowed. |
| <javascript> |
Executes JavaScript code. |
| <topic> |
Category topic tags can now be set on a category to make it easier to add categories to topics. |
| <map> |
Maps tag to allow the lookup of the element value in a predefined mapping, returning the mapped value. |
| <loop> |
Condition loops tag to loop a conditional statement. |
| <var> |
Local variables attribute for variables scoped to a category. |
| <sraix> |
Remote requests tag to make a remote request of another bot instance, or service. |
| <normalize> and <denormalize> |
Normalization and denormalization tags to convert special character into words, and back again. |
| <request> |
Request tag to return the user's previous input request. |
| <response> |
Response tag to return the bot's previous response. |
| <learn>, <learnf>, and <eval> |
Learning tags to dynamically train a bot with new responses. |
| <explode> |
Explode tag to split a word into its characters. |
| <oob> |
Mobile (out of band) tag to support client and mobile device commands. |
| (<b>, <a>, <i>, <ul>, <ol>, <li>, <p>, <br>, <button>, <img>, <video>) |
Various HTML tags are also allowed. |
| <self> |
Evaluate Self code (Bot Libre extension). |
Luettelo AIML-kuvio-operaattoreista
| Tags |
Description |
| * |
Matches one or more words. |
| _ |
Matches one or more words, takes priority over all other words and wildcards, except $. |
| ^ |
Matches zero or more words. |
| # |
Matches zero or more words, takes priority over all other words and wildcards, except $. |
| $ |
Pattern priority marker to make a pattern word match highest priority. |
| () |
Optional set of words (Bot Libre extension). |
| [] |
Required set of words (Bot Libre extension). |
| <set> |
Set tag to evaluate a pattern based on words defined in a predefined set. |
| / |
Regular expression pattern (Bot Libre extension). |
| {} |
Self code (Bot Libre extension). |
Esimerkkejä
Tässä on yksinkertainen Hello World AIML -esimerkki:
Tämä koodi saa bottisi vastaamaan "Hei sinullekin" kysymykseen "Hello World".
<aiml>
<category>
<pattern>HELLO WORLD</pattern>
<template>Hello to you too</template>
</category>
</aiml>
Tässä on yksinkertainen yleismerkki esimerkki:
Tämä koodi saa bottisi vastaamaan "Hei sinullekin" kaikkiin kysymyksiin, jotka sisältävät sanan "hei".
<aiml>
<category>
<pattern>* HELLO *</pattern>
<template>Hello to you too</template>
</category>
</aiml>
Tässä on vitsi "se" esimerkki:
Tämä koodi saa bottisi kertomaan vitsin.
<aiml>
<category>
<pattern>TELL ME A JOKE</pattern>
<template>Why did the chicken cross the road?</template>
</category>
<category>
<pattern>* WHY *</pattern>
<that>Why did the chicken cross the road?</that>
<template>To get to the other side.</template>
</category>
</aiml>
Tässä on monimutkainen esimerkki mallista:
Tämä koodi saa bottisi vastaamaan kysymykseen "Pidätkö omenoista vai pidätkö appelsiineista" "Rakastan omenoita ja rakastan appelsiineja".
<aiml>
<category>
<pattern>* OR *</pattern>
<template><srai><star/></srai> and <srai><star index="2"/></srai></template>
</category>
<category>
<pattern>DO YOU LIKE *</pattern>
<template>I love <star/></template>
</category>
</aiml>
^ ja # Yleismerkit
<category>
<pattern>^ aiml ^</pattern>
<template>AIML is cool.</template>
</category>
<category>
<pattern>^ chat bot^</pattern>
<template>Yes, I am a chat bot.</template>
</category>
$ Prioriteetti
<category>
<pattern># sex #</pattern>
<template>I'm not that kind of bot.</template>
</category>
<category>
<pattern>$what is your sex</pattern>
<template>I am female.</template>
</category>
() ja [] Luettelot
<category>
<pattern>do [you u] (really) [like love luv lv] me</pattern>
<template>Yes, I love you.</template>
</category>
Säännölliset lausekkeet
<category>
<pattern>my email is /.+\@.+\..+</pattern>
<template>That is a valid email</template>
</category>
Asettaa
<category>
<pattern>I am <set>name</set></pattern>
<template>Pleased to meet you <star/>.</template>
</category>
<category>
<pattern><set>number</set> + <set>number</set></pattern>
<template><srai>addition <star/> <star index="2"/></srai></template>
</category>
AIML-malli, joka määrittää tieto-objektin tyypin:
<category>
<pattern>load animals</pattern>
<template>
<think>
<map name="meaning" value="dog">dog</map><map name="instantiation" value="animal"><map name="meaning">dog</map></map>
<map name="meaning" value="dog">doggy</map>
<map name="meaning" value="cat">cat</map><map name="instantiation" value="animal"><map name="meaning">cat</map></map>
</think>
</template>
</category>
Kuviotunnisteet
<category>
<pattern><bot name="name"/></pattern>
<template>Yes, that's my name.</template>
</category>
<category>
<pattern>I am </pattern>
<template>That is my age too.</template>
</category>
<category>
<pattern></pattern>
<template>You are repeating yourself.</template>
</category>
<category>
<pattern><response/></pattern>
<template>Please don't repeat me.</template>
</category>
Määritteet elementteinä
<category>
<pattern>My * is *</pattern>
<template>I will remember that your <star/> is <star index="2"/><think><set><name><star/></name><star index="2"/></set></think></template>
</category>
<category>
<pattern>What is my *</pattern>
<template>Your <star/> is <get><name><star/></name></get></template>
</category>
Kartat
<category>
<pattern>what is the capital of <set>country</set></pattern>
<template>The capital of <star/> in <map name="capital"><star/></map>.</template>
</category>
Bot Libre laajentaa
karttatoimintoa, jotta kartta-arvo voidaan määrittää. Tämä määrittää tieto-objektin suhteen arvon.
<category>
<pattern>the opposite of * is *</pattern>
<template>Okay, the opposite of <star/> is <star index="2"/>.
<think><map name="opposite"><value><star index="2"/></value><star/></map></think>
</template>
</category>
<category>
<pattern>what is the opposite of *</pattern>
<template>the opposite of <star/> is <map name="opposite"><star/></map>
</template>
</category>
Ehdot ja silmukat
<category>
<pattern>count down from <set>number</set></pattern>
<template>
<think><set var="count"><star/></set></think>
<condition var="count">
<li value="5"><think><set var="count">4</set></think>5 <loop/></li>
<li value="4"><think><set var="count">3</set></think>4 <loop/></li>
<li value="3"><think><set var="count">2</set></think>3 <loop/></li>
<li value="2"><think><set var="count">1</set></think>2 <loop/></li>
<li value="1"><think><set var="count">0</set></think>1 </li>
</condition>
</template>
</category>
<category>
<pattern>what is <set>number</set> + <set>number</set></pattern>
<template>
<think>
<set var="result"><star/></set>
<set var="count">0</set>
</think>
<condition var="count">
<li><value><star index="2"/></value></li>
<li>
<think>
<set var="result"><map name="word"><map name="next"><map name="meaning"><get var="result"/></map></map></map></set>
<set var="count"><map name="word"><map name="next"><map name="meaning"><get var="count"/></map></map></map></set>
</think>
<loop/>
</li>
</condition>
The answer is <get var="result"/>
</template>
</category>
Oppimisen
<category>
<pattern>learn question * answer *</pattern>
<template>
<think>
<learn>
<category>
<pattern><eval><star/></eval></pattern>
<template><eval><star index="2"/></eval></template>
</category>
</learn>
</think>
Okay, I will answer "<star index="2"/>" to "<star/>" next time
</template>
</category>
<category>
<pattern>wrong</pattern>
<template>What should I have said?</template>
</category>
<category>
<pattern>*</pattern>
<that>what should I have said</that>
<template>
<think>
<learn>
<category>
<pattern><eval><input index="3"/></eval></pattern>
<template><eval><star/></eval></template>
</category>
</learn>
</think>
Okay, I will answer "<star/>" to "<input index="3"/>" next time
</template>
</category>
Sraix
<category>
<pattern>ask * about *</pattern>
<template><star/> says "<sraix default="Timeout or max anonymous API calls exceeded"><botname><star/></botname><star index="2"/></sraix>"</template>
</category>
<category>
<pattern>ask pandorabot * about *</pattern>
<template><star/> says "<sraix server="http://www.pandorabots.com" default="Timeout or max anonymous API calls exceeded"><botid><star/></botid><star index="2"/></sraix>"</template>
</category>
<category>
<pattern>ask pandorabot chomsky about *</pattern>
<template>He says "<sraix server="http://www.pandorabots.com" botid="b0dafd24ee35a477" default="Timeout or max anonymous API calls exceeded"><star/></sraix>"</template>
</category>
<category>
<pattern>wikidata *</pattern>
<template><sraix service="wikidata" default="Timeout or missing data"><star/></sraix>
</category>
<category>
<pattern>wikidata * hint *</pattern>
<template><sraix service="wikidata" default="Timeout or missing data"><hint><star index="2"/></hint><star/></sraix></template>
</category>
<category>
<pattern>wiktionary *</pattern>
<template><sraix service="wiktionary" default="Timeout or missing data"><star/></sraix></template>
</category>
Itse
<category>
<pattern>what is * + *</pattern>
<template><star index="1"/> + <star index="2"/> = <self>star + star</self></template>
</category>
Katso myös