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

时间:2016-02-21 04:00:00

标签: aiml

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

2 个答案:

答案 0 :(得分: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,它将回复&#34;是的,德国是一个国家&#34;。但是如果你输入IS EREWHON A COUNTRY它会回复#34;我从来没有听说过一个名叫Erewhon的国家&#34;。

答案 1 :(得分: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>