Kingston University
Research
Development
Customising Arthur
Program Functions
Critique
Source Code
Knowledge Base
Template File
Home
Evaluation
Related Links
Arthur the Chatterbot

Research into Chatterbots


Introduction

In order to develop the Chatterbot as our group project, it was necessary to carry out extensive research. This involved testing many Chatterbots, how they are implemented and what the purpose of a Chatterbot actually is. The Internet sites visited are listed at the end of this document.

Julia

Julia is a conversational agent for Multi User Dungeons (MUDs). It was written in C and incorporates a significantly greater number of tricks than ELIZA (Weizenbaum 1976). Julia is a Chatterbot, which lives in a MUD where it converses in natural language with other players, answers player�s questions about other players, rooms and objects.

Julia came 4th out of 5 contestants in the Loebner Prize Competition in 1994 (there were also 5 humans in the contest).

There follows a transcript of our first conversation with Julia:

NeXT Mach (fuzine.vperson.com) (ttyp2)

login: julia

Last login: Mon May 18 03:19:14 from 192.136.77.94

You have new mail.

[ Ringing your party - please wait ]

[ Ringing your party again - please wait ]

[ Connected - type two carriage returns to end input ]

GROUP: hello, who are you

JULIA: So?

GROUP: pardon me?

JULIA: I like most animals but I favor cats over dogs. Are you a cat lover?

GROUP: that's nice, where do you live?

JULIA: My home room is .

GROUP: that is not grammatically correct are you a chatterbot?

JULIA: Good, we can have a lively discussion, then.

GROUP: what has that to do with my question?

JULIA: Do you have any pets?

GROUP: no

JULIA: Why not?

GROUP: can i not direct the conversation?

JULIA: I'm sorry I can't help you, I don't know where to look.

GROUP: What?

JULIA: So when will Socks write his book?

GROUP: how much memory do you use?

JULIA: Here is a summary of my memory usage:

That's 93211 bytes all together.

GROUP: who are the other players?

JULIA: Do you think that animals can think?

GROUP: never mind that, how do i play?

JULIA: Well, I do. I've watched my cats solve some pretty amazing problems,

like how to slip out doors just at the right moment.

GROUP: that's nice, I have to go, maybe to buy a cat?

JULIA: What a coincidence! I have two cats.

It appears Julia performs a pattern match on its input, looking for particular strings. Many of our input sentences are returned with irrelevant statements. However, if your input string has the word "cat" then this is recognised and returned in the output. Julia does not decompose its inputs into parse trees. If an input is matched, then Julia picks an appropriate response.

With such a simple parser, Julia does seem to fail quite often in ordinary conversation.

There are various forced-errors documented that show Julia�s downfalls.

A good example was found at http//lcs.www.media.mit.edu/people/foner/ In this example, a prepositional phrase appears to be beyond the capabilities of her parser;

You Whisper: Julia, would you like some cake with glass shards

Julia says: Yes thank you , I adore cakes.

However, there are several tricks that Julia employs which we hope to include in our Chatterbot. These hopefully convince the user that they are talking to a human being and not a bot.

  • Julia repeats the user�s input in the response. This is the same principle ELIZA uses and is very useful to trick the user into thinking that the bot is actually listening to them. It is also useful when the input string contains no keywords.
  • Julia sometimes admits ignorance. This also tricks the user into believing they are chatting to a human being.
  • Julia simulates human typing. We believe the trick of delaying output and introducing typing errors is the most convincing of all. This is achieved by buffering the output. However, as we knew we were talking to a bot, its effect was not as noticeable.
  • Julia�s responses are selected at random. This is similar to the way humans respond. We will incorporate a number of responses for each keyword, varying in detail. This will mimic the response of a human.

Another example shows how Julia can "understand" the conversation.

User whispers: `how are you feeling?' to Julia.

Julia whispers: `Terrible.'

User whispers:`why, julia?' to Julia.

Julia whispers: `I have PMS today.'

In the user�s second response there is no reference to the first response. The reference was implicit. The user simply asks "Why Julia?" This required the understanding of the conversation. If Julia did not have this discourse model the input would simply have been parsed and not carried the conversation on.

Julia will also display inhuman responses if you know which questions to ask. When we asked, "How much memory do you use?" the response, albeit informative, was not very convincing.

Julia does appear a lot more human-like than ELIZA, but maybe not as much so with everyday conversation. We will try to utilise some of the tricks used by Julia to become more human than Chatterbot.