你好!
我有一个聊天机器人,其中包含n
个AIML文件。每个AIML文件都与不同的主题相关。但是它可能包含相同的模式,这些模式在从聊天机器人获得回复时会导致冲突。我想确定用户正在寻找哪个主题。
那么如何根据此要求配置聊天机器人呢?
AIML文件1
<category>
<pattern>ABC</pattern>
<template>abcdefghijklmnopqrstuvwxyz</template>
</category>
AIML文件2
<category>
<pattern>ABC</pattern>
<template>1234567890ABCD</template>
</category>
两者都与一个聊天机器人相关联。因此,作为最终用户,我希望从AIML file 2
获得答案。如何使用program-o
答案 0 :(得分:0)
我认为您可能需要查看topic
标记。
概念是botmaster使用
<set_topic>
标记来设置正在讨论的当前主题。设置主题后,当客户端在ALICE语句中键入以查找响应时,将首先搜索与当前主题匹配的<topic>
标记中定义的类别 - 在任何非主题类别之前,或默认类别。如果当前主题中未定义匹配类别,则搜索未在主题标签中定义的任何类别。如前所述,您可以创建在不同主题中使用相同<pattern>
个短语的类别,每个类别都有不同的响应,以满足当前主题。
大胆是我的重点。
答案 1 :(得分:0)
您可以使用上一个答案中描述的主题执行此操作,但AIML解释程序会以不同方式实现主题,具体取决于您是否使用Pandorabots,Alice或AIML的v1或v2。
以另一种方式看待这个问题:当您将更多类别和文件加载到聊天机器人时,他们需要更具体。因此,如果可能的话,根据他们回答的问题类型,使您的ABC模式更具体。
与主题类似的另一种方法(但不使用AIML解释器的主题处理)是将先前类别中的全局谓词设置为感兴趣的主题。假设您拥有全球财产&#34; subject&#34;你设置为&#34; text&#34;或&#34;数字&#34;在其他类别。然后,您可以按如下方式合并ABC模式:
<category>
<pattern>ABC</pattern>
<template>
<condition>
<li name="subject" value="text">abcdef...</li>
<li name="subject" value="numbers">0123456789</li>
<li>?</li>
</condition>
</template>
</category>