标记语言 AIML-学习

标记语言 AIML

**运行命令:**java -cp Ab.jar Main bot=test action=chat trace=false

1. AIML标签

1.1 AIML文档中常用的重要标签
  • <aiml> 定义AIML文档的开头和结尾
  • <category> 定义 Alicebot 知识库中的知识单元
  • <pattern> 定义模式以匹配用户可以输入到 Alicebot 的模式
  • <template> 定义 <Alicebot> 对用户输入的响应
1.2 AIML 中常用标签
  • <star> 用于匹配 <pattern> 标签中的通配符 * 字符
  • <srai> 多用途标签,用于调用/匹配其他类别
  • <random> 使用 <random> 获取随机响应
  • <li> 用于表示多个响应
  • <set> 用于在 AIML 变量中设置值
  • <get> 用于获取存储在 AIML 变量中的值
  • <that>AIML 中用于根据上下文进行响应
  • <topic>AIML 中用于存储上下文,以便以后可以基于该上下文完成对话
  • <think>AIML 中用于存储变量而不通知用户
  • <condition> 与编程语言中的 switch 语句类似。有助于 ALICE 响应匹配输入
1.3 AIML词汇

AIML 词汇使用单词,空格和两个特殊字符*_ 作为外卡。AIML 解释器优先选择具有 _ 的模式而不是具有 * 的模式。AIML标记符合XML,模式不区分大小写。

示例:

<aiml version = "1.0.0" encoding = "UTF-8"?>
  <category>
    <pattern> HELLO ALICE </pattern>
    
    <template>
      Hello User!
    </template>
    
  </category>
</aiml>

注:

  • <aiml> 标记表示AIML文档的开始
  • <category> 标签定义知识单元
  • <pattern> 标签定义用户要输入的模式
  • <template> 标签,如果用户键入 Hello Alice, 它定义对用户的响应

结果:

User:Hello Alice
Bot:Hello User
1.4 AMIL 基本标签

示例:

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
  <category>
    <pattern> HELLO ALICE </pattern>
    
    <template>
      Hello User
    </template>
    
  </category>
</aiml>
1.4.1 <aiml> 标签

<aiml> 标签标记AIML文档的开头和结尾。它包含版本和编码属性下的版本和编码信息。version 属性存储ALICE聊天机器人知识库,表示使用的AIML版本。此属性是可选的。encoding 属性提供要在文档中使用的字符集。例如,使用 UTF-8 。强制性要求 <aiml> 标记至少包含一个 <category> 标记。可以创建多个AIML文件,其中每个 AIML 文件包含一个 <aiml> 标记。每个 AIML 文件的目的是将至少一个名为 category 的知识单元添加到 ALICE 聊天机器人的知识库。

1.4.2 <category>标签

<category> 标签是 ALICE 机器人的基本知识单元。每个类别包含:

  • 用户输入的巨资形式可以是断言,问题和感叹号等。用户输入可以包含像 *_ 这样的通配符

  • 响应 Alicebot 提供的用户输入

  • 可选上下文

    <category> 标记必须具有 <pattern><template> 标记。<pattern> 表示用户输入, <template> 表示 Alicebot 的回应。如下示例:

    <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
      	Hello User
      </template>
      
    </category>
    

    即当用户输入 HELLO ALICE 时,机器人将使用 Hello User 作为回复。

1.4.3 <pattern> 标签

<pattern> 标记表示用户的输入。他是 <category> 标记中的第一个标记。 <pattern> 标签可以包含通配符,以匹配多个句子作为用户输入。例如,在上述示例中, <pattern> 包含 "HELLO ALICE"

AIML 不区分大小写,如果用户输入 hello alice 等,所有这些输入都是有效,机器人都能够与 HELLO ALICE 进行匹配。

<category>
	<pattern> HELLO ALICE </pattern>
  
  <template>
  	Hello User
  </template>
  
</category>

即机器人对 HELLO ALICE 的响应为 Hello User .

1.4.4 <template> 标签

<template> 标签标示机器人对用户的响应。他是 <category> 标记中的第二个标记。此 <template> 标记可以保存数据,调用另一个程序,提供条件答案或委托给其他类别。

<category>
	<pattern> HELLO ALICE </pattern>
  
  <template>
  	Hello User
  </template>
  
</category>

2. AIML标记

2.1 <star> 标记

<star> 标签用于匹配 <pattern> 标签中的通配符 *

语法:

<star index = "n" />

n 表示 <pattern> 标签中用户输入 * 的位置。

示例:

<category>
	<pattern> A * is a *. </pattern>
  <template>
  	When a <star index = "1" /> is not a <star index = "2"/>?
  </template>
  
</category>

当用户输入 A mango is a fruit. 。 那么机器人会回答: When a mango is not a fruit?

2.2 <srai> 标记

AIML <srai> 标记是一个多功能标签,此标记使 AIML 能够为同一模板定义不同的目标。

语法:

<srai>pattern</srai>

以下是 srai 相关的常用术语

  • 符号缩减
  • 分而治之
  • 同义词解析
  • 关键词检测

1. 符号缩减

符号缩减技术用于简化模式,他有助于用简单的模式减少复杂的语法模式。

例如,请考虑以下对话:

Human: Who was Albert Einstein?
Robot: Albert Einstein was a German physicist.
Human: WHo was Isaas Newton?
Robot: Isaac Newton was a English physicist and mathematician.

若问题修改为:

Human: DO YOU KONW WHO Albert Einstein IS?
Human: DO YOU KONW WHO Isaac Newton IS?

此时, srai 标签就派上用场了。它可以将用户的模板作为模板。

**第1步:**创建类别

<category>
	<pattern>WHO IS ALBERT EINSTEIN?</pattern>
  <template>Albert Einstein was a German physicist.</template>
  
  <pattern>WHO IS Isaac Newton?</pattern>
  <template>Isaac Newton was a English physicist and mathematician.</template>
</category>

**第2步:**使用 <srai> 标签创建通用类别

<category>
	<pattern>DO YOU KNOW WHO * IS?</pattern>
  
  <template>
    <srai>WHO IS <star /></srai>
  	<!-- 当该部分与相应的 <pattern> 标签匹配的时候就会回复相应的 <template> 标签内容
		-->
  </template>
</category>

2. 分为治之

分而治之用于重复使用子句来作出完成的回复。有助于减少定义多个类别。

例如,考虑如下对话:

Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!

每当用户在句子开头说 Bye 的时候,机器人回复 GoodBye! 在这里将使用 srai 标签。参考以下步骤:

**第1步:**创建类型

<category>
   <pattern>BYE</pattern>
   <template>Good Bye!</template>
</category>

**第2步:**使用 <srai> 标签创建通用类别

<category>
	<pattern> BYE * </pattern>
  
  <template>
  	<srai>BYE</srai>
  </template>
  
</category>

3. 同义词解析

同义词是具有相似含义的词。机器人应该以相同的方式回复类似的单词。

例如,请考虑如下对话:

Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!

每当用户说 FactoryIndustry 时,机器人回复: Development Center! 在这里使用 <srai> 标签来实现。

**第1步:**创建类别

<category>
	<pattern>FACTORY</pattern>
  <template>Development Center!</template>
</category>

**第2步:**使用 <srai> 标签创建通用类别

<category>
	<pattern>INDUSTRY</pattern>
  
  <template>
  	<srai>FACTORY</srai>
  </template>
  
</category>

4. 关键词检测

使用 <srai> 标签,当用户键入特定关键词是,可以返回一个简单的响应,例如,无论句子中 school 还是 School 都一样,它不区分大小写字母。

例如,请考虑一下对话:

Human: I love going to school daily.
Robot: School is an import institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.

在这里,每当用户在句子中包含: school 时,机器人回复标准信息:“School is an important institution in a child’s life.”。

在这里使用 <srai> 标签,并使用通配符。

**第1步:**创建类别

<category>
	<pattern>SCHOOL</pattern>
  <template>School is an important institution in a child's life.</template>
</category>

**第2步:**使用 <srai> 标签创建通用类型

<category>
	<pattern>_ SCHOOL</pattern>
  <template>
  	<srai>SCHOOL</srai>
  </template>
</category>

<category>
	<pattern>SCHOOL *</pattern>
  <template>
  	<srai>SCHOOL</srai>
  </template>
</category>

<category>
	<pattern>_ SCHOOL *</pattern>
  <template>
  	<srai>SCHOOL</srai>
  </template>
</category>

3. AIML 标签

3.1 <random> 标签

<random> 标签用于获取随机响应。此标记使 AIML 能够针对相同的输入作出不同的响应。 <random> 标签与 <li> 标签一起使用。 <li> 标签设置每个不同的响应,这些响应将随机传递给用户。

语法:

<random>
	<li>pattern1</li>
  <li>pattern1</li>
  ...
  <li>pattern1</li>
</random>

示例:

对话:

Human:HI
Robot:Hello!
Human:HI
Robot:Hi! Nice to meet you!

文件:random.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
	<category>
  	<pattern>HI</pattern>
    
    <template>
    	<random>
      	<li>Hello!</li>
        <li>Hi! Nice to meet you!</li>
      </random>
    </template>
    
  </category>
</aiml>

文件:random.aiml.csv

0,HI,*,*, <random><li> Hello! </li><li> Hi! Nice to meet you! </li></random>,random.aiml
  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

In cerca di

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值