aiml - 一个单词的最后一次出现

时间:2017-03-03 18:09:57

标签: artificial-intelligence bots aiml

我试图将一些文件添加到A.L.I.C.E. AIML chatbot(我目前正在使用AIML v1.0.0的Python解释器)。现在我遇到了一个问题:我在一个模式上使用两个通配符,并在单词TO上分隔它们。现在重点是第一个通配符也可以包含单词TO,因此它会导致错误:

<category>
    <pattern>SAY * TO *</pattern>
    <template>Ok, I will say "<star />" to "<star index="2" />"</template>
</category>

正常的谈话可能是:

-Client: Say Hi to mom
-Bot: Ok, I will say "Hi" to "mom"

但是这个其他的对话让我错了:

-Client: Say I have to go shopping to mom
-Bot: Ok, I will say "I have" to "go shopping to mom"

(请注意,机器人答案中的引号不存在,我只是把它们放在这里,这样你就可以看到我的意思了)
写完这篇文章后,我意识到我可以用一些标志来标记TO来识别它。我试过这些模式:

<pattern>SAY * "TO *</pattern>
<pattern>SAY * "TO" *</pattern>
<pattern>SAY * TO" *</pattern>
<pattern>SAY * -TO *</pattern>
<pattern>SAY * -TO- *</pattern>
<pattern>SAY * TO- *</pattern>

但它们都不起作用,无论是解释者还是目标本身都无法识别角色。

有没有办法正确匹配这些通配符?有什么建议吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

好吧,找到XSPLITTER标签并没有花太多时间,所以我必须像这样解决它

<category>
    <pattern>SAY * XSPLITTER TO *</pattern>
    <template>Ok, I will say <star/ > to <star index="2" /></template>
</category>

现在,输入必须有点奇怪:

-Client: say I have to go shopping xsplitter to mom
-Bot: Ok, I will say I have to go shopping to mom

我想我需要过滤输入,这样我就可以编辑它来自己添加xsplitter,还可以添加替换(me-&gt;你,他 - &gt;她等等)