AIML <srai>
标记是一个多功能标签。 此标记使AIML能够为同一模板定义不同的目标。
语法
<srai> pattern </srai>
XML
以下是与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>
XML
第2步: 使用<srai>
标签创建通用类别
<category>
<pattern>DO YOU KNOW WHO * IS?</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
XML
示例
在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>
XML
文件: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
Csv
执行程序
打开命令提示符,转到目录:D:/software/ab 并键入以下命令 -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Shell
执行上面程序,得到以下结果 -
Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.
Shell
2. 分而治之
分而治之用于重复使用子句来做出完整的回复。 它有助于减少定义多个类别。
例如,考虑以下对话。
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
每当用户在句子开头说Bye
时,机器人回复GoodBye!
。
在这里将使用<srai>
标签。参考以下实现步骤 -
第1步: 创建类别
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
XML
第2步: 使用<srai>
标签创建通用类别
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
XML
示例
在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>
XML
文件: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
Csv
执行程序
打开命令提示符。 进入到目录:D:/software/ab 并键入以下命令 -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Shell
执行上面示例代码,得到以下结果 -
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Shell
3. 同义词解析
同义词是具有相似含义的词。 机器人应该以相同的方式回复类似的单词。
例如,请考虑以下对话。
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
每当用户说Factory
或Industry
时,这里机器人回复:Development Center!
在这里使用<srai>
标签表示来实现。
第1步: 创建类别
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
XML
第2步: 使用<srai>
标签创建通用类别
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
XML
在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>
XML
文件: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
Csv
执行程序
打开命令提示符。 进入到目录:D:/software/ab/
并键入以下命令 -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Shell
执行上面命令,得到以下结果 -
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Shell
关键词检测
使用<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>
XML
第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>
XML
在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>
XML
文件: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
Csv
执行程序
打开命令提示符。 进入到目录:D:/software/ab/
并键入以下命令 -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Shell
执行上面命令,得到以下结果 -
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.