AIML机器人

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等语言的版本。

例子:http://alice.mpabo.com

AIML文件就是一个xml兼容的文本文档

AIML的常用标签:
1:pattern tag:支持模式匹配(正则表达式,模糊匹配),及基于template的返回
2:random tag:支持随机回答(一对多)
4:think,system tag: 支持简单逻辑记忆及自定义函数
5:javascript tag: 支持嵌入js脚本(适用于web chat开发,比如根据情绪改变表情等)。
6:srai tag: 支持多对一回答.
详细内容请参加AIML的官方文档:
http://alicebot.org/TR/2005/WD-aiml/WD-aiml-1.0.1-008.html

chatterbean的例子,需要bsh包。
Alice工厂: AliceBotMother

命令行聊天程序:

需要说明的是:

context.xml:设置application的属性, 及时间格式等可变属性

如上属性,都可以用AIML的<bot>标签及<get>标签访问得到。

splitters.xml:定义什么是句子,即句子的结束符。

substitutions.xml:定义容错规则及特殊字符映射等。

AIML文件:

system标签中的learn方法实现了Alice的学习功能,<input/>标签记住了之前对方的聊天记录, 通过index可以得到(倒序索引)

转自:http://lcllcl987.iteye.com/blog/473256
中文的实现:https://code.google.com/p/ameliebot/ (很久没更新了)