[alicebot-developer] Concept context again
Leonard H. Chalk
alicebot-developer@list.alicebot.org
Mon, 6 Jun 2005 15:42:07 -0400
This is a multi-part message in MIME format.
------_=_NextPart_001_01C56ACF.D2FA2CB4
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
I have been working on a new .NET alice bot for several months now. I
had a previous .NET project that I abannoned for several reasons (mostly
lack of expandability). This one implements the context tag which
turned out to be a bit more complicated than I had expected. But the
results are pretty exciting. Context are multi-pattern, you can have as
many patterns per context as you want (they are OR'd together). For
example in the security context all the users permissions are added as
individual patterns and any category that needs a permision that the
user has will be activated.
=20
Currently I support 12 context, new ones are very easy to add, by
priority (I have to process each context independently and link them
aftwards) they are:
=20
focus - a super topic so if you were using a bot for multiple purposes
can control large blocks of categories
topic - standard aiml topic
that - standard that
pattern - standard pattern
feedback - special bot channel used for srai so pattern like "HELLO1"
are not needed. It also is used to minimize rule firing. for example
if you needed 1000 focus "RECEPTIONIST" patterns you could create one
pattern and <context name=3D"focus">RECEPTIONIST</context><context
name=3D"pattern">_<\context> then in the template remove the focus and =
run
a srai with a null pattern and re-route the input to the feedback
channel then restore focus.=20
bot - set the name of the bot, useful for having bot specific patterns
in a multi bot graphmaster
user - the name of the user, useful for haveing user specific patterns
=20
there are 4 emmotional context to attempt to make the bot more human
physical - is it sick, tired ect =20
emmotional - is it happy, sad ect
mental - is it bored
spiritual - not even sure how to use it but I put it in anyway
security - allow restricted content, the bot also has tag level security
but context level security helps control flow.
=20
I am working on some documentation but I am still finalizing the feature
set.
=20
Some quick highlights
=20
1) Dynamic tags and context - both tags and context can be added to a
running bot by aiml. The bot analysis a compiled assembly and finds the
handlers identified by custom attributes such as
=20
[ProaimlContextProcessor("pattern","preprocessor",3000)]
[ProaimlContextProcessor("pattern","postprocessor",3000)]
[ProaimlTag("star","A.I.M.L 1.01 Tag Implementation")]=20
=20
I have currently the complete AIML 1.01 set of tag defined plus a few
more
=20
2) Tag level security - also using custom attributes you can set
permissions on everytag
=20
[PrincipalPermissionAttribute(SecurityAction.Demand,Role=3D"BotMaster")]
[ProaimlTag("system","A.I.M.L 1.01 Tag Implementation")]
3) Multiple Templates - because of tag level security a selected patten
may fail to execute. The behaviour of a failed execution is to execute
the next template if there is on an exicute the next category in the
stack if there is not.
4) Enhanced Syntax - the syntax that the bot reads is somewhat different
from regular AIML (to use most of the features mentioned above) but the
bot does read standard AIML (uses an xslt transform to convert sheets so
any standard AIML set still will work.
5) 3d character interface - uses the Haptek viewer
6) Dynamic data store - the data store interface is used throught out
the system. Any implementation of IDataStore will work so a custom
datastore object to any database or other external storage system is
extremly easy to implement
7) Debuger/Editer - can examine the category stack and edit any pattern
in the stack. Depending on security level the edited pattern can be
added as a global, bot specific,or user specific category
8) Concept support - <concept name=3D"bot" =
mode=3D"inline">NAME</concept>.
Concept support includes 3 binding modes:
pre - dynamically parses content after "_" but before token
inline - content is parsed statically at load time "default"
post - dynamically parses content after token but before "*"
concept can be anything, I plan in the future to make the concept tag
closly integrated with CYC.
9) tag level .NET reflection support - The bot can create,manipulate,
store and retrieve any .NET object from AIML. This makes application
integration very easy. It can start up and manipulate excel,word ect.
(still in the experamental sages but the proff of concept works, just
need to make the AIML syntax a little cleaner) =20
10) Rapidly expanding feature set - I am still actively testing and
adding features. I plan to add CYC, LinkGrammar,WordNet,Clip, and Soar
support very soon. I already have ported all the above to .NET I just
need to finish integrating it into my bot. I am working with soar
currently to control all of the emmotional chanels.
=20
I'll keep you posted, I should have a web site up soon
Leonard
------_=_NextPart_001_01C56ACF.D2FA2CB4
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii">
<META content=3D"MSHTML 6.00.2900.2627" name=3DGENERATOR></HEAD>
<BODY>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>I have =
been working=20
on a new .NET alice bot for several months now. I had a =
previous .NET=20
project that I abannoned for several reasons (mostly lack of=20
expandability). This one implements the context tag which =
turned out=20
to be a bit more complicated than I had expected. But the results =
are=20
pretty exciting. Context are multi-pattern, you can have as many =
patterns=20
per context as you want (they are OR'd together). For example in =
the=20
security context all the users permissions are added as individual =
patterns and=20
any category that needs a permision that the user has will be=20
activated.</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005>Currently I support=20
12 context, new ones are very easy to add, by priority (I have to =
process each=20
context independently and link them aftwards) they =
are:</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>focus =
- a super=20
topic so if you were using a bot for multiple purposes can control large =
blocks=20
of categories</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>topic =
- standard=20
aiml topic</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>that - =
standard=20
that</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005>pattern - standard=20
pattern</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005>feedback - special=20
bot channel used for srai so pattern like "HELLO1" are not =
needed. =20
It also is used to minimize rule firing. for example if you needed =
1000=20
focus "RECEPTIONIST" patterns you could create one pattern and =
<context=20
name=3D"focus">RECEPTIONIST</context><context=20
name=3D"pattern">_<\context> then in the template remove the =
focus=20
and run a srai with a null pattern and re-</SPAN></FONT><FONT=20
face=3DArial size=3D2><SPAN class=3D028571418-06062005>route the input =
to the=20
feedback channel then restore focus. </SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005></SPAN></FONT><FONT=20
face=3DArial size=3D2><SPAN class=3D028571418-06062005>bot - set the =
name of the bot,=20
useful for having bot specific patterns in a multi bot=20
graphmaster</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>user - =
the name of=20
the user, useful for haveing user specific patterns</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>there =
are 4=20
emmotional context to attempt to make the bot more =
human</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005>physical - is=20
it sick, tired ect </SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005>emmotional - is it=20
happy, sad ect</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>mental =
- is it=20
bored</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005>spiritual - not even=20
sure how to use it but I put it in anyway</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D028571418-06062005>security - allow=20
restricted content, the bot also has tag level security but context =
level=20
security helps control flow.</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>I am =
working on some=20
documentation but I am still finalizing the feature =
set.</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>Some =
quick=20
highlights</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>1) =
Dynamic tags and=20
context - both tags and context can be added to a running bot by =
aiml. The=20
bot analysis a compiled assembly and finds the handlers identified by =
custom=20
attributes such as</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT><SPAN class=3D028571418-06062005>
<P><FONT face=3DArial=20
size=3D2>[ProaimlContextProcessor("pattern","preprocessor",3000)]</FONT><=
/P>
<P><FONT face=3DArial=20
size=3D2>[ProaimlContextProcessor("pattern","postprocessor",3000)]</FONT>=
</P>
<P><FONT face=3DArial size=3D2>[ProaimlTag("star","A.I.M.L 1.01 Tag=20
Implementation")] </FONT></P>
<P><FONT face=3DArial size=3D2></FONT> </P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>I have =
currently the=20
complete AIML 1.01 set of tag defined plus a few=20
more</FONT></SPAN></P></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D028571418-06062005>2) Tag =
level=20
security - also using custom attributes you can set permissions on=20
everytag</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D028571418-06062005></SPAN></FONT> </DIV>
<DIV><FONT><SPAN class=3D028571418-06062005>
<P><FONT face=3DArial=20
size=3D2>[PrincipalPermissionAttribute(SecurityAction.Demand,Role=3D"BotM=
aster")]</FONT></P>
<P><FONT face=3DArial size=3D2>[ProaimlTag("system","A.I.M.L 1.01 Tag=20
Implementation")]</FONT></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>3) =
Multiple Templates=20
- because of tag level security a selected patten may fail to =
execute. The=20
behaviour of a failed execution is to execute the next template if there =
is on=20
an exicute the next category in the stack if there is =
not.</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>4) =
Enhanced Syntax=20
- the syntax that the bot reads is somewhat different from regular =
AIML (to=20
use most of the features mentioned above) but the bot does read =
standard=20
AIML (uses an xslt transform to convert sheets so any standard AIML set =
still=20
will work.</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>5) 3d =
character=20
interface - uses the Haptek viewer</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>6) =
Dynamic data store=20
- the data store interface is used throught out the system. Any=20
implementation of IDataStore will work so a custom datastore object to =
any=20
database or other external storage system is extremly easy to =20
implement</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>7) =
Debuger/Editer -=20
can examine the category stack and edit any pattern in the stack. =20
Depending on security level the edited pattern can be added as a global, =
bot=20
specific,or user specific category</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>8) =
Concept support -=20
<concept name=3D"bot" mode=3D"inline">NAME</concept>. =
Concept=20
support includes 3 binding modes:</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>pre =
- dynamically=20
parses content after "_" but before token</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>inline - =
content is=20
parsed statically at load time</FONT> <FONT face=3DArial=20
size=3D2>"default"</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>post - =
dynamically=20
parses content after token but before "*"</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>concept =
can be=20
anything, I plan in the future to make the concept tag closly integrated =
with=20
CYC.</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>9) tag =
level .NET=20
reflection support - The bot can create,manipulate, store and=20
retrieve any .NET object from AIML. This makes application=20
integration very easy. It can start up and manipulate excel,word =
ect.=20
(still in the experamental sages but the proff of concept works, just =
need to=20
make the AIML syntax a little cleaner) </FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial size=3D2>10) =
Rapidly expanding=20
feature set - I am still actively testing and adding features. I =
plan to=20
add CYC, LinkGrammar,WordNet,Clip, and Soar support very soon. I =
already=20
have ported all the above to .NET I just need to finish integrating it =
into my=20
bot. I am working with soar currently to control all of =
the=20
emmotional chanels.</FONT></SPAN></P>
<P><SPAN class=3D028571418-06062005><FONT face=3DArial=20
size=3D2></FONT></SPAN> </P>
<P><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D028571418-06062005>I'll keep you=20
posted, I should have a web site up soon</SPAN></FONT></FONT></P>
<P><FONT face=3DArial><FONT size=3D2><SPAN=20
class=3D028571418-06062005>Leonard</SPAN></FONT></FONT></P></SPAN></FONT>=
</DIV></BODY></HTML>
------_=_NextPart_001_01C56ACF.D2FA2CB4--