我怎样才能在一个模式中有多个通配符

How can I have more than one Wildcard in a pattern

我正在使用 AIML 中的 XML 在 Pandoabots 中开发一个 AI 聊天机器人,但我对如何在不破坏模式的情况下拥有多个通配符感到困惑。

在这里,我试图在 Cardiff 之前和 Cardiff 之后存储一个像 "where" 这样的值,我希望程序能够获取任何关键字,如 "please",“?”和 "bot"。 但是,当我这样做时,会显示默认值,即“我对此没有答案。但是,并非所有问题的末尾都有 "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>

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

* 通配符表示至少有 1 个词,因此如果有人说 "Where is Cardiff" 不会被触发,因为 Cardiff 之后没有 1 个或多个词。您需要将其替换为 # 通配符,它​​表示零个或多个单词,因此 "Where is Cardiff" 和 "Where is Cardiff please" 将激活该类别。您不需要知道第二个通配符的值。

此外,您需要更改条件以检查 "where is" 而不仅仅是 "where"

 <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>