我正在尝试理解 AIML 模式匹配的工作原理,遇到了一些问题。_ 和 * 之间有什么区别?我应该如何使用它们才能获得最佳匹配?
我只有 这份文档,但它缺少一些好的示例。
回答:
* 会匹配任何内容,除非存在可以匹配的单词或多个单词的模式。
_ 会匹配任何内容,即使存在可以匹配的单词或多个单词的模式。
<pattern>BYE _</pattern> 没有意义,因为 <pattern>BYE *</pattern> 匹配相同的模式,但 <pattern>BYE _</pattern> 将会覆盖 <pattern>BYE * SEE YOU</pattern>,而 BYE * 则不会。
谨慎使用 _,例如 _ 会匹配任何内容,你的机器人每次都会给出相同的答案。
如果你想捕获 “A COUPLE OF WORDS” 每次出现在句子中或句子结尾的情况,<pattern>_ A COUPLE OF WORDS *</pattern> 和 <pattern>_ A COUPLE OF WORDS</pattern> 是使用 _ 的正确方法。