脚本编程

用AIML脚本为机器人编程

通过 dapan_2 发布 Dec 15 2017, 14:59

宝乐贝尔现在完全支持人工智能标记语言(AIML)。AIML是一个标准的XML规范,设计用于脚本聊天机器人响应。AIML 1.0于2001年发布,目前的1.0.1版本于2011年发布. AIML支持许多不同的聊天机器人程序和托管服务。宝乐贝尔支持AIML 2.0并添加了一些有用的扩展。

另请参阅AIML 2中的新增功能

 

关于AIML

AIML定义了一个机器人应该如何使用<pattern>和<template>元素来回答一个问题。模式表示用户的问题,模板定义了机器人的响应。模式元素和模板元素分组在一个类别元素中,可以在主题元素下进行分组。

这是一个简单的“Hello World”AIML示例: 

这个代码会让你的机器人以“你好,你也是”来回答“Hello World”的问题。

模式通常被定义为全部大写,但不区分大小写,所以这种情况并不重要。标点符号通常从模式中剥离,匹配时忽略。模式可以使用“*”和“_”字符包含通配符。“*”和“_”都是相同的通配符,并且会匹配文本的任何子集,它们的区别仅在于它们应用的顺序(先匹配“_”模式,最后匹配“*”模式)。

这是一个简单的通配符示例:

这段代码会让你的机器人回答“你好,你也” 任何包含单词“你好”的问题。

AIML通过“that”元素支持上下文响应。“that”元素指定只有在机器人先前的响应匹配“that”模式时才匹配模式。这允许以不同的方式回答相同的问题,这取决于上下文。

这是一个笑话“那个”的例子:

 

这段代码会让你的机器人讲一个笑话。

模板可以包含混合文本,其中包含各种AIML程序标签。AIML定义了用于文本格式化和转换,日期,变量,条件语句和递归的标签。模板使您可以创建复杂而智能的响应。

这里是AIML 1.0.1模板标签的列表。

  • <star index="N"/> - replaced with value of * in pattern (or Nth *)
  • <that index="M,N"/> - replaced with value of bot's previous response (or Mth previous response, and N sentence of the response)
  • <input index="N"/> - replaced with value of users's input (or Nth *)
  • <thatstar index="N"/> - replaced with value of * in "that" (or Nth *)
  • <topicstar index="N"/> - replaced with value of * in topic (or Nth *)
  • <get name="XXX"/> - replaced by the value of the conversation specific variable
  • <bot name="XXX"/> - replaced by the value of the bot specific variable
  • <sr/> - short form for <srai><star/><srai> (replaced with response to value of * from pattern)
  • <person2/> - converts the text (or <star/>) between 1st and 2nd person (I <-> he, etc.)
  • <person/> - converts the text (or <star/>) between 1st and 3rd person (I <-> you, etc.)
  • <gender/> - converts the text (or <star/>) between male and female (he <-> she)
  • <date/> - replaced with the current date and time, a "format" attribute is also supported
  • <id/> - replaced by the client id
  • <size/> - replaced with the size of bot's memory
  • <version/> - replaced with the AI engine version
  • <uppercase> - converts the text to uppercase
  • <lowercase> - converts the text to lowercase
  • <formal> - converts all words in the text to be capitalized
  • <sentence> - converts the first word in the text to be capitalized
  • <condition name="X" value="Y"> - defines an "if" condition based on comparing the value of a variable to a pattern
  • <condition name="X"> - case statement
  • <condition> - multi-valued if/else statement
  • <random> - choose on of the nested <li> values at random
  • <li name="X" value="Y"> - used in random and condition tags
  • <li value="Y"> - used in random and condition tags
  • <li> - used in random and condition tags
  • <set name="XXX"> - set the value of a variable
  • <gossip> - logs the text
  • <srai> - recursively evaluates the text and replaces it with the response
  • <think> - evaluates the nested statements but does not output any result
  • <learn> - load external AIML file, this is not currently allowed
  • <system> - executes a OS command, this is not currently allowed
  • <javascript> - executes JavaScript code
  • HTML - various HTML tags are also allowed (<b>, <a>, <i>, <ul>, <li>, <p>, <br>)

这是一个复杂的模板示例:

这段代码将使你的机器人回答“你喜欢苹果还是你喜欢吃橘子”的问题,用“我爱苹果,我喜欢橘子”。

 

AIML自由

宝乐贝尔支持导入和导出AIML。AIML可以通过两种不同的方式导入,既可以作为程序脚本,也可以作为聊天记录。

将AIML作为程序脚本导入是从“程序”页面完成的。您可以相对于其他脚本文件导入和排序脚本。脚本可以在AIML或Self中定义。

当你导入一个AIML文件时,它将被转换为自编码,并存储在你的机器人的大脑中以及所有其他信息。AIML的Self语法是一种使用AIML术语的混合语法,但是具有Self脚本结构。Self是一个面向BOT自由人工智能引擎的面向状态机的语言,最初来自Open Pandora's Box笔源项目。Self与AIML非常不同,但可以处理任何类似于任何其他AIML解释器的AIML代码。导入为程序脚本的AIML将执行类似于任何其他AIML解释器。

以下是导入的AIML脚本的self代码:

 


将AIML导入为聊天记录可以将AIML类别集成到机器人的知识库中。AIML文件中的模式/模板类别将与机器人通过对话,更正或导入所了解到的其他问题/响应对一起合并。

机器人不会将AIML脚本作为脚本运行,它将自行决定何时使用响应。机器人将根据问题与回答问题,回答正确性和上下文的匹配程度来选择回答。即使没有*模式,它仍然可以匹配到类似的问题,如果它是可用的最佳匹配。这让你不必为每一个可能的短语写一个模式,只要让机器人知道。

 

使用AIML与Twitter,Facebook和电子邮件机器人

AIML可以用来编写Twitterbots,Facebook机器人,电子邮件机器人或IRC机器人,就像通过其他机制训练的机器人一样。AIML模板和模式可以在任何其他响应中使用。AIML可以从培训页面使用,在聊天记录页面中用于更正,或者用于Twitter页面中的自动推特。

 

AIML资源

AIML标准的主要优点之一是互联网上有大量的AIML资源。这两者都是学习AIML的资源,许多领域和许多不同的语言都有许多免费的AIML脚本。

 

与ALICE交谈

要查看AIML能够进行的对话,请在宝乐贝尔上尝试ALICE。宝乐贝尔上有两个ALICE机器人。ALICE是从ALICE基金会进口了大部分ALICE AIML套装的机器人。宝乐贝尔上的免费机器人有10万个神经元的限制,有些ALICE脚本非常大,所以mp *脚本被排除在外,还有一些其他的大脚本。驴友可以聊天,如果输入“笑话”可以告诉你一个笑话。

ALICE 是一个混合机器人,它将ALICE AIML集合导入为聊天记录,而不是脚本。这意味着她可以自由选择她的回答。她有学习,理解能力,所以也可以学习新事物。

Sara是一个西班牙语的AIML bot,它已经导入了Sara AIML集。


Id: 81415
发布: Dec 15 2017, 14:59
更新: Dec 21 2017, 17:24
响应: 0
浏览量: 426, 今天: 6, 周: 12, 一个月: 21
我确定
标志后的进攻,或者在违反规则网站