AIML代表人工智能标记语言. AIML由Alicebot自由软件社区和Richard S. Wallace博士在1995-2000期间开发. AIML用于创建或自定义Alicebot,这是一个基于A.L.I.C.E的聊天框应用程序. (人工语言互联网计算机实体)免费软件.
以下是AIML文档中常用的重要标签.
S.No. | AIML标签/描述 |
---|---|
1 | <aiml> 定义AIML文档的开头和结尾. |
2 | <category> 在Alicebot的知识中定义知识单元 base. |
3 | <pattern> 定义模式以匹配用户可以输入到Alicebot的内容. |
4 | <template> 定义一个响应Alicebot到用户的输入. |
我们将讨论中的每个标签a href ="https://img01.yuandaxia.cn/https://img01.yuandaxia.cn/Content/img/tutorials/aiml/aiml_basic_tags.htm"> AIML Basic标签章节.
以下是一些其他广泛使用的aiml标签.我们将在接下来的章节中详细讨论每个标签.
S.No. | AIML标签/描述 |
---|---|
1 | <star> 用于匹配< pattern>中的通配符 * 字符.标签. |
2 | <srai> 多用途标记,用于调用/匹配其他类别. |
3 | <random> 使用<random> 获得随机回复. |
4 | <li> 用于表示多个回复. |
5 | <set> 用于设置AIML变量中的值. |
6 | <get> 用于获取存储在AIML变量中的值. |
7 | <that> 在AIML中用于根据上下文做出回应. |
8 | <topic> 在AIML中用于存储上下文,以便以后的会话可以根据该上下文完成. |
9 | <think> 在AIML中用于存储变量而不通知用户. |
10 | <condition> 与编程语言中的switch语句类似.它有助于ALICE响应匹配的输入. |
AIML词汇使用单词,空格和两个特殊字符 * 和 _ 作为外卡. AIML解释器优先选择具有 _ 的模式而不是具有 * 的模式. AIML标签符合XML标准,模式不区分大小写.
<aiml version = "1.0.1" 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
本教程将指导您如何准备开发环境以开始使用AIML创建自动聊天软件.程序AB是由ALICE A.I开发和维护的AIML 2.0的参考实现.基础.本教程还将教您如何在设置Program AB库和减号之前设置JDK;
您可以从Oracle的Java站点下载最新版本的SDK : Java SE下载.将找到有关在下载文件中安装JDK的说明,请按照给出的说明安装和配置设置.最后设置PATH和JAVA_HOME环境变量来引用包含java和javac的目录,通常分别是java_install_dir/bin和java_install_dir.
如果你运行Windows并在C:中安装了JDK: \\ jdk1.7.0_75,你必须在C:\ autoexec.bat文件中放入以下行.
set PATH = C:\jdk1.7.0_75\bin;%PATH% set JAVA_HOME = C:\jdk1.7.0_75
或者,打开在Windows NT/2000/XP中,您也可以右键单击"我的电脑",选择"属性",然后选择"高级",再选择"环境变量".然后,您将更新PATH值并按下OK按钮.
在Unix(Solaris,Linux等)上,如果SDK安装在/usr/local/jdk1.7.0中_75并且您使用C shell,您可以将以下内容放入.cshrc文件中.
setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH setenv JAVA_HOME /usr/local/jdk1.7.0_75
或者,如果您使用集成开发环境(IDE) )如Borland JBuilder,Eclipse,IntelliJ IDEA或Sun ONE Studio,编译并运行一个简单的程序来确认IDE知道你在哪里安装Java,否则请按照IDE的给定文档进行适当的设置.
现在如果一切正常,则可以继续设置程序AB.以下是在您的计算机上下载和安装库的简单步骤.
选择是否要安装AIML在Windows或Unix上然后继续下一步下载.zip文件
从 https://code.google.com/p/program-ab/使用其 program-ab-0.0.4.3.zip 链接.
在编写本教程时,我在Windows机器上下载了 program-ab-0.0.4.3.zip ,当您解压缩下载的文件时,它将为您提供C:\\中的目录结构\\如下.
S.No. | 目录&描述 |
---|---|
1 | c:/ab/bots 存储AIML机器人 |
2 | c :/ab/lib 存储Java库 |
3 | c:/ab/out Java类文件目录 |
4 | c:/ab/run.bat 批处理用于运行程序AB的文件 |
完成最后一步后,您就可以继续了您将在下一章中看到您的第一个AIML示例.
让我们开始创建第一个只会问候的机器人用户键入 Hello Alic时, Hello User!的用户e .
如 AIML环境设置,我们在 C>中提取了program-ab的内容. ab 具有以下目录结构.
S.No. | 目录&描述 |
---|---|
1 | c:/ab/bots 存储AIML机器人 |
2 | c :/ab/lib 存储Java库 |
3 | c:/ab/out Java类文件目录 |
4 | c:/ab/run.bat 批处理用于运行程序AB的文件 |
现在,在 C>内创建目录测试ab>机器人并在其中创建以下目录.
S.No. | 目录&描述 |
---|---|
1 | c:/ab/bots/test/aiml 存储AIML文件 |
2 | c:/ab/bots/test/aimlif 存储AIMLIF文件 |
3 | c:/ab/bots/test/config 存储配置文件 |
4 | c:/ab/bots/test/sets 存储AIML集 |
5 | c:/ab/bots/test/maps 存储AIML地图 |
在 C>中创建test.aiml ab>机器人>测试> C>内的aiml 和test.aiml.csv ab>机器人>测试> aimlif 目录.
<?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>
0,HELLO ALICE,*,*,Hello User,test.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Working Directory = C:\ab Program AB 0.0.4.2 beta -- AI Foundation Reference AIML 2.0 implementation bot = test action = chat trace = false trace mode = false Name = test Path = C:\ab/bots/test C:\ab C:\ab/bots C:\ab/bots/test C:\ab/bots/test/aiml C:\ab/bots/test/aimlif C:\ab/bots/test/config C:\ab/bots/test/logs C:\ab/bots/test/sets C:\ab/bots/test/maps Preprocessor: 0 norms 0 persons 0 person2 Get Properties: C:\ab/bots/test/config/properties.txt addAIMLSets: C:\ab/bots/test/sets does not exist. addCategories: C:\ab/bots/test/aiml does not exist. AIML modified Tue Apr 07 22:24:29 IST 2015 AIMLIF modified Tue Apr 07 22:26:53 I ST 2015 No deleted.aiml.csv file found No deleted.aiml.csv file found Loading AIML files from C:\ab/bots/test/aimlif Reading Learnf file Loaded 1 categories in 0.009 sec --> Bot test 1 completed 0 deleted 0 unfinished (1[6])--HELLO-->(1[5])--ALICE-->(1[4])--<THAT>-->(1[3])--*-->(1[2])--<TOPIC>-->( 1[1])--*-->(0[null,null]) Hello User... 7 nodes 6 singletons 1 leaves 0 shortcuts 0 n-ary 6 branches 0.85714287 average branching Human: Type Hello Alice and see the result and then type anything else to see the changed result. Human: hello alice Robot: Hello User Human: bye Robot: I have no answer for that. Human:
键入 Hello Alice 并查看结果,然后键入其他内容以查看更改的结果.
Human: hello alice Robot: Hello User Human: bye Robot: I have no answer for that. Human:
AIML - 基本标签
在本教程中,我们将讨论基本标签AIML.
<aiml> : 定义AIML文档的开头和结尾.
<category> : 在Alicebot的知识库中定义知识单元.
<pattern> : 定义模式以匹配用户可以输入到Alicebot的模式.
<template> : 定义Alicebot对用户输入的响应.
以下AIML文件已作为参考使用.
<?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>
< aiml> tag标记AIML文档的开头和结尾.它包含版本和编码属性下的版本和编码信息. version属性存储ALICE chatterbot Knowledge Base,KB使用的AIML版本.例如,我们使用了1.0.1版本.此属性是可选的.
编码属性提供要在文档中使用的字符集.例如,我们使用了UTF-8.作为强制性要求,< aiml>标签必须包含至少一个< category>标签.我们可以创建多个AIML文件,其中每个AIML文件包含一个< aiml>标签.每个AIML文件的目的是将至少一个名为category的知识单元添加到ALICE chatterbot KB.
<aiml version = "1.0.1" encoding = "UTF-8"?> ... </aiml>
< category> tag是ALICE Bot的基础知识单元.每个类别包含 :
句子形式的用户输入,可以是断言,问题和惊叹号等用户输入可以包含通配符,如 * 和 _ .
对用户输入的响应由Alicebot提供.
可选上下文.
A < category> 标记必须包含< pattern> 和< template> 标记. < pattern> 表示用户输入,模板表示机器人的响应.
<category> <pattern> HELLO ALICE </pattern> <template> Hello User </template> </category>
在这里,如果用户输入 Hello Alice ,那么机器人将作为 Hello用户回复.
< pattern> tag表示用户的输入.它应该是< category>中的第一个标记.标签. <模式>标签可以包含通配符,以匹配多个句子作为用户输入.例如,在我们的示例中,< pattern>包含HELLO ALICE.
AIML不区分大小写.如果用户输入Hello Alice,hello alice,HELLO ALICE等,所有输入都是有效的,机器人将与HELLO ALICE匹配.
<category> <pattern> HELLO ALICE </pattern> <template> Hello User </template> </category>
此处,模板为"Hello User",表示机器人对用户输入的响应.
< template> tag表示机器人对用户的响应.它应该是< category>中的第二个标记.标签.这个<模板>标签可以保存数据,调用另一个程序,给出条件答案或委托给其他类别.
<category> <pattern> HELLO ALICE </pattern> <template> Hello User </template> </category>
此处,模板为"Hello User",表示机器人对用户输入的响应.
< 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>
如果用户输入"芒果是水果".然后机器人会回答"当芒果不是水果?"
在 C > ab > bots > test > aiml内创建star.aiml 和C > ab > bots > test > aimlif内创建star.aiml.csv .
<?xml version = "1.0" encoding = "UTF-8"?> <aiml version = "1.0.1" encoding = "UTF-8"?> <category> <pattern>I LIKE *</pattern> <template> I too like <star/>. </template> </category> <category> <pattern>A * IS A *</pattern> <template> How <star index = "1"/> can not be a <star index = "2"/>? </template> </category> </aiml>
0,I LIKE *,*,*,I too like <star/>.,star.aiml 0,A * IS A *,*,*,How <star index = "1"/> can not be a <star index = "2"/>?,star.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Human: I like mango Robot: I too like mango. Human: A mango is a fruit Robot: How mango can not be a fruit?
< star index ="1"/>通常用作< star/>
< 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> 标签有效.它可以将用户的模式作为模板.
<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>
在 C > ab > bots > test > aiml内创建star.aiml 和C > ab > bots > test > aimlif内创建star.aiml.csv .
<?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>
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.
Divide and Conquer用于在完成回复时重复使用子句.它有助于减少定义多个类别.
例如,考虑以下对话.
Human: Bye Robot: GoodBye! Human: Bye Alice! Robot: GoodBye!
现在,机器人应该回复 GoodBye!每当用户在开头的时候说再见句子.
让我们把< srai>标签放到这里工作.
<category> <pattern>BYE</pattern> <template>Good Bye!</template> </category>
<category> <pattern>BYE *</pattern> <template> <srai>BYE</srai> </template> </category>
更新 C > ab > bots > test > aiml内创建star.aiml 和C > ab > bots > test > aimlif内star.aiml.csv.
<?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>
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!
现在,只要用户说出工厂或<b,机器人就会回复开发中心!>行业.
让我们在这里使用< srai> 标签.
<category> <pattern>FACTORY</pattern> <template>Development Center!</template> </category>
<category> <pattern>INDUSTRY</pattern> <template> <srai>FACTORY</srai> </template> </category>
更新 C > ab > bots > test > aiml内创建star.aiml 和C > ab > bots > test > aimlif内star.aiml.csv
<?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>
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 ,我们可以在用户返回简单响应键入一个特定的关键词,比如学校,无论句子中出现"学校".
例如,考虑以下对话.
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> 标签.我们将在这里使用通配符.
<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>
更新 C > ab > bots > test > aiml内创建star.aiml 和C > ab > bots > test > aimlif内star.aiml.csv.
<?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>
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.
< random> 标记用于获取随机响应.此标记使AIML能够针对相同的输入做出不同的响应.<random>标签与< li>一起使用标签. <li>标签带有随机传递给用户的不同响应.
<random> <li> pattern1 </li> <li> pattern2 </li> ... <li> patternN </li> </random>
例如,请考虑以下对话.
Human: Hi Robot: Hello! Human: Hi Robot: Hi! Nice to meet you!
在 C > ab > bots > test > aiml内创建star.aiml 和C > ab > bots > test > aimlif内star.aiml.csv.
<?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>
0,HI,*,*, <random><li> Hello! </li><li> Hi! Nice to meet you! </li></random>,random.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Human: Hi Robot: Hi! Nice to meet you! Human: Hi Robot: Hello!
此处,响应可能因随机响应而异.
< set> 和< get> 标签用于处理AIML中的变量.变量可以是预定义变量或程序员创建的变量.
< set> tag用于设置变量中的值.
<set name = "variable-name"> variable-value </set>
< get> tag用于从变量中获取值.
<get name = "variable-name"></get>
例如,请考虑以下对话.
Human: I am Mahesh Robot: Hello Mahesh! Human: Good Night Robot: Good Night Mahesh! Thanks for the conversation!
在 C > ab > bots > test > aiml内创建setget.aiml 和C > ab > bots > test > aimlif内创建setget.aiml.csv.
<?xml version = "1.0" encoding = "UTF-8"?> <aiml version = "1.0.1" encoding = "UTF-8"?> <category> <pattern>I am *</pattern> <template> Hello <set name = "username"> <star/>! </set> </template> </category> <category> <pattern>Good Night</pattern> <template> Hi <get name = "username"/> Thanks for the conversation! </template> </category> </aiml>
0,I am *,*,*, Hello <set name = "username"> <star/>! </set>,setget.aiml 0,Good Night,*,*, Hi <get name = "username"/> Thanks for the conversation!,setget.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Human: I am Mahesh Robot: Hello Mahesh! Human: Good Night Robot: Good Night Mahesh! Thanks for the conversation!
< that> 标记在AIML中用于根据上下文进行响应.
<that> template </that>
例如,请考虑以下对话.
Human: Hi Alice! What about movies? Robot: Do you like comedy movies? Human: No Robot: Ok! But I like comedy movies.
在 C > ab > bots > test > aiml内创建that.aiml 和在C > ab > bots > test > aimlif内创建that.aiml.csv.
<?xml version = "1.0" encoding = "UTF-8"?> <aiml version = "1.0.1" encoding = "UTF-8"?> <category> <pattern>WHAT ABOUT MOVIES</pattern> <template>Do you like comedy movies</template> </category> <category> <pattern>YES</pattern> <that>Do you like comedy movies</that> <template>Nice, I like comedy movies too.</template> </category> <category> <pattern>NO</pattern> <that>Do you like comedy movies</that> <template>Ok! But I like comedy movies.</template> </category> </aiml>
0,WHAT ABOUT MOVIES,*,*,Do you like comedy movies,that.aiml 0,YES,Do you like comedy movies,*,Nice! I like comedy movies too.,that.aiml 0,NO,Do you like comedy movies,*,Ok! But I like comedy movies.,that.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Human: What about movies? Robot: Do you like comedy movies? Human: No Robot: Ok! But I like comedy movies.
< topic> 标记在AIML中用于存储上下文,以便以后的对话可以基于该上下文完成.通常,< topic> 标记用于是/否类型对话.它有助于AIML搜索在主题上下文中编写的类别.
使用< set>定义主题标签
<template> <set name = "topic"> topic-name </set> </template>
使用< topic>定义类别标签
<topic name = "topic-name"> <category> ... </category> </topic>
例如,考虑以下对话.
Human: let discuss movies Robot: Yes movies Human: Comedy movies are nice to watch Robot: Watching good movie refreshes our minds. Human: I like watching comedy Robot: I too like watching comedy.
此处机器人以"电影"为主题进行回应.
在 C > ab > bots > test > aiml内创建topic.aiml 和在C > ab > bots > test > aimlif内创建topic.aiml.csv.
<?xml version = "1.0" encoding = "UTF-8"?> <aiml version = "1.0.1" encoding = "UTF-8"?> <category> <pattern>LET DISCUSS MOVIES</pattern> <template>Yes <set name = "topic">movies</set></template> </category> <topic name = "movies"> <category> <pattern> * </pattern> <template>Watching good movie refreshes our minds.</template> </category> <category> <pattern> I LIKE WATCHING COMEDY! </pattern> <template>I like comedy movies too.</template> </category> </topic> </aiml>
0,LET DISCUSS MOVIES,*,*,Yes <set name = "topic">movies</set>,topic.aiml 0,*,*,movies,Watching good movie refreshes our minds.,topic.aiml 0,I LIKE WATCHING COMEDY!,*,movies,I like comedy movies too.,topic.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Human: let discuss movies Robot: Yes movies Human: Comedy movies are nice to watch Robot: Watching good movie refreshes our minds. Human: I like watching comedy Robot: I too like watching comedy.
< think> 标记在AIML中用于存储变量而不通知用户.
使用< think>存储值标签
<think> <set name = "variable-name"> variable-value </set> </think>
例如,请考虑以下对话.
Human: My name is Mahesh Robot: Hello! Human: Byeee Robot: Hi Mahesh Thanks for the conversation!
在 C > ab > bots > test > aiml内创建think.aiml 和在C > ab > bots > test > aimlif内创建think.aiml.csv.
<?xml version = "1.0" encoding = "UTF-8"?> <aiml version = "1.0.1" encoding = "UTF-8"?> <category> <pattern>My name is *</pattern> <template> Hello!<think><set name = "username"> <star/></set></think> </template> </category> <category> <pattern>Byeee</pattern> <template> Hi <get name = "username"/> Thanks for the conversation! </template> </category> </aiml>
0,My name is *,*,*, Hello! <think><set name = "username"> <star/></set></think>,think.aiml 0,Byeee,*,*, Hi <get name = "username"/> Thanks for the conversation!,think.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Human: My name is Mahesh Robot: Hello! Human: Byeee Robot: Hi Mahesh Thanks for the conversation!
< condition> 标记类似于编程语言中的switch语句.它有助于ALICE响应匹配的输入.
<condition name = "variable-name" value = "variable-value"/>
例如,请考虑以下对话.
Human: How are you feeling today Robot: I am happy!
这里我们存储了 happy 作为ALICE的状态,这就是"我很开心!"的回应方式.
在 C > ab > bots > test > aiml内创建condition.aiml 和在C > ab > bots > test > aimlif内创建condition.aiml.csv.
<?xml version = "1.0" encoding = "UTF-8"?> <aiml version = "1.0.1" encoding = "UTF-8"?> <category> <pattern> HOW ARE YOU FEELING TODAY </pattern> <template> <think><set name = "state"> happy</set></think> <condition name = "state" value = "happy"> I am happy! </condition> <condition name = "state" value = "sad"> I am sad! </condition> </template> </category> </aiml>
0,HOW ARE YOU FEELING TODAY,*,*, <think> <set name = "state"> happy</set> </think> <condition name = "state" value = "happy">I am happy!</condition> <condition name = "state" value = "sad">I am sad!</condition>,condition.aiml
打开命令提示符.转到 C> ab> 并输入以下命令 :
java -cp lib/Ab.jar Main bot = test action = chat trace = false
您将看到以下输出 :
Human: How are you feeling today Robot: I am happy!