使用AIML上下文时(通过
下面我首先显示脚本。然后,我展示了一些对话。我在响应后面用//标记了意外的部分。
我将此Aiml文件添加到标准的ALICE对话中。
脚本:
false
在下面的对话中,我用//?标记了意外的响应。
select()
您能解释两种意外的对话流程吗?
答案 0 :(得分:1)
<that>
元素优先于相同模式级别的其他模式 。我不知道您使用的是AIML v1还是v2,但是从广义上讲,有3种模式 [但请参见下面的说明]
您的意外响应是因为存在更高优先级的ALICE响应。例如,当机器人回复“步骤3”,而人类回答“否”时,您希望<pattern>*</pattern><that>STEP 3</that>
类别生效。但是,如果有更高级别的ALICE响应(例如<pattern>NO</pattern>
或<pattern>STEP _</pattern>
),则ALICE响应将在您的3级类别<pattern>*</pattern><that>STEP 3</that>
上生效。查找“驴友”类别的最快方法是问“否”,然后查看机器人的答复。您也可以搜索ALICE文件,但这将非常耗时。
[note] 在AIML v2中,至少有两个额外级别:下划线通配符上方的级别0,以及使用模式边集的级别2.5。但是,更简单的AIML v1级别可以解释您的异常情况。