2

我正在尝试学习 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>

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

但是,如果他给我“奴隶”随机答案,而我说“不,我不知道”,他不会给我“所以我教过你一些东西”的答案”。他从某个地方得到答案else 在他的代码中,但考虑到我已经设置了“主题”和 <that> 标签,我已经非常具体并且希望得到我的自定义答案。

4

3 回答 3

1

<pattern>No _</pattern>

在您的目标文件中的某些位置。

于 2013-08-08T02:36:38.887 回答
0

标签的使用<that>是你的瓶颈。对于一张图片的价值,我在初始模板中更改了您的回复,并且它起作用了。

关于机器人的第二次回复。如果使用它,那么 rome 主题中的类别将永远不会起作用,因为<that>标签中的 40$'ers 必须是机器人的最后响应。

聊天机器人的回复可能有些混乱。之前话题总是改成“罗马”,但为了让话题“罗马”中的模式起作用,聊天机器人不得不谈论 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>
于 2014-05-03T05:10:34.620 回答
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>
于 2018-01-16T12:27:59.220 回答