包含相同模式的多个AIML。如何根据用户偏好获取它

时间:2017-12-07 04:48:56

标签: artificial-intelligence chatbot aiml program-o

你好! 我有一个聊天机器人,其中包含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

让我的聊天机器人了解我的需求

2 个答案:

答案 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>
相关问题