背景
它的雛形是一個名為"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了,最後給出正確的回應“你最擅長的程式語言是什麼?”