我在 AIML 中获得了以下代码:
<category>
<pattern>TOP * *</pattern>
<template><star index="1"/></template>
</category>
应该返回单词列表的第一个元素。我知道 * 应该捕获一个或多个单词。是什么意思 * *?
我在 AIML 中获得了以下代码:
<category>
<pattern>TOP * *</pattern>
<template><star index="1"/></template>
</category>
应该返回单词列表的第一个元素。我知道 * 应该捕获一个或多个单词。是什么意思 * *?
正如您提到的 * 捕获一个或多个单词。第一颗星将捕获一个单词,其余的将由第二个单词捕获。您的模板仅使用第一个星号,因此是列表的第一个元素。
我知道你问这个已经有一段时间了。我遇到了类似的问题并找到了 XSPLITTER 词(与其他词一样,但用作标志),您可以做的(我现在正在做的工作)是过滤输入并添加与正则表达式匹配的 XSPLITTER 词你的翻译。或者,更简单的是,在您的情况下,您只需编辑 AIML 文件并将您的模式替换为:
<category>
<pattern>TOP * IN *</pattern>
<template><star index="1"/></template>
</category>
不太确定这是否有意义,因为我不知道你想在哪里设置什么,但作为一个起点,它可以工作。