我正在尝试理解 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>
是使用 _
的正确方法。