目标中的一种模式多重响应

时间:2014-06-24 06:21:26

标签: chat chatbot aiml

我想制作一个聊天机器人,所以我的疑问是我如何以多种方式响应aiml中的单个模式? 例如,如果用户接下来问什么,聊天机器人应该响应step1 如果再问他接下来应该回应第2步。

4 个答案:

答案 0 :(得分:2)

您可以使用"那"模板中的标签,记住最后一个机器人语句并相应地回答,虽然这只给你一个级别的控制。如果你想要更多关卡,更好的方法是使用" think"设置主题。标签,然后定义将首先使用的主题特定模板。

答案 1 :(得分:0)

要为单个<pattern>提供多个回复,您可以使用<random><li>代码:

<category>
         <pattern>WHATS NEXT</pattern>
         <template><random>
             <li>Step 1</li>
             <li>Step 2</li>
         </random></template>
</category>

但是,响应将以随机生成,而不是按特定顺序生成。

例如,如果用户输入&#34;接下来会是什么?&#34;第一次,响应可能是&#34;步骤1&#34;并且下次用户输入相同的关键字时,响应可能仍然是&#34;步骤1&#34;。

答案 2 :(得分:0)

首先,您需要一个知道步骤的类别,并以定义的格式返回答案。在我的例子中,格式是

  

进行上一步* *

其中第一个星号是步骤编号,第二个星号代表返回文本的其余部分。这是类别:

<category>
         <pattern>MAKING TOAST STEP *</pattern>
         <template>
             <set var="step"><star/></set>
             <condition var="step">
                 <li value="1">Make toast step 1, get some bread</li>
                 <li value="2">Make toast step 2, put the bread in the toaster</li>
                 <li value="3">Make toast step 3, wait until it pops up</li>
                 <li>Make toast step 4, eat the toast</li>
             </condition>
         </template>
</category>

然后,您需要一个调用下一​​步 的类别,但前提是前一个答案是致敬问题 。此类别使用那个标记来确保仅在进行对话的吐司期间激活它。它使用 thatstar 来获取上一步骤编号,然后在步骤编号中添加一个:

<category>
         <pattern>WHAT IS NEXT</pattern>
         <that>MAKE TOAST STEP * *</that>
         <template>
             <set var="step"><calculate><thatstar/>+1</calculate></set>
             <srai>MAKING TOAST STEP <get var="step"/></srai>
         </template>
</category>

然后你需要一个类别来启动整个序列:

<category>
         <pattern>HOW DO I MAKE TOAST</pattern>
         <template>
             <srai>MAKING TOAST STEP 1</srai>
         </template>
</category>

这种方法的警告是(1)它使用 计算 标签,这不是标准AIML,但应该很容易编码。 (2)它使用AIML v2元素,例如与 get set 一起使用的变量。 (3)我没有测试过,但我相信这个过程应该有效。

答案 3 :(得分:0)

  <category> 
      <pattern>TEST SPLIT</pattern> 
      <template> 
        I don't want to talk about that now. 
        <split/> 
        I would rather talk about you. 
      </template> 
    </category>

执行<split/> Output Reference