【问题标题】:Aiml 1.0 - * patternAiml 1.0 - * 模式
【发布时间】:2017-06-10 09:37:23
【问题描述】:


我想知道如何创建与此对话匹配的 AIML:

User: What's my name?
Bot:  Right now I don't know. Tell me, what's your name?
User: Gandalf.
Bot:  Hello Gandalf.

所以我尝试使用这两个类别。

<category>
    <pattern>WHAT'S MY NAME?</pattern>
    <template>
        <condition name="name_set" value="S"> <get name="name"/></condition>
        <condition name="name_set" value="">Right now I don't know.Tell me, what's your name?</condition>
    </template>
</category>
<category>
    <pattern>*</pattern>
    <that>Right now I don't know.Tell me, what's your name?</that>
    <template><think><set name="name"><star/></set><set name="name_set">S</set></think>Hello <srai>WHAT'S MY NAME?</srai>.</template>
</category>

但我的机器人没有选择最后定义的模式,而是不断地回答默认答案,使用 * 模式设置在另一个类别中,但没有 that 标签。我做错了什么?

额外问题:您可能已经注意到我使用 name_set 全局变量来查看我是否存储了用户名:empty 表示 NO,S 表示是。我使用这个 escamotage 是因为在 Program-O 机器人中,AIML 验证器不允许我使用 exists 属性。如果有人知道更多可以解决问题的内容或有任何建议可以提供,请成为我的客人。

谢谢。

【问题讨论】:

    标签: xml bots chatbot aiml


    【解决方案1】:

    在我看来,类别中的&lt;that&gt; 不正确。如果我是正确的,那是指您的机器人输出的最后一句话。那么这可能对你更有效。

    <category>
        <pattern>*</pattern>
        <that>Tell me *</that>
        <template>
          <think>
           <set name="name"><star/></set>
           <set name="name_set">S</set>
          </think>
          Hello <srai>WHAT'S MY NAME?</srai>.
        </template>
    </category>
    

    【讨论】:

    • [已解决] 我使用您的技巧解决了问题,但方式不同。 标签等于 * Tell me *Thank you.
    猜你喜欢
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2012-07-31
    • 1970-01-01
    相关资源
    最近更新 更多