如何使用 AIML 在单个类别中查找多个模式

How to find multiple patterns in single category using AIML

我一直在使用 AIML 制作聊天机器人。我无法在同一类别中找到多个模式。我们如何在模式中使用 OR 子句?

在 AIML 版本 2 中,您可以使用集或映射来执行此操作。基本上,您定义的集合是一个或多个成员的列表,然后您可以在模式中引用它。想象一下,你有一个包含世界各国名称的集合,你可以这样编码:

<category>
  <pattern>IS <set>countries</set> A COUNTRY</pattern>
  <template>
    Yes, <star/> is a country.
  </template>
</category>

<category>
  <pattern>IS * A COUNTRY</pattern>
  <template>
    I never heard of a country called <star/>.
  </template>
</category>

之所以可行,是因为该集合在 AIML 版本 2 中的优先级高于星标。因此,如果您输入 IS GERMANY A COUNTRY,它会回复 "Yes, Germany is a country"。但是如果你输入 IS EREWHON A COUNTRY 它会回复 "I never heard of a country called Erewhon".

否,目前 AIML 仅支持类别中的单一模式。但是,您可以定义多个模式并使用 'srai' 标签将它们重定向到原始模式,例如:

<category><pattern># USA # Capital #</pattern><template>Capital of USA is DC.</template></category>

<category><pattern># Capital # USA #</pattern><template><srai># USA # Capital #</srai></template></category>