Aiml 艾米尔:没有得到正确的答案

Aiml 艾米尔:没有得到正确的答案,aiml,Aiml,我正在努力学习AIML,但不明白我错在哪里: <aiml> <category> <pattern>I LIKE * ROME</pattern> <template> I love talking about <set name="topic">rome</set> too!

我正在努力学习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>

我喜欢罗马
我喜欢谈论
罗马
也
  • 你知道奴隶占古罗马人口的40%吗
  • 你知道竞技场能容纳25万人吗
  • 没有* 你知道奴隶占古罗马人口的40%吗? 所以我教了你一些东西!
    第一部分很好,如果我输入“我喜欢罗马的历史”,我会得到预期的默认答案和一个随机答案

    但是如果他给了我“奴隶”随机答案,而我说“不,我不知道”,他就不会给我“所以我教过你一些”答案。他是从他的代码中的其他地方得到答案的,但考虑到我已经设置了“主题”“还有标签,我已经非常具体了,希望能得到我的自定义答案。

    <pattern>No _</pattern>
    
    否_
    
    在aiml文件中的某些地方。

    使用
    标记是您的瓶颈。为了一张图片的价值,我在初始模板中更改了您的响应,它成功了

    关于bot的第二个回复。如果使用了它,那么rome主题中的类别将永远不会起作用,因为
    标记中的40$'ers必须是bot的最后一个响应

    聊天机器人的回复可能有些混乱。以前,主题总是改为“罗马”,但为了让主题“罗马”中的模式起作用,聊天机器人必须谈论40%的人。我只是把这两者结合起来得到了相同的结果

    还要注意,
    标记中的问号没有放在那里。机器人会将其剥离并存储剩余结果

    <?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>
    
    
    我喜欢罗马
    
  • 你知道奴隶占古罗马人口的40%吗
  • 你知道罗马圆形竞技场能容纳25万人吗
  • 没有* 你知道奴隶占古罗马人口的40%吗 所以我教了你一些东西!
    您可以在
    标记中使用通配符(
    *
    ),因此您只能匹配bot答案的一部分(例如,“您知道奴隶是由谁组成的吗”)

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

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

    <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>
    
    
    我喜欢罗马
    我也喜欢谈论罗马!
    罗马
    
  • 你知道奴隶占古罗马人口的40吗
  • 你知道竞技场能容纳25万人吗
  • 不 *你知不知道奴隶们是虚构的* 所以我教了你一些东西!