AIML stands for Artificial Intelligence Modelling Language. AIML is an XML based markup language meant to create artificial intelligence applications. Here’s the list of AIML tags:
To start with the aiml, first of all, declare the starting tag i.e:
<?xml version=”1.0" encoding=”ISO-8859–1"?>
<aiml>
<aiml> tag is the parent tag, we need to close the aiml tag </aiml> as well at the end of the file.
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
.......
</aiml>
<category>
Within the category tag, there should be two sets of tags, the “matching” part of the expression and the “returning” part of the expression. Generally, these are represented by the <pattern> and <template> tags respectively.
<category>
<pattern> HELLO</pattern> "Matching part"
<template> "Returning part"
Hello
</template>
</category>
<pattern>
The pattern is matched within the <pattern> tags and the response that is given back is in the <template> tag.
The * represents a “wildcard match” that matches one or more words in the <pattern> tag. And _ (underscore) represents wildcard matching, but with more precedence than other matches.
Like the *, the _ also represents wildcard matching, but with more precedence than other matches.
<category>
<pattern> HELLO *</pattern> "Matching part"
<template> "Returning part"
Hello
</template>
</category>
<template>
When the <pattern> tag within the <category> is matched, template helps to get the response.
<category>
<pattern> HELLO </pattern> "Matching part"
<template> "Returning part"
Hello
</template>
</category>
<star/>
Used when embedded in a <srai> tag, this matches whatever information was generalized with the * (or the underscore)in the pattern tag.
<category>
<pattern>DO YOU KNOW WHO * IS?</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
<srai>
This tag allows for the same question to be “passed around” to different parts of the program. Using srai, we can return a simple response when the user types a specific keyword, say, School, no matter where “school” is present in the sentence.
"CREATE A CATEGORY"
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>"CREATE GENERIC CATEGORIES"
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<random>
This tag selects a random element from the list of <li>s that appear within it.
<category>
<pattern>HI</pattern>
<template>
<random>
<li> Hello! </li>
<li> Hi! Nice to meet you! </li>
</random>
</template>
<category>OUTPUT:
Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!
<li>
Specifies a list item. Used within the <random> tag for random responses from the given list.
<category>
<pattern>ONCE I *</pattern>
<template>
<random>
<li>Go on.</li>
<li>Can you be more specific?</li>
<li>I did not know that.</li>
<li>Are you telling the truth?</li>
<li>I don't know what that means.</li>
<li>Try to tell me that another way.</li>
<li>What is it?</li>
</random>
</template>
</category>
<set>
Sets whatever is within the tags to the variable VALUE. Can be retrieved through the use of <get> tag
<category>
<pattern>MY NAME IS *</pattern>
<template>
<set name="name"><star/></set> is a nice name.
</template>
</category>
<get>
Outputs whatever is in the variable VALUE. If VALUE has not been <set>, defaults to “”.
<category>
<pattern>WHAT IS MY NAME</pattern>
<template>
Your name is <get name="name"/>.
</template>
</category>
<that>
<that> Tag is used in AIML to respond based on the context.
<category>
<pattern>WHAT ABOUT MOVIES</pattern>
<template>Do you like comedy movies</template>
</category>
<category>
<pattern>YES</pattern>
<that>Do you like comedy movies</that>
<template>Nice, I like comedy movies too.</template>
</category>
<category>
<pattern>NO</pattern>
<that>Do you like comedy movies</that>
<template>Ok! But I like comedy movies.</template>
</category>Output:Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
<topic>
The tag is used in AIML to store a context so that later conversation can be done based on that context. It helps AIML to search categories written within the context of the topic.
<category>
<pattern>LET DISCUSS MOVIES</pattern>
<template>Yes <set name = "topic">movies</set></template>
</category>
<topic name = "movies">
<category>
<pattern> * </pattern>
<template>Watching good movie refreshes our minds.</template>
</category>
<category>
<pattern> I LIKE WATCHING COMEDY! </pattern>
<template>I like comedy movies too.</template>
</category>
</topic>OUTPUT:
Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.
<think>
This tag essentially makes bot perform whatever is between the tags but not output anything to the user. Most useful when combined with <set> or <get>.
<category>
<pattern>My name is *</pattern>
<template>
Hello!<think><set name = "username"> <star/></set></think>
</template>
</category>
<category>
<pattern>Byeee</pattern>
<template>
Hi <get name = "username"/> Thanks for the conversation!
</template>
</category>OUTPUT:
Human: My name is Pema
Robot: Hello!
Human: Byeee
Robot: Hi Pema Thanks for the conversation!
<! — …… ->
The comment tag, often used for commenting any set of text.
Ref:
Note: To make a chat using python, refer to the tutorial: “The easiest way to create a Chatbot using AIML”