[alicebot-general] Response order
Troy Vinson
troy.vinson at dal.tribalddb.com
Fri Feb 2 12:26:44 PST 2007
Thank you Dr. Wallace,
The pre-processor idea is one we have been throwing around, but
considering we are using PandoraBots (at the moment), I am a little
hesitant at putting a proxy in between mainly because it skews the
logging of inputs. Should not be a big problem, though.
BTW, the "$"s in the pattern were mainly for courtesy using our
real-life example.
Thanks for the help.
-----Original Message-----
From: alicebot-general-bounces at list.alicebot.org
[mailto:alicebot-general-bounces at list.alicebot.org] On Behalf Of Dr.
Rich Wallace
Sent: Friday, February 02, 2007 2:06 PM
To: Alicebot and AIML General Discussion
Subject: Re: [alicebot-general] Response order
Hi Troy, one simple solution would be to change the * A$$ pattern to _
A$$, because the _ has higher matching priority in AIML.
(we all know that you can't have $ in patterns, but the example is
good because it shows a case where one keyword has priority over
another).
But generally speaking, there is a kind of "keyword priority problem"
in AIML. The typical technique for detecting keywords in AIML is to
use 4 categories per keyword:
<pattern>_ KEY</pattern>
<template><srai>KEY</srai></template>
<pattern>_ KEY _</pattern>
<template><srai>KEY</srai></template>
<pattern>KEY _</pattern>
<template><srai>KEY</srai></template>
and finally
<pattern>KEY</pattern>
<template>The answer.</template>
The problem arises when you have two or more keys that have an
ordering, like your example of FRIEND and A$$. You want to say that
the keyword A$$ "comes first". But if a sentence contains both
keywords, AIML makes no assumptions over which will match first, if
the mathcing patterns either both contain a prefix _ or are both
atomic. (This statement should be a little more complicated, because
as your example shows you can create a priority problem even if you
are using a * prefix to detect keywords).
Perhaps it should.
In this example, the patterns _ FRIEND _ and _ A$$ create a priority
problem. Whichever one is picked as the first match, depends on the
hashing algorithm used in the root Nodemapper.
Some people have solved the keyword priority problem by applying a
pre-processor to the AIML input, which will look for any of the "bad
keywords" and, if found, replace the whole AIML input with a special
pattern like "BAD WORD".
Yours sincerely,
Dr. Rich Wallace
On 2/2/07, Troy Vinson <troy.vinson at dal.tribalddb.com> wrote:
> In need of an AIML suggestion concerning ordering of a match or
> pre-scanning a sentence. Given these two patterns:
>
> <category>
> <pattern>
> * FRIEND *
> </pattern>
> <template>
> <srai>
> FRIEND RESPONSE
> </srai>
> </template>
> </category>
>
> <category>
> <pattern>
> * A$$
> </pattern>
> <template>
> <srai>
> BADWORD RESPONSE
> </srai>
> </template>
> </category>
>
>
> And the input "my friend can kiss my a$$". The desire is to have the
> pattern match and send a response for BADWORD RESPONSE instead of
FRIEND
> RESPONSE.
>
> Any help would be greatly appreciated.
> _______________________________________________
> This is the alicebot-general mailing list
> Reply to alicebot-general at list.alicebot.org
> Unsubscribe and change preferences at
http://list.alicebot.org/mailman/listinfo/alicebot-general
> Learn netiquette at http://www.dtcc.edu/cs/rfc1855.html
> Learn to read at http://www.literacy.org/
>
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general at list.alicebot.org
Unsubscribe and change preferences at
http://list.alicebot.org/mailman/listinfo/alicebot-general
Learn netiquette at http://www.dtcc.edu/cs/rfc1855.html
Learn to read at http://www.literacy.org/
More information about the alicebot-general
mailing list