首页 > 解决方案 > 如何在一个模式中有多个通配符

问题描述

我正在使用 AIML 中的 XML 在 Pandoabots 中开发一个 AI 聊天机器人,我一直在思考如何在一个模式中拥有多个通配符而不会破坏它。

在这里,我试图在 Cardiff 之前和 Cardiff 之后存储像“where”这样的值,我希望程序能够接收任何关键字,例如“please”、“?” 和“机器人”。但是,当我这样做时,会显示默认值,即“我对此没有答案。但并非所有问题最后都会有“请”或“?”。

 <category>
     <pattern>* Cardiff *</pattern>
     <template><think><set name = "place"><star/></set><set name = "others"><star/></set></think>
         <condition name = "place">
             <li name ="Where">In wales</li>
         </condition>
     </template> 
 </category>

我一直在研究如何解决这个问题,但我还没有找到解决方案。

标签: xmlchatbotaiml

解决方案


* 通配符表示至少 1 个单词,因此如果有人说“Cardiff 在哪里”,则不会触发,因为 Cardiff 后面没有 1 个或多个单词。您需要将其替换为 # 通配符,它​​表示零个或多个单词,因此“卡迪夫在哪里”和“卡迪夫在哪里”将激活该类别。您不需要知道第二个通配符的值。

此外,您需要更改条件以检查“在哪里”,而不仅仅是“在哪里”

 <category>
     <pattern>* Cardiff #</pattern>
     <template>
         <think><set name="place"><star/></set></think>
         <condition name="place">
             <li name ="Where is">In wales</li>
         </condition>
     </template> 
 </category>

推荐阅读