我一直在使用AIML制作聊天机器人。我无法在同一类别中找到多个模式。我们如何在模式中使用OR子句?
答案 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>