Some explanations for the chatter bot

If you want your own: For information about the technology used, see:

Eliza Bots

This Chatter Bot belongs more or less to the Eliza family. It tries to match a pattern in your input and produces an anwser from a list of available answer patterns for this input pattern. If there is none it will try to launch the conversation with a few random sentences or it also might look at you and your inventory and say something about you for the same purpose.

ELIZA was one of the first well known AI programs written (around 1966). The author was Weizenbaum who is an outspoken critique of AI. We do not wish to enter Philosophy of AI questions here but just point out that Eliza Bots do not keep track of the conversation which is one required mechanism for a working conversion. Anyhow, to learn more about Eliza Bots you can consult AI programming textbooks and/or play around with some widely available Eliza programs.

Pointers to Bots and Agents

Here are pointers to programs you can try:

Many AI programmer's do build conversation robots. You can even find some programs in MUDs (either connected from the outside or internal). Check out the following resources/pages:

Chatbots.org is a repository of chatbots (virtual assistants, chat bot, conversational agents, virtual agents) in the World). It also includes a large bibliography.

Guidelines for building with Ken's MOO Turing Bot

WARNING: Examples in here have NOT been tested with JavaScript, because this page is a quick copy/paste from our Moo Manual.)

  1. Use rather pattern matching than word matching because patterns are both more flexible in matching and more interesting for replies because you can return variable answers.
  2. Put the most specific patterns at the beginning. They will have priority. Example:
      your (.*) problem
        - is more specific than -
      your (.*)
    So patterns like (.*) is (.*) should be put at the end of the list.
  3. For frequently matched patterns include a longer list of possible answers, else the bot will appear boring (and artificial)
       hi
               Hi, how are you?
               Hello, how's it going?
               Hi, what's up ?
  4. The same is true of course for random responses ('seerandoms <bot>') and random answers to questions ('seequestionresponses <bot>')

Of course you need to test your bot with various people before putting it in operation.

Example patterns for Ken's Bot

Here we show a few input/ouput patterns together with transcripts from the interaction.

A few example that you will find in each child of Ken's Bot:

This example matches everything between ``I'' and ``you'' as you can see in the interaction traces:

6   I (.*) you
           You $1 me? Why?
           Why do you say you $1 me?
           I really $1 you too.. <grin>

>"I love you
You say, "I love you"
turing bot says, "Why do you say you love me?"

>"I very much love you
You say, "I very much love you"
turing bot [to MooBoy]: I really very much love you too.. <grin>

This example matches any word before ``is'' and everything after it. ``w*'' matches any chain of of word-constituent characters, i.e. words composed of letters or digits. Note that the ``(\\w*)'' construct remembers the last ``word'' matched.

7   (\\w*) is (.*)
           Suppose $1 were not $2? What then?
           What is so $2 about $1?
           $1? how so?

>"Colin is a MOO Master
You say, "Colin is a MOO Master"
turing bot says, "Colin? how so?"

>"Fat Colin is a MOO Master
You say, "Fat Colin is a MOO Master"
turing bot says, "Suppose Colin were not a MOO Master? What then?"

A few examples in french: The first example matches everything before and after ``tu es''. Note that the first match ``.*'' is not rembered.

3   .* tu es (.*)
           Keski te fais dire que je suis $1?
           Peut etre que c'est toi qui es $1!

>"Moi je je pense que tu es un peu limite
You say, "Moi je je pense que tu es un peu limite"
bobo says, "Keski te fais dire que je suis un peu limite?"

This slightly more complex construct matches any string before ``son'' or ``sa'' appears and the first word that follows. Note that this example could be both simplified and improved.

11  (.*) (son|sa) (\\w*)
           Qu'est-ce que tu sous-entends par  $2 $3 ?
           Est-tu es sur que c'est $2 $3 ?

>"J'ai sa soeur
You say, "J'ai sa soeur"
bobo says, "Est-tu es sur que c'est sa soeur ?"

>"ou est sa gentille mere
You say, "ou est sa gentille mere"
bobo says, "Est-tu sur que c'est sa gentille ?"

Here we have similar construction. We hunt any kind of sentences that start with ``mon .....'' and ``ma ....'' and we remember just the first two words.

4   m(on|a) (\\w*)
           Qu'en est-il de t$1 $2...
           t$1 $2 compte beaucoup pour toi ?
           t$1 $2 est surement a prendre au serieux 

>"mon velo est naze
You say, "mon velo est naze"
bobo says, "ton velo compte beaucoup pour toi ?"


Back to the Chatter Bot.
D.K.S.