我正在尝试比较用户的输入是否与AIML中的预期答案匹配。我发现这段代码在值为true时工作得很好,但由于某种原因,我不能理解,当匹配为false时失败(没有匹配的并转到UDC)。如果它可以工作,我可以很容易地用我的地图结果替换第二个*。
来自:https://github.com/pandorabots/aiml-utilities/blob/master/lib/aimlstandardlibrary.aiml
<!-- 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>有没有人有更好的方法呢?非常感谢。
发布于 2020-02-01 04:05:45
是否包含了整个库AIML文件?你需要这个类别才能让它工作(它在文件的顶部):
<category>
<pattern>
XFALSE *
</pattern>
<template>FALSE</template>
</category>如果没有它,将调用UDC。一种更有效的方法是使用条件标记。这样就不需要使用标记来设置额外的类别:
<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>https://stackoverflow.com/questions/60008049
复制相似问题