扩展标准AIML的探索和实践

时间:2013-05-22

  摘要:文章详细介绍人工智能标记语言AIML和对标准AIML的扩展.基于AIML的聊天系统,广泛应用于网络聊天机器人,问答系统,呼叫中心等.由于标准AIML的语义表达能力有限,文章在对AIML工作机理分析基础上,结合集成了Program N解析器的AIMLpad源码,介绍AIML的工作机理和扩展方法.通过AIML扩展给聊天系统增加系统控制功能,是一种实现人机交互的方法.

  0引言

  ALICEfartifICial linguistic internet computerentity)是一个基于经验的人工智能聊天机器人.

  该系统以AIML(Arfificial Intelligence Markup Language)作为知识描述语言CI],因为其良好的设计和逼真的效果,在2000年和2001年两度获得着名的Loebner奖.

  AIML在整个聊天系统中的作用至关重要.

  基于AIML的聊天系统,广泛应用于网络聊天机器人.问答系统.呼叫中心等.此类系统一般由AIML描述的知识库和解析引擎组成.解析引擎至今已有多种程序语言版本,例如用C/C++语言实现的AIML,称为Program C,广泛应用于CGI脚本和IRG等,用Java2实现的版本称为Program D,用P.Xdaon实现的解析器称为Program Y.

  由于标准AIML的语义表达能力有限,本文在对AIML工作机理分析的基础上,结合集成了Program N解析器的AIMLpad源码,介绍AIML的工作机理和扩展方法.

  1 AIML简介

  AIML是利用XML标准定义的一种服务于人工智能领域需要的特定语言,它描述了被称为AIML对象的一组数据对象,并且描述了处理这些数据对象的程序的行为.设计AIML的初意图就是为了能够用简单的方式来创建人工智能聊天机器人,而且在语法上能与普通人所熟悉的HTML语法接近.随着XML的发展,它所具有的灵活.易读.可扩展以及平台无关等优点,版本AIML便已经与XML语法完全兼容.XML与HTML的不同点是允许定义自己的标记,AIML定义了一套具有特点含义的标记,使得以AIML为的聊天系统具有强大的功能,此外用户也可以根据需要定义各种新标记来扩展系统的功能.因此AIML具有很好的扩展性.

  1.1 AIML语法构成要素在AIML中,基本的知识单元是有分类(category)构成的,而每一个分类又是由用户输入的问题.答案和可选上下文环境所组成.一个基本的AIML分类如下所示:

  其中,模式<paltem>部分代表用户输入的问话,模板<template>部分则代表用户输入这一问句后,系统应该给出的答案.除了上述两种基本标记以外,AIML还定义了许多重要标记来模拟人类的思维,例如主题标记<topic>.语境标记<that>.随机选择输出标记<random>.判断输出标记<condition>.通配符标记<star>.记忆存储标记<think>.已经获取标记<get>等等,通过对这些标记的使用,系统便具有语境分析.语义转换.判断分析.模糊查询.记忆思考等智能思维能力.

  1.2 AIML知识树

  AIML知识库是树的形式组织到计算机内存中,树的每个节点代表模式中的一个词组或通配符,根据它在模板中出现的位置前后相连,每个叶子节点包含一个模板属性,当该模式匹配成功后将返回叶子节点的模板信息.

  知识树的这一结构类似于操作系统中的文件系统结构,不同的模式之间前面相同的部分共享同一父路径,通过采用这一知识存储机制,不但可以提供计算机内存的利用率,同时可以方便不同AIML文件之间的内联.从而,许多包含不同领域知识的AIML文件可以合并成一个知识库,提高系统的扩展性和兼容性.

  1.3 AIML推理过程

  AIML的推理机制是根据用户的输入查找对应模式,假设用户输入的问句以单词X开头,那么首先拿X与Graphmasterqb级节点的内容逐个比较,整个推理过程可以分为三步:

  (1) 当前节点是否包含统配符“-”.如果有,则搜索以当前节点为根节点的子树,以x后面剩余部分组成的子句在该子树中继续该过程,如果没有相匹配的节点,则转(2):

  (2)当前节点是否包含X.如果是,则搜索以当前节点为根节点的子树,以X后面剩余部分组成的子句在该子树中继续该过程,如果未发现相匹配节点,则转(3):

  (3)当前节点是否包含“*”.如果是,则搜索以当前节点为根节点的子树,以X后面剩余部分组成的子句在该子树中继续该匹配过程.如果没有发现匹配节点, 回溯到节点的父节点,把X重新加到子句子的首部,继续该匹配过程.

  当进行匹配的句子到达句尾,并且匹配的一个节点包含模板内容时,则表明己经找到了相匹配的模式,此时,终止搜索匹配过程,返回该节点,取出模板内容,在必要信息处理完毕后把结果返回用户.由该算法可以看出,如果内存知识树中级节点含有关键字“木t',并且该节点含有模板信息,则对任何输入的问句都能得到一个结果.

  图1 AIML系统工作流程

  2 AIMLpad分析与扩展的实现

  AIMLpad是–款开源软件,集成TProgram N解析器的记事本程序,可方便地编辑和修改AIML文件和保存聊天内容.其中还集成了一个JavaScript解析器fSpiderMonkey)和一个内建命令解释器.

  AIMLpad是用C/C++语言编写的软件,结构明晰,适合用来学习AIML相关机制.本节即结合AIMLpad源码分析AIML机理和扩展方法.

  2.1 AIMLpad主要类

  AIMLpad采用模块设计化思想,把数据和操作封装在类中.与AIML相关的类如下:

  (1)Core,主要保存了知识树的实例idx和AIML配置信息,主要包含的方法有标签的解析函数,如doSRAI,doSet,doRandom分别解析了<srai><set>和<random>标签.

  (2)idx,保存知识树的根节点指针,加载AIML文件生成知识树的函数.

  (3)Node,是知识树的节点类,保存了下一个节点的指针和当前节点的内容(context),主要包含的方法有查找节点.删除节点.添加节点等函数.

  (4)PUvm.单元处理虚拟机(process unit virtualmachine)主要解析内置的脚本命令并执行,主要函数是onCmdO.

  2.2 AIMLpad:l=要执行流程AIMLpad主要执行流程由以下四个函数依次被调用完成:

  (1)getAnswer(request,reply)外界函数调用类core中的方法getAnswer,便启动了从输入文本request,解析后得到reply文本的过程.方法getAnswer还对输入语句进行规范化处理,比如,标点符合替换.缩略语替换等.调用respond得到reply文本.

  (2)respond(request,reply)调用方法gm_interpret获得与request匹配的template在数据库中的位置.读出此template并调用reevaluate 函数对template的标签进行解析.终得到完整的reply文本,并返回.

  (3)grn_interpret(request)解析request文本,在知识树中找到与之匹配的pattern分支,然后返回相应template在数据库中的位置.

  (4)reevaluate(temphte,reply)对template文本进行解析,即处理其中的标签以得到完整的reply文本,并返回.

  2.3 AIMLpad对AIMU际准的扩展甜MLpad程序对AIMLfl勺标准进行了扩展,增加了用于交互的自定义脚本语言(AIMLpad scriptlanguage).这种脚本语言以<script>和</script/>形式嵌入template文本中.如下所示:

  以上示例取自AIMLpad源文件目录中的empty.aiml文件.它的功能是任何输入都会引发脚本pickup的执行,同时输出What should I say.一其qbpickup是由AIMLpad script language相应的语法和命令组成的完成一定功能的复杂脚本,也叫帧(frame).帧以冒号开始嵌入标签中.对于单个脚本命令或多个,不需要冒号,只需用逗号分隔.在此,pickup帧的功能是提示输入用户期望的回答作为对于输入内容的template,并形成一条新的category记录,之后便用此记录来回答同样的输入.

  2.4 AIMLpad Se]呻t language扩展的实现AIMLpa&在处理temphte时,如果检测到标签便调用函数donode,根据不同的标签跳转到相应的处理函数,然后返回处理结果的指针.对于新增标签<script>.相应的处理函数doScript添加到函数donode中.如下所示:

  函数doScript调用类Pu啪中的函数onCmd实现对脚本命令的处理.只要编码实现PUvm中的相关命令处理函数,便可以在AIML使用自定义命令和标签.函数:doScripV如下所示:

  3总结

  本文通过介绍AIML和AIMLpad,详细介绍了对标准AIML的扩展方法.由于AIML的使用范围的扩大,不仅仅局限于标准AIML的功能,扩展AIML可以实现自定义功能,扩展系统功能.随着语音技术发展,把AIML功能集成到语音系统实现语音聊天功能,己经成为现实.通过AIML扩展给聊天系统增加系统控制功能,是一种实现人机交互的方法,值得探索.

上一篇:英特尔、高通共同推动MEMS组件接口标准化
下一篇:HDPV联盟发布行业标准 助逆变器成本减半

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料