external next up previous contents index
Next: A note on external Up: 6.3 Ken's Turing Robot Previous: Technical Issues

Conceptual Issues

 

Ken's Turing 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 ([Weizenbaum, 1966]) was one of the first well known AI programs written (around 1966). The author was Weizenbaum who is an outspoken critique of AI (see [Weizenbaum, 1976]). 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:

Here are 2 more general ressources on software agents. Check them out if you are interessted in that topic:

Finally, if you are interested in abstract Turing machines and if you have a Java capable browser, check out: this Turing Machine Applet or the The Alan Turing Home Page, where you can also find pointers to more Eliza like programs.

Guidelines for building with Ken's Turing Bot

Before building a bot, look at the child you created and examine its various data structures with the ``see'' commands indicated below and explained in section 6.3.1 on page gif. If you have a programmer bit, you can also list the kids of the turing bot (@kids) and check what others have done (don't move other people's bots to your place, just look at them!)

  1. Use rather pattern matching ( 'seepat botname') than word matching ('seewords botname') 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 (see the mvpat command in section 6.3.1 on page gif.
  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 ?"


next up previous contents index external
Next: A note on external Up: 6.3 Ken's Turing Robot Previous: Technical Issues

Daniel K. Schneider
Thu Apr 17 12:43:52 MET DST 1997