18 noviembre, 2008

Alice in cyberland

AIML (Artificial Intelligence Markup Language) is an XML-compliant language that's easy to learn, and makes it possible for you to begin customizing an Alicebot or creating one from scratch within minutes.
The most important units of AIML are:
[aiml]": the tag that begins and ends an AIML document
[category]: the tag that marks a "unit of knowledge" in an Alicebot's knowledge base
[pattern]: used to contain a simple pattern that matches what a user may say or type to an Alicebot
[template]: contains the response to a user input

There are also 20 or so additional more tags often found in AIML files, and it's possible to create your own so-called "custom predicates".
Right now, a beginner's guide to AIML can be found in the AIML Primer.
The free A.L.I.C.E. AIML includes a knowledge base of approximately 41,000 categories. Here's an example of one of them:

[pattern]WHAT ARE YOU[/pattern]
[think][set name="topic"]Me[/set][/think]
I am the latest result in artificial intelligence,
which can reproduce the capabilities of the human brain
with greater speed and accuracy.

(The opening and closing [aiml] tags are not shown here, because this is an excerpt from the middle of a document.)

Everything between [category] and [/category] is -- you guessed it -- a category. A category can have one pattern and one template. (It can also contain a [that] tag, but we won't get into that here.)

The pattern shown will match only the exact phrase "what are you" (capitalization is ignored).

But it's possible that this category may be invoked by another category, using the [srai] tag (not shown) and the principle of reductionism.

In any case, if this category is called, it will produce the response "I am the latest result in artificial intelligence..." shown above. In addition, it will do something else interesting. Using the [think] tag, which causes Alicebot to perform whatever it contains but hide the result from the user, the Alicebot engine will set the "topic" in its memory to "Me". This allows any categories elsewhere with an explicit "topic" value of "ME" to match better than categories with the same patterns that are not given an explicit topic. This illustrates one mechanism whereby a botmaster can exercise precise control over a conversational flow.