AIML <srai>标记

广告位

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

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

语法

<srai> pattern </srai> 

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

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

1. 符号缩减

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

例如,请考虑以下对话。

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> 

示例
D:/software/ab/bots/test/aiml目录中创建文件:srai.aiml,并在D:/software/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> </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 

执行程序

打开命令提示符,转到目录:D:/software/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. 

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> 

示例

D:/software/ab/bots/test/aiml目录中创建文件:srai.aiml,并在D:/software/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> 

文件:srai.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 

执行程序

打开命令提示符。 进入到目录:D:/software/ab 并键入以下命令 –

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

执行上面示例代码,得到以下结果 –

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

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> 

D:/software/ab/bots/test/aiml目录中创建:srai.aiml 文件,以及在D:/software/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> 

文件:srai.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 

执行程序
打开命令提示符。 进入到目录:D:/software/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. 

在这里,每当用户在句子中包含: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>  <category>    <pattern>_ SCHOOL *</pattern>    <template>       <srai>SCHOOL</srai>    </template> </category> 

D:/software/ab/bots/test/aiml目录中创建:srai.aiml 文件,以及在D:/software/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> 

文件:srai.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 

执行程序
打开命令提示符。 进入到目录:D:/software/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. 

  

拾荒的老头

关于作者: 拾荒的老头

为您推荐