2

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

4

2 回答 2

0

不,目前 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>
于 2017-05-31T06:06:10.317 回答
0

在 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,它将回复“是的,德国是一个国家”。但是,如果您输入 IS EREWHON A COUNTRY,它会回复“我从未听说过一个名为 Erewhon 的国家”。

于 2016-06-21T16:52:34.677 回答