A R C H I

Agent for Reasoning and Conversation about Hardware Items

Paul Tepper
Jesse Fischer
13 December 2000

Overview

People generally know what they're talking about, but often it's hard to find words to describe their thoughts. Our agent's task is to translate the internal symbols in its thoughts to external symbols suitable for communication (i.e. words); to translate other agents' words back into thoughts attributed to them; and to find a new thought as a appropriate response.

Sometimes you can find words to describe a concept that are unambiguous to you but ambigious to the person you're talking to: for instance, because the other person has more complete knowledge of the world. In this case, the other person must request clarification from you.

Domain

Our project domain is the hardware store. We model conversation between two agents: a customer and a clerk. Both agents use the same software for generating and interpreting sentences -- the only difference is in their vocabulary and knowledge of the world.

Examples

There are two types of conversation our agents can generate: a simple question-answer dialogue, and a question-answer dialogue with clarification. Here are some examples of each type.


| ?- conversation_starter( a, b, thought( question, a_screws, pred( is_located_at, where ) ) ).

Customer: meaning(question,[screws],pred(is_located_at,[where]))
Clerk: meaning(answer,[screws],pred(is_located_at,[aisle_4]))
Customer: done


yes
| ?- conversation_starter( a, b, thought( question, a_bigtacks, pred( is_located_at, where ) ) ).

Customer: meaning(question,[tacks],pred(is_located_at,[where]))
Clerk: clarification_question([meaning(question,[tacks,small],pred(is_located_at,[where]))])
Customer: meaning(question,[tacks,big],pred(is_located_at,[where]))
Clerk: meaning(answer,[tacks,big],pred(is_located_at,[aisle_7]))
Customer: done


yes
| ?- conversation_starter( a, b, thought( question, what, pred( is_located_at, a_aisle_7 ) ) ).

Customer: meaning(question,[what],pred(is_located_at,[aisle_7]))
Clerk: meaning(answer,[tacks,big],pred(is_located_at,[aisle_7]))
Customer: done


yes

Technical Details

We made use of three data structures: thought, meaning, and clarification_question. A thought term represents an agent's thought: either a question or an answer. A meaning term represents the sentence corresponding to a thought. A clarification_question term is a super-term consisting in a list of possible meaning terms. All communication between agents takes place in meaning or clarification_question terms -- thought terms are strictly internal to the agents.

The heart of our program is a looping predicate which propels the conversation. One argument to the predicate is meaning term representing the sentence for the agent to respond to. Three modules process the meaning term in turn. interpret maps the meaning term onto a list of possible thought terms. respond finds a suitable thought term in response. generate maps that thought term onto a meaning term, and the process begins again.