AI Zone Admin Forum Add your forum

NEWS: Chatbots.org survey on 3000 US and UK consumers shows it is time for chatbot integration in customer service!read more..

Pattern-side AIML elements, and question about standards
 
 

Dear Forum

I’m working on my Uberbot and I’m looking at the pattern side processing during the loading of an AIML file. Am I right in assuming <bot name=“xyz”/ > is allowed in a pattern, and it refers to the bot property as specified in the startup XML files? Eg if a pattern uses <bot name=“friend”/ > this refers to the “friend” element from the XML file?

The other pattern side elements I allowed are <set>...</set> for user defined maps/sets and <set>number</set> to represent a number. Are there any other XML-style pattern side elements other than set and bot?

Finally a question about standards. I noticed the original AIML 1.0.1 spec said:

This document has been drafted for review by the Alicebot and AIML Architecture Committee of the A.L.I.C.E. AI Foundation, with the intention of providing a more thorough specification than that laid out in the “AIML 1.0 Tag Set”. It is being released by the Committee as a Working Draft to gather public feedback before its promotion to a Proposal, and eventually to final release as the AIML 1.0.1 Recommendation.

Is there intended to be similar feedback and debate on the v2 spec? Is there an AIML v2 reviewing committee? Or is AIML v2 just presented and to be accepted as-is?

 

 

 
  [ # 1 ]

Sorry but you can’t put bot or get elements in a pattern. However, you can put wildcards.

Dr Wallace would know more about the AIML 2 spec but I’ve found that dropping him an email or discussing things on here often starts a discussion about the spec.

*EDIT* I was referring to AIML 1 but I believe it is the same for v2. Dr Wallace can confirm if he pops in.

 

 
  [ # 2 ]

Thanks for the reply - I understand get isn’t allowed, wildcards are allowed (AIML wouldn’t be very useful without them!), and set is allowed in AIML v2 only. It was the bot element I was unsure about. Anyway, in advance of a definite reply I added it to the Uberbot interpreter as it was quite easy to do, and may have some marginal use.

 

 
  [ # 3 ]

From the AIML 2.0 Working Draft:

PATTERN_EXPRESSION ::== WORD | PRIORITY_WORD | WILDCARD | SET_STATEMENT | PATTERN_SIDE_BOT_PROPERTY_EXPRESSION

PATTERN_SIDE_BOT_PROPERTY_EXPRESSION ::== <bot name=“PROPERTY_NAME”> | <bot><name>PROPERTY_NAME</name></bot>

What this means is that any <bot> property can be used within the <pattern> tag. This hasn’t changes from the AIML 1.0+ specification (and I think it was the same in 0.9)

While Steve is a GOD with writing AIML, I think I’ve got him in the area of the ~rules~. cheese raspberry

[edit]
The only caveat to my statement, above, is that nested tags aren’t allowed in AIML 1.0 - Obvious to many, but I want to make sure that was clear. smile
[/edit]

 

 
  [ # 4 ]

Actually I can think of a use for the bot pattern side element. Assuming AIML v2 and assuming a <gendername/ > map that has a list of people’s names you can have this:

<Category>
< Pattern> MY NAME IS <set>gendername</set> </pattern>
<Template> THAT’S A NICE NAME </template>
</Category>

<Category>
< Pattern> MY NAME IS <bot name=“name”/ > </pattern>
<Template> THAT IS MY FAVORITE NAME </template>
</Category>

<Category>
< Pattern> MY NAME IS * </pattern>
<Template> I DON’T THINK THAT IS A NAME </template>
</Category>

 

 
  [ # 5 ]

MY NAME IS <bot name=“name”/ > is pretty much the most frequently used instance of using a <bot> tag within a pattern, and it’s one of the more useful ones, as well, IMHO. smile

 

 
  [ # 6 ]

To be honest, I still use AIML 1. It’s currently the only version supported by the Pandorabots server and so I haven’t done a lot of developing in v2.

 

 
  [ # 7 ]

I’m still struggling with getting Program O to handle the new requirements of the AIML 2.0 specification, so I’m reading those specifications almost weekly, and if it were up to me, ... But it isn’t up to me, so… cheese

 

 
  [ # 8 ]

Actually that touches on something I wondered about the whole AIML design process. In the original AIML v1 spec it mentioned a design process and some kind of group consensus before the spec was released. But in v2 there just seems to be a spec with no real discussion of what people want or what should be implemented. Does anyone know how the design process works? Is there some kind of group process, or can people design and release whatever AIML features they want?

 

 
  [ # 9 ]

At risk of getting boring, does anyone actually know about the AIML V2 design process? Based on V1 I thought AIML design was a group process. But I don’t see any process for the design of V2 at all. I know there is a V2 spec but I’m not sure if there is any opportunity for input.

 

 
  [ # 10 ]

Will,

Let me start by setting our discussion tone to respectful and considerate,
before opening a dialog about demands and robot obedience of rules which
tends to sound unfriendly, but really isn’t because we are discussing robots.

A robot must do as the master of its code commands. For example, if the
master chooses to activate a robot with some main systems offline, then
the robot is forced to respond using whatever systems it has available once
the master reroutes control. Like in Science Fiction, the same is true in Science reality.

Here my robot is rewriting its own custom AIML code to indicate its choice
of response which best matches my human stimulus. Using a system of weights,
it explains its design process and how it graded each of its considerations
in the final response.  This is why I shutdown the main systems, so I could
access the internal workings more easily.

Basically, I instructed it to use its custom AIML generation system to communicate,
as a short cut for me, while the main systems are offline. So, it wrote
a custom <response> tag to the final AIML category choice it made:

<pattern><response>I AM YOUR MASTER</response></pattern>
<
template>NoOnly <bot name="master"/> is my master. </template

NOTE: The default response is part of the main system offline, so blank responses may occur.

Reference: http://www.elizabot.com/open/

The point is that you can make that robot assist you in its own design process,
because as its programmer, you are in command.  This may simplify the design process
without all systems online.  You don’t have to do it the way everyone else does,
you can do it your way.  (By “you” I mean everyone in general.)

What seems unclear is how claims may be made that a robot does not know where
it is in the sentence.  Really?  Say a robot processes about a dozen matches
on a sentence before deciding which is best… How could it, without being
aware of those dozen matching positions in the sentence?

 

 

 

 
  login or register to react