[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