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了,最后給出正確的回應“你最擅長的編程語言是什么?”