Fwd: AIML conflict solving

View: New views
8 Messages — Rating Filter:   Alert me  

Parent Message unknown Fwd: AIML conflict solving

by drwallace :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

---------- Forwarded message ----------
From: Houssem BDIOUI <houssem.bdioui@...>
Date: Sep 21, 2006 11:34 PM
Subject: Fwd: AIML conflict solving
To: "Dr. Rich Wallace" <drwallace@...>


Hi Dr Rich,

I already sent this mail to the mailing list but as usual I received the
'Message has a suspicious header' message!
Can you please post-it for me?
Thanks

---------- Forwarded message ----------
From: Houssem BDIOUI <houssem.bdioui@...>
Date: Sep 22, 2006 8:27 AM
Subject: AIML conflict solving
To: Alicebot and AIML General Discussion <alicebot-general@...>


Hi all,

Being the developer/maintainer of ProgramQ (a new release is planned very soon)
I'm interacting a lot with Charles Chevalier (charlix inventor:),
and this was our last discussion:

For the following test case, when entering "programq is cool but not
yet perfect" in ProgramQ

> <?xml version="1.0" encoding="ISO-8859-1"?>
> <aiml version=" 1.0.1 " xmlns="http://alicebot.org/2001/AIML-1.0.1"
>       xmlns:html=" http://www.w3.org/1999/xhtml"
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
>       xsi:schemaLocation="http://alicebot.org/2001/AIML-1.0.1 http://aitools.org/aiml/schema/AIML.xsd">
> <!-- Free software (c) 2006 Charlix.   -->
> <!-- This program is open source code released under -->
> <!-- the terms of the GNU General Public License     -->
> <!-- as published by the Free Software Foundation.   -->
> <!-- Complies with AIML 1.01 Tag Set Specification -->
> <!-- as adopted by the ALICE A.I. Foundation.  -->
>
>
> <category><pattern>* IS *</pattern><template>GOOD</template></category>
> <category><pattern>* BUT *</pattern><template>WRONG</template></category>
> <category><pattern>*</pattern><template>No answer</template></category>
>
> </aiml>

The result was WRONG.

This is a second example. Trying "I went to Paris" with the following aiml file:

> <?xml version="1.0" encoding="ISO-8859-1"?>
> <aiml>
>
> <category><pattern>* WENT TO *</pattern><template>first </template></category>
> <category><pattern>* TO *</pattern><template>second</template></category>
> <category><pattern>*</pattern><template>none </template></category>
> </aiml>

gives 'second'.

My first impression is that ProgramQ is behaving correctly since
there's nothing in the spec
that permits to resolve such a conflict (by forbidding
"greedy-matching" for instance).

What do you think guys?

Regards,
Houssem

--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:   houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------

--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:  houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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/

Parent Message unknown Re: Fwd: AIML conflict solving

by mehri :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

When looking at the spec you see this algorithm which describes the matching behvaior:


                                        Given:
                                       
                                                        an input starting with word X, and
                                               
                                                        a Nodemapper of the graph:
                                               
                               
                                        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, try:
                               
                                        Does the Nodemapper contain the key X? If so, search the subgraph rooted at the child node linked by X, using the tail of the input (the suffix of the input with X removed). If no match was found, try:
                               
                                        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.
                               
                                        If the input is null (no more words) and the Nodemapper contains the <template> key, then a match was found. Halt the search and return the matching node.
                               
In your example below, this is the one that is suppose to be matched.  It is not suppose to be a greedy matcher:

> <category><pattern>* IS *</pattern><template>GOOD</template></category>

The key is in line #4

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.

Here's the key part of that line which makes it *not greedy*, "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"

Both RebeccaAIML and programD follow the least greedy approach as outlined above.  

A good approach when in doubt of the spec is to check out programD's behavior since Noel co-authored the specification and wrote that interpreter.


---------- Forwarded message ----------
From: Houssem BDIOUI <houssem.bdioui@...>
Date: Sep 22, 2006 8:27 AM
Subject: AIML conflict solving
To: Alicebot and AIML General Discussion <alicebot-general@...>


Hi all,

Being the developer/maintainer of ProgramQ (a new release is planned very soon)
I'm interacting a lot with Charles Chevalier (charlix inventor:),
and this was our last discussion:

For the following test case, when entering "programq is cool but not
yet perfect" in ProgramQ

> <?xml version="1.0" encoding="ISO-8859-1"?>
> <aiml version=" 1.0.1 " xmlns="http://alicebot.org/2001/AIML-1.0.1";
>       xmlns:html=" http://www.w3.org/1999/xhtml";
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
>       xsi:schemaLocation="http://alicebot.org/2001/AIML-1.0.1 http://aitools.org/aiml/schema/AIML.xsd";>
> <!-- Free software (c) 2006 Charlix.   -->
> <!-- This program is open source code released under -->
> <!-- the terms of the GNU General Public License     -->
> <!-- as published by the Free Software Foundation.   -->
> <!-- Complies with AIML 1.01 Tag Set Specification -->
> <!-- as adopted by the ALICE A.I. Foundation.  -->
>
>
> <category><pattern>* IS *</pattern><template>GOOD</template></category>
> <category><pattern>* BUT *</pattern><template>WRONG</template></category>
> <category><pattern>*</pattern><template>No answer</template></category>
>
> </aiml>

The result was WRONG.

This is a second example. Trying "I went to Paris" with the following aiml file:

> <?xml version="1.0" encoding="ISO-8859-1"?>
> <aiml>
>
> <category><pattern>* WENT TO *</pattern><template>first </template></category>
> <category><pattern>* TO *</pattern><template>second</template></category>
> <category><pattern>*</pattern><template>none </template></category>
> </aiml>

gives 'second'.

My first impression is that ProgramQ is behaving correctly since
there's nothing in the spec
that permits to resolve such a conflict (by forbidding
"greedy-matching" for instance).

What do you think guys?

Regards,
Houssem

--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:   houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------

--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:  houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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@...
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/

Re: AIML conflict solving

by Helio Perroni Filho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

--- "Dr. Rich Wallace" <drwallace@...> escreveu:

> <category>
>   <pattern>* WENT TO *</pattern>
>   <template>first </template>
> </category>
> <category>
>   <pattern>* TO *</pattern>
>   <template>second</template>
> </category>
> <category>
>   <pattern>*</pattern>
>   <template>none</template>
> </category>
>
> gives 'second'.
>
> My first impression is that ProgramQ is behaving
> correctly since there's nothing in the spec
> that permits to resolve such a conflict (by
> forbidding "greedy-matching" for instance).
>
> What do you think guys?

This behaviour might not be "wrong" (that is, in
violation of the spec), but it's not very convenient
either. It's a basic assumption that, when several
rules apply to a given input, the "more specific" one
will be favoured. This is not only more intutive but
also more useful, as it allows botmasters to create
category hierarchies where progressively more generic
patterns return progressivaley more general responses.

Also, remember that the description of the "*"
wildcard says that it only matches an input element
when there would be no way to match it with a (1) "_"
wildcard or (2) non-wildcard element. This may leave
the first example open to discussion, but in the
second case it seems clear to me that the category
that leaves less elements to the wildcard (that is,
the more specific one) should be favoured.

--
Ja mata ne.
Helio



       



       
               
_______________________________________________________
VocĂȘ quer respostas para suas perguntas? Ou vocĂȘ sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
http://br.answers.yahoo.com/
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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/

Re: Fwd: AIML conflict solving

by drwallace :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> A good approach when in doubt of the spec is to check out programD's behavior since Noel co-authored the specification and wrote that interpreter.

Actually I wrote the first Java interpreters (program B and D),
including the Graphmaster matching algorithm.  Noel took over program
D and made a lot of changes, but I don't think he changed the matching
methods.

Rich
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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/

Parent Message unknown Fwd: Fwd: AIML conflict solving

by drwallace :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

---------- Forwarded message ----------
From: Houssem BDIOUI <houssem.bdioui@...>
Date: Sep 22, 2006 7:53 AM
Subject: Fwd: [alicebot-general] Fwd: AIML conflict solving
To: "Dr. Rich Wallace" <drwallace@...>


Same thing Dr Rich !
Can you please try to solve this mailing issue?
Thanks

---------- Forwarded message ----------
From: Houssem BDIOUI <houssem.bdioui@...>
Date: Sep 22, 2006 4:36 PM
Subject: Re: [alicebot-general] Fwd: AIML conflict solving
To: Alicebot and AIML General Discussion <alicebot-general@... >


Mehri,

Thanks for your quick answer. The point is that when running the above algorithm
ProgramQ matches the "* But *" pattern just because 'But' word comes
first in the nodemapper list
(before 'IS'), probably because of alphabetic sorting. And probably
that's the error: I should not do
an alphabetic sort of the words. isn't it?

Regards



On 9/22/06, mehri <foreverlinux@... > wrote:

> When looking at the spec you see this algorithm which describes the matching behvaior:
>
>
>                                        Given:
>
>                                                        an input starting with word X, and
>
>                                                        a Nodemapper of the graph:
>
>
>                                        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, try:
>
>                                        Does the Nodemapper contain the key X? If so, search the subgraph rooted at the child node linked by X, using the tail of the input (the suffix of the input with X removed). If no match was found, try:
>
>                                        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.
>
>                                        If the input is null (no more words) and the Nodemapper contains the <template> key, then a match was found. Halt the search and return the matching node.
>
> In your example below, this is the one that is suppose to be matched.  It is not suppose to be a greedy matcher:
>
> > <category><pattern>* IS *</pattern><template>GOOD</template></category>
>
> The key is in line #4
>
> 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.
>
> Here's the key part of that line which makes it *not greedy*, "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"
>
> Both RebeccaAIML and programD follow the least greedy approach as outlined above.
>
> A good approach when in doubt of the spec is to check out programD's behavior since Noel co-authored the specification and wrote that interpreter.
>
>
> ---------- Forwarded message ----------
> From: Houssem BDIOUI <houssem.bdioui@... >
> Date: Sep 22, 2006 8:27 AM
> Subject: AIML conflict solving
> To: Alicebot and AIML General Discussion < alicebot-general@...>
>
>
> Hi all,
>
> Being the developer/maintainer of ProgramQ (a new release is planned very soon)
> I'm interacting a lot with Charles Chevalier (charlix inventor:),
> and this was our last discussion:
>
> For the following test case, when entering "programq is cool but not
> yet perfect" in ProgramQ
>
> > <?xml version="1.0" encoding="ISO-8859-1"?>
> > <aiml version=" 1.0.1 " xmlns="http://alicebot.org/2001/AIML-1.0.1 ";
> >       xmlns:html=" http://www.w3.org/1999/xhtml";
> >       xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
> >       xsi:schemaLocation="http://alicebot.org/2001/AIML-1.0.1 http://aitools.org/aiml/schema/AIML.xsd ";>
> > <!-- Free software (c) 2006 Charlix.   -->
> > <!-- This program is open source code released under -->
> > <!-- the terms of the GNU General Public License     -->
> > <!-- as published by the Free Software Foundation.   -->
> > <!-- Complies with AIML 1.01 Tag Set Specification -->
> > <!-- as adopted by the ALICE A.I. Foundation.  -->
> >
> >
> > <category><pattern>* IS *</pattern><template>GOOD</template></category>
> > <category><pattern>* BUT *</pattern><template>WRONG</template></category>
> > <category><pattern>*</pattern><template>No answer</template></category>
> >
> > </aiml>
>
> The result was WRONG.
>
> This is a second example. Trying "I went to Paris" with the following aiml file:
>
> > <?xml version="1.0" encoding="ISO-8859-1"?>
> > <aiml>
> >
> > <category><pattern>* WENT TO *</pattern><template>first </template></category>
> > <category><pattern>* TO *</pattern><template>second</template></category>
> > <category><pattern>*</pattern><template>none </template></category>
> > </aiml>
>
> gives 'second'.
>
> My first impression is that ProgramQ is behaving correctly since
> there's nothing in the spec
> that permits to resolve such a conflict (by forbidding
> "greedy-matching" for instance).
>
> What do you think guys?
>
> Regards,
> Houssem
>
> --
> -----------------------------------------------------------
>                   Houssem BDIOUI
>             EDA Development Engineer
> Tools Team Leader - OCCS - IP & Design - HPC
>               STMicroelectronics Tunis
>
> TINA:    157 5107
> Public:  +216 70 10 51 07
> mobile: +216 97 42 24 87
> e-mail:   houssem.bdioui@...
>              houssem.bdioui@...
> -----------------------------------------------------------
>
> --
> -----------------------------------------------------------
>                   Houssem BDIOUI
>             EDA Development Engineer
> Tools Team Leader - OCCS - IP & Design - HPC
>               STMicroelectronics Tunis
>
> TINA:    157 5107
> Public:  +216 70 10 51 07
> mobile: +216 97 42 24 87
> e-mail:   houssem.bdioui@...
>             houssem.bdioui@...
> -----------------------------------------------------------
> _______________________________________________
> This is the alicebot-general mailing list
> Reply to alicebot-general@...
> 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@...
> 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/
>



--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:   houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------

--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:  houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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/

Parent Message unknown Re: Fwd: Fwd: AIML conflict solving

by mehri :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Correct, the matching should be case insensitive.

Strict compliance with the spec says that all AIML files should have their text be upper case but most people relax this constraint in their interpreters.  However, having AIML files all in one case is a big performance boost since you don't have to change them at run time or load time.

---------- Forwarded message ----------
From: Houssem BDIOUI <houssem.bdioui@...>
Date: Sep 22, 2006 4:36 PM
Subject: Re: [alicebot-general] Fwd: AIML conflict solving
To: Alicebot and AIML General Discussion <alicebot-general@... >


Mehri,

Thanks for your quick answer. The point is that when running the above algorithm
ProgramQ matches the "* But *" pattern just because 'But' word comes
first in the nodemapper list
(before 'IS'), probably because of alphabetic sorting. And probably
that's the error: I should not do
an alphabetic sort of the words. isn't it?

Regards



On 9/22/06, mehri <foreverlinux@... > wrote:

> When looking at the spec you see this algorithm which describes the matching behvaior:
>
>
>                                        Given:
>
>                                                        an input starting with word X, and
>
>                                                        a Nodemapper of the graph:
>
>
>                                        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, try:
>
>                                        Does the Nodemapper contain the key X? If so, search the subgraph rooted at the child node linked by X, using the tail of the input (the suffix of the input with X removed). If no match was found, try:
>
>                                        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.
>
>                                        If the input is null (no more words) and the Nodemapper contains the <template> key, then a match was found. Halt the search and return the matching node.
>
> In your example below, this is the one that is suppose to be matched.  It is not suppose to be a greedy matcher:
>
> > <category><pattern>* IS *</pattern><template>GOOD</template></category>
>
> The key is in line #4
>
> 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.
>
> Here's the key part of that line which makes it *not greedy*, "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"
>
> Both RebeccaAIML and programD follow the least greedy approach as outlined above.
>
> A good approach when in doubt of the spec is to check out programD's behavior since Noel co-authored the specification and wrote that interpreter.
>
>
> ---------- Forwarded message ----------
> From: Houssem BDIOUI <houssem.bdioui@... >
> Date: Sep 22, 2006 8:27 AM
> Subject: AIML conflict solving
> To: Alicebot and AIML General Discussion < alicebot-general@...>
>
>
> Hi all,
>
> Being the developer/maintainer of ProgramQ (a new release is planned very soon)
> I'm interacting a lot with Charles Chevalier (charlix inventor:),
> and this was our last discussion:
>
> For the following test case, when entering "programq is cool but not
> yet perfect" in ProgramQ
>
> > <?xml version="1.0" encoding="ISO-8859-1"?>
> > <aiml version=" 1.0.1 " xmlns="http://alicebot.org/2001/AIML-1.0.1 ";
> >       xmlns:html=" http://www.w3.org/1999/xhtml";;
> >       xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
> >       xsi:schemaLocation="http://alicebot.org/2001/AIML-1.0.1 http://aitools.org/aiml/schema/AIML.xsd ";>
> > <!-- Free software (c) 2006 Charlix.   -->
> > <!-- This program is open source code released under -->
> > <!-- the terms of the GNU General Public License     -->
> > <!-- as published by the Free Software Foundation.   -->
> > <!-- Complies with AIML 1.01 Tag Set Specification -->
> > <!-- as adopted by the ALICE A.I. Foundation.  -->
> >
> >
> > <category><pattern>* IS *</pattern><template>GOOD</template></category>
> > <category><pattern>* BUT *</pattern><template>WRONG</template></category>
> > <category><pattern>*</pattern><template>No answer</template></category>
> >
> > </aiml>
>
> The result was WRONG.
>
> This is a second example. Trying "I went to Paris" with the following aiml file:
>
> > <?xml version="1.0" encoding="ISO-8859-1"?>
> > <aiml>
> >
> > <category><pattern>* WENT TO *</pattern><template>first </template></category>
> > <category><pattern>* TO *</pattern><template>second</template></category>
> > <category><pattern>*</pattern><template>none </template></category>
> > </aiml>
>
> gives 'second'.
>
> My first impression is that ProgramQ is behaving correctly since
> there's nothing in the spec
> that permits to resolve such a conflict (by forbidding
> "greedy-matching" for instance).
>
> What do you think guys?
>
> Regards,
> Houssem
>
> --
> -----------------------------------------------------------
>                   Houssem BDIOUI
>             EDA Development Engineer
> Tools Team Leader - OCCS - IP & Design - HPC
>               STMicroelectronics Tunis
>
> TINA:    157 5107
> Public:  +216 70 10 51 07
> mobile: +216 97 42 24 87
> e-mail:   houssem.bdioui@...
>              houssem.bdioui@...
> -----------------------------------------------------------
>
> --
> -----------------------------------------------------------
>                   Houssem BDIOUI
>             EDA Development Engineer
> Tools Team Leader - OCCS - IP & Design - HPC
>               STMicroelectronics Tunis
>
> TINA:    157 5107
> Public:  +216 70 10 51 07
> mobile: +216 97 42 24 87
> e-mail:   houssem.bdioui@...
>             houssem.bdioui@...
> -----------------------------------------------------------
> _______________________________________________
> This is the alicebot-general mailing list
> Reply to alicebot-general@...
> 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@...
> 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/
>



--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:   houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------

--
-----------------------------------------------------------
                   Houssem BDIOUI
             EDA Development Engineer
Tools Team Leader - OCCS - IP & Design - HPC
               STMicroelectronics Tunis

TINA:    157 5107
Public:  +216 70 10 51 07
mobile: +216 97 42 24 87
e-mail:  houssem.bdioui@...
             houssem.bdioui@...
-----------------------------------------------------------
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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@...
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/

Re: Fwd: AIML conflict solving

by Noel Bush :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dr. Rich Wallace wrote:
>> A good approach when in doubt of the spec is to check out programD's behavior since Noel co-authored the specification and wrote that interpreter.
>
> Actually I wrote the first Java interpreters (program B and D),
> including the Graphmaster matching algorithm.  Noel took over program
> D and made a lot of changes, but I don't think he changed the matching
> methods.

Yes, I didn't change any of the matching methods.  I did rewrite
virtually every line of code (including the matching methods), in some
cases several times, and overhauled the architecture in major ways, but
the program should still be following the specification exactly.

Over the past few years a few issues have come up that are not clearly
handled by the specification, and for these Program D may have its own
solution, but this is as arbitrary, bound to change, and
non-authoritative as any other solution.  I would not promote the idea
that Program D's approach to an undefined issue carries any more weight
than any other approach, although I do still have the impression that
Program D still implements the specification more completely than any
other implementation (but this may just be some egotistic hallucination
on my part).

Noel
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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/

Re: Fwd: Fwd: AIML conflict solving

by Noel Bush :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> From: Houssem BDIOUI <houssem.bdioui@...>
> Date: Sep 22, 2006 4:36 PM
> Subject: Re: [alicebot-general] Fwd: AIML conflict solving
> To: Alicebot and AIML General Discussion <alicebot-general@... >
>
>
> Mehri,
>
> Thanks for your quick answer. The point is that when running the above algorithm
> ProgramQ matches the "* But *" pattern just because 'But' word comes
> first in the nodemapper list
> (before 'IS'), probably because of alphabetic sorting. And probably
> that's the error: I should not do
> an alphabetic sort of the words. isn't it?

However you sort the words shouldn't matter.  What matters is whether
you do this:

A1.  match "programq" to "*"
A2.  match "is" to "IS"

or this:

B1.  match "programq" to "*"
B2.  match "is" to the same "*" <--- why?
B3.  match "cool" to the same "*"
B4.  match "but" to "BUT"

The (B) scenario is wrong.  You should be matching "is" to "IS".  The
spec effectively describes a non-greedy scenario, as Mehri pointed out,
even though it doesn't say so.

And in your second example, the output "second" is also wrong, for the
same reason.  You should match "went" to "WENT".

The point is that AIML pattern matching doesn't incorporate any looking
ahead.  This avoids the need for any scoring of matches to say that one
pattern "matches better" than another.  A match scoring approach can
seem appealing at first, but in the long run it makes behavior a lot
more difficult to predict.  The great thing about the AIML pattern
matching algorithm is that it is very predictable.  Even if it doesn't
seem as convenient at first, you can always find a way to work with it,
and your AIML sets will scale better because you don't have to try to
account for complex interactions of a bunch of rules.

Noel
_______________________________________________
This is the alicebot-general mailing list
Reply to alicebot-general@...
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/
LightInTheBox - Buy quality products at wholesale price