AIML:没有得到正确的答案

时间:2013-03-31 17:20:22

标签: aiml

我正在努力学习AIML并且无法理解我出错的地方:

<aiml>
    <category>
        <pattern>I LIKE * ROME</pattern>
        <template>
            I love talking about 
            <set name="topic">rome</set>
            too!
            <random>
                <li>Did you know that slaves made up 40% of the population of Ancient Rome?</li>
                <li>Did you know the Colosseum could sit 250'000 people?</li>
            </random>
        </template>
    </category>
    <topic name="rome">
        <category>
            <pattern>No *</pattern>
            <that>Did you know that slaves made up 40% of the population of Ancient Rome?</that>
            <template>So I've taught you something!</template>
        </category>
    </topic>
</aiml>

第一部分工作正常,如果我输入类似:“我喜欢罗马的历史”,我会得到预期的默认答案和随机答案之一。

但是如果他给我“奴隶”随机答案并且我说“不,我不知道那个”,他就不会给我“所以我已经教你一些”回答“。他正在接受从他的代码中的其他地方回答,但考虑到我已经设置了“主题”和&lt; that&gt;标记,我已经非常具体,并期望我的自定义答案。

3 个答案:

答案 0 :(得分:1)

<pattern>No _</pattern>

你的目标档案中的某些地方。

答案 1 :(得分:0)

使用<that>标记是您的阻塞点。对于图片的价值,我在初始模板中更改了您的响应,并且它有效。

关于机器人的第二个回复。如果使用它,则罗马主题中的类别将永远不会起作用,因为<that>标记中的40个$&#39; ers必须是机器人的最后一个响应。

聊天机器人的回复可能会有些混乱。在主题总是更改为&#34; rome&#34;之前,但为了主题中的模式&#34; rome&#34;为了工作,聊天机器人不得不谈论40%的人。我只是将两者结合起来得到了相同的结果。

另请注意,<that>标记中的问号未放在那里。机器人将其剥离并存储剩余的结果。

<?xml version="1.0" encoding="UTF-8"?>
<aiml>
<category>
  <pattern>I LIKE * ROME</pattern>
  <template>
    <random>
      <li>Did you know that slaves made up 40% of the population of Ancient <set name="topic">Rome</set>?</li>
      <li>Did you know the Colosseum in could sit 250'000 people?</li>
    </random>
  </template>
</category>
<topic name="rome">
  <category>
    <pattern>No *</pattern>
    <that>Did you know that slaves made up 40% of the population of Ancient Rome</that>
    <template>
      So I've taught you something!
    </template>
  </category>
</topic>
</aiml>

答案 2 :(得分:0)

您可以在*标记中使用通配符(<that>),这样您就可以只匹配机器人答案的一部分(例如“您知道丢弃了”)。

另请注意,该主题可以在<think>标记内设置,该标记不显示其内容。

我使用Python AIML解释器测试了以下代码。它按预期工作,但当<that><pattern>标记的主题名称和内容为小写时,它不起作用。

<aiml>
<category>
    <pattern>I LIKE * ROME</pattern>
    <template>
        I love talking about Rome too!
        <think><set name="topic">ROME</set></think>
        <random>
            <li>Did you know that slaves made up 40 of the population of Ancient Rome?</li>
            <li>Did you know the Colosseum could sit 250'000 people?</li>
        </random>
    </template>
</category>
<topic name="ROME">
    <category>
        <pattern>NO</pattern>
        <that>* DID YOU KNOW THAT SLAVES MADE UP *</that>
        <template>So I've taught you something!</template>
    </category>
</topic>
</aiml>