我试图将一些文件添加到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>
但它们都不起作用,无论是解释者还是目标本身都无法识别角色。
有没有办法正确匹配这些通配符?有什么建议吗? 非常感谢。
答案 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;她等等)