[alicebot-archcomm] Conditional wildcards

Gary Dubuque alicebot-archcomm@list.alicebot.org
Sun, 2 Mar 2003 20:03:51 -0800


My humble apologies.  It isn't very clear from the definition of the order
what happens at the end of the pattern.  It is well stated that _ matches
first, then the word, and finally *.  But it is expressed in pseudo-code
that a longer pattern defines more precisely the exact match and should take
precedence.  Perhaps I need to learn how to read.

Here's how the standard goes in section 8.4.1...

"4. Does the Nodemapper contain the key *? If so, search the subgraph rooted
at the child node linked by *. Try all remaining suffixes of the input
following X to see if one matches. If no match was found, go back up the
graph to the parent of this node, and put X back on the head of the input."

(Actually, if * is the last to be processed, why put X back and go up to the
parent?  There should be no more matching left.  Is it because of the way
the AIML standard chose to describe when matches fail?   Why not just say,
if no match was found, the match fails?  Oh, wait a minute, what happens
when we have no suffixes?  I am easily to assume X stands for all the words
consumed when remaining suffixes are created, right?  Again, I am naively
wishing for a clearer explanation for something I should already know.)

That says without question that if more words exist after the wildcard has
matched one, they are processed against any remaining patterns before the
current pattern's wildcard can consume them.  Or, in other words, the order
of patterns being processed is not the issue.  It is the design of the
pattern that determines the correct match.

It is this design I am tampering with.

I am so, so very wrong in being confused that the shorter pattern having
made its match does not supercede the longer pattern that is more exact.
You are absolutely right!  I am sorry.

To be sure, this is understood by me and is proven by the correct processing
in Program N once the AIML pattern database has been sorted to standard
processing.  I supposed if I had used the binary tree algorithm that is the
heart of AIML philosophy, I'd not had this point forced upon the haphazard
approach I took to implement.

Again my apologies for falling back into my barbaric and primitive attempt
at expressing concerns about AIML.  I surely haven't earned the experience
yet to claim to be an expert.

It is mathematically true that one and only one pattern can match a given
input under the current system so things like ordering the categories only
provide optimization in calculation time.  It has no effect on which
patterns may or may not match.  That is until wildcards can be defined in
different ways to match the same inputs.  Such wildcards defy the
consistency AIML already enjoys.

The problem still remains as to recognizing numbers and other formatted
inputs without artificially introducing surrounding context by identifying
key phrases embedding those elements.  Perhaps this is not the place nor
time to tackle this common feature of natural language.

Sincerely,
  Gary Dubuque
  A fool and his misunderstood AIML

-----Original Message-----
From: alicebot-archcomm-admin@list.alicebot.org
[mailto:alicebot-archcomm-admin@list.alicebot.org]On Behalf Of Jonathan
Roewen
Sent: Sunday, March 02, 2003 5:41 PM
To: alicebot-archcomm@list.alicebot.org
Subject: RE: [alicebot-archcomm] Conditional wildcards


 --- Gary Dubuque <gdubuque@attbi.com> wrote:
> Whoops, that last reply got on the wrong thread.

It was also completely bogus - saying * * is ambiguous
is completely false.

> What is the difference between "hello *" and "hello
> * dude"?  This is
> multiple patterns matching ambiguously to the same
> input of "hello surfer
> dude".

No. HELLO * cannot match "Hello surfer dude" if and
only if HELLO * DUDE, or a more exact match exists.

You are confusing ambiguity with exactness.

> Is there a standard that says one or the other has
> precendence?

Yes. It is called the AIML Spec. The only thing I
think it fails to state explicitly is the fact that a
wildcard only consumes as much as is necessary to form
a match. This is implied by the design of the
graphmaster.
>
> But the point here is that the discussion of
> conditional wildcards is not a
> discussion of ambiguity.

Not true.

> It is a finer, more
> precise specification for an
> already ambiguous feature.  It is for a specific
> purpose of extract
> meaningful units that don't fit the in the same
> packaging as words.  Yet
> there are qualities of these units that can be
> identified enough to process
> them as logical entities.  It is clear that a date
> is a date even though it
> is expressed in a varying format.  To extrapolate
> the requirement to some
> generalized "sets" of patterns may be premature.
> The focus is on known
> qualtities.  I don't want to dive into the deep
> waters of semantic meanings
> yet.  I want to stay at the level of word
> recognition when I propose this
> enhancement.

You can't stay at this level if you want to propose
this idea! You can't have it both ways.

And conditional wildcards does produce ambiguity where
there previously was none before.

The only part that is ambiguous is the AIML writer's
understanding.

Jon =)



http://mobile.yahoo.com.au - Yahoo! Mobile
- Exchange IMs with Messenger friends on your Telstra or Vodafone mobile
phone.
_______________________________________________
alicebot-archcomm mailing list
alicebot-archcomm@list.alicebot.org
http://list.alicebot.org/mailman/listinfo/alicebot-archcomm