【问题标题】:How to find multiple patterns in single category using AIML如何使用 AIML 在单个类别中查找多个模式
【发布时间】:2016-02-21 04:00:00
【问题描述】:

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

【问题讨论】:

    标签: aiml


    【解决方案1】:

    在 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 的国家”。

    【讨论】:

      【解决方案2】:

      不,目前 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>
      

      【讨论】:

        猜你喜欢
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        • 1970-01-01
        • 2015-09-11
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多