返回首页
当前位置: 主页 > 编程语言 > XML教程 >

AIML-<srai>标签

时间:2020-07-04 14:19来源:电脑教程学习网 www.etwiki.cn 编辑:小山哥

<srai>标签是多用途标签。该标签使AIML可以为同一模板定义不同的目标。

句法

<srai> pattern </srai> 

以下是与srai相关的常用术语-

  • 符号还原

  • 分而治之

  • 同义词解析

  • 关键字检测

符号还原

符号归约技术用于简化模式。它有助于减少带有简单模式的复杂语法模式。

例如,考虑以下对话。

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

现在如果提出问题怎么办

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

在这里,<srai>标记起作用。它可以将用户模式作为模板。

步骤1:建立类别

<category>
   <pattern>WHO IS ALBERT EINSTEIN?</pattern>
   <template>Albert Einstein was a German physicist.</template>
</category>

<category>
   <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>
   </template>
   
</category>

里面创建srai.aiml C> AB>机器人>测试> AIML和srai.aiml.csv内C> AB>机器人>测试> aimlif目录。

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml

执行程序

打开命令提示符。转到C> ab>并键入以下命令-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

验证结果

您将看到以下输出-

Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.

分而治之

分而治之用于重覆子句以做出完整的答复。它有助于减少定义多个类别。

例如,考虑进行以下对话。

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

现在,这里的机器人有望回复GoodBye!每当用户在句子开头说“ 再见”时。

让我们在这里使用<srai>标签。

步骤1:建立类别

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

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

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

C> ab> bots> test> aiml中更新srai.aiml,并在C> ab> bots> test> aimlif目录中更新srai.aiml.csv

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
 
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml

执行程序

打开命令提示符。转到C> ab>并键入以下命令-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

验证结果

您将看到以下输出-

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

同义词解析

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

例如,考虑以下对话。

Human: Factory
Robot: Development Center!
Human: Industry
Robot: 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>

C> ab> bots> test> aiml中更新srai.aiml,并在C> ab> bots> test> aimlif目录中更新srai.aiml.csv

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
   <category>
      <pattern>FACTORY</pattern>
      <template>Development Center!</template>
   </category>
   
   <category>
      <pattern>INDUSTRY</pattern>
      <template>
         <srai>FACTORY</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml

执行程序

打开命令提示符。转到C> ab>并键入以下命令-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

验证结果

您将看到以下输出-

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

关键字检测

使用srai,当用户键入特定的关键字(例如School)时,无论句子中的“ school”在哪里,我们都可以返回简单的响应。

例如,考虑以下对话。

Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: 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>

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

C> ab> bots> test> aiml中更新srai.aiml,并在C> ab> bots> test> aimlif目录中更新srai.aiml.csv

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
   <category>
      <pattern>FACTORY</pattern>
      <template>Development Center!</template>
   </category>
   
   <category>
      <pattern>INDUSTRY</pattern>
      <template>
         <srai>FACTORY</srai>
      </template>
   </category>
   
   <category>
      <pattern>SCHOOL</pattern>
      <template>School is an important institution in a child's life.</template>
   </category>  
   
   <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>
   
   <category>
      <pattern>_ SCHOOL *</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml
0,SCHOOL,*,*,School is an important institution in a child's life.,srai.aiml
0,_ SCHOOL,*,*,<srai>SCHOOL</srai>,srai.aiml
0,SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml
0,_ SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml

执行程序

打开命令提示符。转到C> ab>并键入以下命令-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

验证结果

您将看到以下输出-

Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.
 上一页  打印页面

------分隔线----------------------------
标签(Tag):
------分隔线----------------------------
推荐内容
  • AIML-<random>标签

    random 标签用于获取随机响应。 此标签使AIML对相同的输入做出不同的响应。 random标...

  • AIML-<srai>标签

    srai 标签是多用途标签。 该标签使AIML可以为同一模板定义不同的目标。 句法 srai pat...

  • AIML-基本标签

    在本教程中,我们将讨论AIML的基本标记。 aiml -定义AIML文档的开头和结尾。 类别 -定...

  • AIML-简介

    AIML代表 人工智能标记语言 。 AIML是由Alicebot自由软件社区和Richard S. Wallace博...

  • XML序列化和反序列化教程

    序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将...

猜你感兴趣