Professional Documents
Culture Documents
Chat Bots
Chat Bots
Ruta Mehta
Mugdha Jain
Welcome to the Jeetendra Mirchandani
world of living
people and artificial
intelligence entities
called bots!
Questions Well Answer
A Chat Bot
What is it? Who wants it? Why?
Since when is it around?
How does it work?
How do you test it?
Can it answer all my questions?
Can I make one of my own?
Where can I put it to work?
Introduction
Responder
AIML Interpreter
AIML Objects
A Chat Bot
Knowledge Representation
Types of AIML objects
Topics
Categories
E.g. :
<aiml>
<topic name=the topic >
<category>
<pattern>PATTERN</pattern>
<that>THAT</that>
<template>TEMPLATE</template>
</category>
</topic>
</aiml>
Example AIML Object
<category>
AIML Object
<category> <pattern>YES</pattern>
<pattern>HELLO</pattern> <that>DO YOU LIKE MOVIES</that>
<template>Hi <template>What is your favorite
there!</template> movie?</template>
</category> </category>
Conversation:
User: This watch is for 10 dollars
Chat Bot: Wow, what a cheap watch!
Default Category
Conversation:
User: 10 dollars.
Chat Bot: It is ten.
Recursive category
Template calls the pattern matcher recursively
Uses <srai> tag, that stands for symbolic recursion artificial
intelligence
For example,
In English there are different ways to ask about X:
Describe x?
Tell me about X?
Do you know what X is?
The knowledge is stored in the simplest way.
Whatever the question is, it will be reduced to category like <What is>.
Input normalization
Substitution normalizations
Abbreviations such as "Mr." may be spelled out as "Mister" to avoid
sentence-splitting at the period in the abbreviated form.
Sentence-splitting normalizations
Rule: break sentences at periods. It relies upon substitutions performed
in the substitution phase.
Pattern-fitting normalizations
Remove all characters that are not normal characters; like converting
lowercase letters to uppercase .
Example
<category> <category>
<pattern>HELLO</pattern> <pattern>WHAT IS 2 *</pattern>
<template> <random> <template><random>
<li>Well hello there!</li> <li>Two.</li>
<li>Hi there!</li> <li>Four.</li>
<li>Hi there. I was just wanting <li>Six.</li>
to talk</li>
<li>12.</li>
<li>Hello there !</li>
</random></template></category
</random></template></category> >
<category> <category>
<pattern>_ WHAT IS 2 AND <pattern>HALO</pattern>
2</pattern>
<template>
<template>
<srai>HELLO</srai>
<sr/><srai>WHAT IS 2 AND
2</srai> </template>
</template> </category>
</category>
Question : Halo, What is 2 and 2
_ What is 2 and 2
</sr>
<srai> WHAT IS 2 AND 2 </srai>
HALO
WHAT IS 2 AND *
HELLO
WHAT IS 2 *
Well hello there!
Hi there! Two
Hi there. I was just Four
wanting to talk. Six
Hello there ! 12
yes
Search sub-graph Try all remaining
Node-mapper yes
rooted at child suffixes of input Match?
Contains _?
node linked by _ following X
no
no
Search sub-graph
Node-mapper yes rooted at child yes
Match?
Contains X? node linked by X
using input tail
no no