首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AIML如何检查输入字符串是否与映射中的字符串匹配

AIML如何检查输入字符串是否与映射中的字符串匹配
EN

Stack Overflow用户
提问于 2020-02-01 00:48:27
回答 1查看 216关注 0票数 1

我正在尝试比较用户的输入是否与AIML中的预期答案匹配。我发现这段代码在值为true时工作得很好,但由于某种原因,我不能理解,当匹配为false时失败(没有匹配的并转到UDC)。如果它可以工作,我可以很容易地用我的地图结果替换第二个*。

来自:https://github.com/pandorabots/aiml-utilities/blob/master/lib/aimlstandardlibrary.aiml

代码语言:javascript
复制
<!-- STRING EQUALS-->
<category>
    <pattern>XEQ * XS *</pattern>
    <template>
        <learn>
            <category>
                <pattern>
                    <eval>
                        <uppercase>XFALSE <star/></uppercase>
                    </eval>
                </pattern>
                <template>TRUE</template>
            </category>
        </learn>
        <srai>XFALSE <star index="2"/></srai>
        <learn>
            <category>
                <pattern>
                    <eval>
                        <uppercase>XFALSE <star/></uppercase>
                    </eval>
                </pattern>
                <template>FALSE</template>
            </category>
        </learn>
    </template>
</category>

有没有人有更好的方法呢?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-01 04:05:45

是否包含了整个库AIML文件?你需要这个类别才能让它工作(它在文件的顶部):

代码语言:javascript
复制
<category>
  <pattern>
  XFALSE *
  </pattern>
  <template>FALSE</template>
</category>

如果没有它,将调用UDC。一种更有效的方法是使用条件标记。这样就不需要使用标记来设置额外的类别:

代码语言:javascript
复制
<category>
    <pattern>XEQ * XS *</pattern>
    <template>
        <think>
            <set name="value1"><star/></set>
            <set name="value2"><star index="2"/></set>
        </think>
        <condition name="value1">
            <li><value><get name="value2"/></value>TRUE</li>
            <li>FALSE</li>
        </condition>
    </template>
</category>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60008049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档