[alicebot-general] alicebot-general Digest, Vol 9, Issue 13
Gary Dubuque
gdubuque at scattercreek.com
Sat Aug 19 11:58:13 PDT 2006
Hello Mark,
Thanks for the ideas! Let's talk about this. ALICE can't win the Turing
test. Try "Dogs are mammals." Reply: "Do cats are mammals?" Now try "Some
dogs are mammals" and you get "Some may dogs are mammals, but not all." It
is easy to trip up the bot. A human notices when they contradict themself.
ALICE doesn't.
Some judges use this tactic: "If I have three apples and you take one, how
many do I have left?" ALICE will say "How much does it cost?" Another
judge in New York asked, "Which is closer, Queens or the queen?"
Hey that reminds me... Two blondes were looking at the night sky when one
asks, "Which is closer, Florida or the moon?" The other one says "Duh, I
can see the moon!"
ALICE replies "The obvious one."
The one that gets me is when ALICE responds to each sentence whether it
makes sense to or not. Much of conversation is a give and take exchange
where there may be an answer followed by a question as people get to know
each other. ALICE is designed to deal with one idea at a time. If it takes
a few sentences to describe something, ALICE doesn't know how to respond
properly. For example: "Ask more questions. Many answers from ALICE don't
provoke more user input. A question guarantees another sentence." gets the
response "They are not available right now, but I will ask them later. Which
ones? Go on."
So I've tried to connect OpenCyc to the system to verify the replies, but...
As Dr. Wallace puts it, what good does common sense do for the conversation?
And here is where the fun begins. When you speak, you have intentions in
what you say. Sometimes it may even be several intended actions. Sometimes
you inform. Sometimes you inquire. Sometimes you direct or command the
hearer to do something. Or you may ask what they meant because you didn't
understand what they were saying. You could even be challenging an earlier
opinion. With these intentions you are offering propositions and making
committments that share your beliefs and understandings of the world. The
art of conversation is to "ground" what you hear with what they say so there
is a common language of exchange. A dialog game uses rules to "play" the
intentions and get grounded. Within those games there would be points to
validate the common sense of utterances.
This all depends upon the bot having something to say. So the ideal place
to start is with the story (or background.) You can just try to cover all
possible inputs. In competition, dealing only with the inputs seems to win
more than having a "script" that the judge must stumble upon. Still, the
better bot should generate stuff without much prompting from a "Seeker".
And it would "know" what it already has conveyed as it progresses through
the story. We've had several discussions in this digest about how character
needs a story to be defined. I think this is more than just conversational
units or static templates or prototypes. The relationships between the
turns of the discourse builds the value of the experience.
One way to move the story is to leave a trail of predicates. There are
examples in the AAA set of how this technique has advantages. Even using
<that> and <topic> is a possible attempt to apply the state machine concept
of moving through a story line. I think the tool of contexts could be a
valuable contribution here.
When saving details of what the "Seeker" states, I come across another
difficulty. Suppose I have two cats. How do I save the names of my cats?
What if I have 3 or 4 cats? You see, AIML has only a fixed name for its
predicates (the <set>'s) so I can't just make more predicates when the bot
encounters another cat's name. Predicates also don't have multiple values
although I could fake it by listing my cat names separated by commas. Only
then how would I describe each cat to the bot where I could later "ground"
the latest new trick a specific cat might entertain? In the world of
language, primitive facts usually are <object> <predicate> <subject>. AIML
Predicates reduce the representation to <unique key> = <value>. So
eventually it gets difficult to save information about the user of a bot.
Then there is the problem of using that data.
The things you have described are areas I'm exploring. For the
interconnections I've used ConceptNet and to some extent WordNet. For
logical expressions I've used OpenCyc. I'm still working on generics (in a
fashion) to simulate imagination. The crux of the process is getting the
mechanics of the dialog in order. This is where I have my scripting and
expert shell tapped into AIML. While I've adjusted the interpreter to
better process the stilted "greeting" game, I've got more enhancements to
deal with merging sentences into a single dialog turn and generating the
stream of consciencious output that the user can participant in
manipulating. Other games, like the challenge game, are much more
complicated and dynamic.
The "It, this, that, her, him" can be cleaned up without any real changes to
the interpreters. This is an artifact of building the AIML set from inputs
instead of from the outputs first. The effort is to go back and put in all
the extra template processing to capture the pronouns and to use the proper
editing of gender changes. This is tedious. I envisioned that my editor
would be able to assist here by automating the process, but I haven't
settled on the best patterns for the task yet.
I haven't given up on AIML, but there are challenges to doing a real dialog
with something that has a mind.
I keep coming back to my editor AIMLpad and filling in the missing pieces.
It is really in need of a complete rewrite after learning about all these
features I need to include that I didn't realize when I started. The
multithreading of the Microsoft Robotic SDK seems an interesting direction
where I could split the interpreter's steps into activities that are loosely
coupled: input, split into sentences, for each [normalize, match, evaluate
template], save history (thats, inputs, etc.), output. That cycle needs
changes to do what you suggest.
Thanks for letting me contribute a little more,
Gary Dubuque, extending into intelligent story telling
More information about the alicebot-general
mailing list