AIML是Artificial Intelligence Markup Language的缩写。这种语言基于XML,它易学习易掌握。使用AIML可以很容易的定制一个Alicebot或者从头开始创建一个Alicebot。Alicebot是种聊天机器人,参见http://www.alicebot.org/ 。
下面简单的介绍下AIML的语法。
AIML语言中最重要的四个标志:
· <aiml>: 这个标签用来标志一个AIML文档的开始和结束。
· <category>: 这个标志表示在Alicebot的知识体系里暂时无法理解的东西。
· <pattern>: 用来描述一个简单的模式表示用户会同Alicebot说什么。
· <template>: 用来描述Alicebot的回复。
还有20余种标签会在AIML文件中经常碰到。你也可以创建你自己的“定制标签”。现在就开始学习使用AIML吧,这里有一个初级教程 AIML Primer。
举例说明吧。免费的A.L.I.C.E. AIML 已经包含了一个基本的知识库,描述了大概41,000个category。看这个例子:
<category>
<pattern>WHAT ARE YOU</pattern>
<template>
<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.
</template>
</category>
<aiml>标签在这里没有显示出来,因为这里只是文档的一个节选。
如你所见<categoray>与</category>之间,就是描述一个category啦!每个category可以有一个pattern和一个template,还可以有一个<that>标签的,但是我不想在这里讨论它。
如上的category中的pattern只能够匹配精确的"what are you"(大小写忽略)。What are you 你不会不认识吧,好吧,直译是"你是什么东西啊?"
每个category还有可能被另外一个category调用,此时使用<srai>标签,这里也不作深入讨论。可以参见reductionism. Reductionism大根是还原论,简约化的意思。很难译出!
不管哪种情况,如果这个category被激发了,alicebot就会回答:"I am the latest result in artificial intelligence…" ,前面<template>里面的东东。意思是:我是最先进的人工智能的产物。我能够以超快的速度和准确度模拟人脑的功能。另外,还有一些其它有趣的事情发生呢。注间到<think>标签吗?这会让Alicebot联想到这个对话的相关的一个限制,比如上面的例子就告诉alicebot,这个对向在讨论你自己。set name="topic",又赋值Me。于是对于alicebot的其它N多category,同样是topic的值为Me的category会被优先采纳。由此,这个机制能让你更好更准确的控制对话的流程。想想还有更多的机制呢,就看你的创造力设计一个聪明的聊天机器人啦!