AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。
它的雏形是一个名为"A.L.I.C.E." ("Artificial Linguistic Internet Computer Entity")的高度扩展的Eliza机器人。ALICE总共赢得3次每年度的Loebner奖,并且在2004年获得了Chatterbox Challenge的冠军。由于A.L.I.C.E. 的AIML设置是在GNU GPL协议下发布的,所以已经有许多基于该程序和AIML库的“克隆ALICE”出现。目前AIML已经有了Java,Ruby,Python, C ,C#,Pascal等语言的版本。
AIML语言元素
category元素
category是AIML库中的基本单位,每个category元素都至少包含两个子元素:pattern和template元素。下面是个简单的例子:
<category>
<pattern>WHAT IS YOUR NAME</pattern>
<template>My name is Leo.</template>
</category>
当这个AIML库被加载之后,你问机器人“WHAT IS YOUR NAME”,机器人便会回答“My name is Leo.”。
Pattern元素
Pattern主要用来匹配用户输入,在原生的英文AIML语法中Pattern支持 _ 和 * 的模糊匹配。例如:
<category>
<pattern>WHAT IS YOUR *</pattern>
<template>My name is Leo.</template>
</category>
只要用户的输入是以“WHAT IS YOUR ”开头,机器人就会回复“My name is Leo.”。
Template元素
很明显Template元素是机器人的对用户提问的回答,当用户的输入和同一个category下的Pattern相匹配是,就会将此category元素下的Template输出。
That元素
机器人之所以有思考功能,主要就是that元素的作用。例如:
<category A>
<pattern>是的</pattern>
<that>你是程序员吗?</that>
<template>你最擅长的编程语言是什么?</template>
</category>
<category B>
<pattern>是的</pattern>
<that>你是学生吗?</that>
<template> 你是哪个学校的</template>
</category>
机器人首先通过pattern匹配,匹配到了“是的”但是机器人的数据库中对应“是的”的回答必然非常多,比方有下面A和B两个categories。于是机器人便去匹配that标签,也就是机器人自己上句说过的话,即“你是程序员吗?”这样它就可以确定应该匹配category A了,最后给出正确的回应“你最擅长的编程语言是什么?”