我正在使用Python开始一个使用AIML的项目,当我运行脚本它给了我一个“找不到匹配项”#39;错误。这是Python代码:
import aiml
kernel = aiml.Kernel()
kernel.learn("bot.aiml")
while True:
print kernel.respond(raw_input("\n>>"))
只是一个简单的AIML内核。这有什么问题吗?
答案 0 :(得分:0)
如果你有兴趣,我有一个更好的python脚本
import aiml
import sys <br>
brainLoaded = False
forceReload = False
while not brainLoaded:
if forceReload or (len(sys.argv) >= 2 and sys.argv[1] == "reload"):
kern.bootstrap(learnFiles="Database.xml", commands="load aiml b")
brainLoaded = True
kern.saveBrain("Cache.brn")
else:
# Attempt to load the brain file. If it fails, fall back on the Reload
try:
# It is our cache file.
kern.bootstrap(brainFile = "Cache.brn")
brainLoaded = True
except:
forceReload = True
# Enter the main input/output loop.
print "Enter your message for the chatbot"
while(True):
print kern.respond(raw_input("> "))
注意:您需要创建一个文件夹数据库,用于放置AIML文件 和一个文件Database.xml
答案 1 :(得分:0)
&#34;未找到输入匹配&#34;发生警告是因为&#34; bot.aiml&#34;确实有输入的匹配输出。尝试包含如下所示的默认响应:
<category>
<pattern>*</pattern>
<template>
Sorry. I didn't quite get that.
</template>
</category>
答案 2 :(得分:0)
尝试删除代码中的'print'语句
import aiml
kernel = aiml.Kernel()
kernel.learn("bot.aiml")
while True:
kernel.respond(raw_input("\n>>"))
答案 3 :(得分:0)
您必须将大写字母 .aiml 中的句子写到<pattern>
标记中。但是您可以将输入的内容写成小写和大写。否则,您将收到类似的错误。例如:
<category>
<pattern>WHAT IS YOUR NAME ?</pattern>
<template>My name is robot.</template>
</category
答案 4 :(得分:0)
好吧,如果有人需要它用于 Python 3,那么应该做的只是改变 print 函数的语法。在python2中它接受不带括号的函数,但在python3中必须使用它。
另一个观察结果是 raw_input() 函数已在 python3 中重命名为 input()。
所以解决这个语法错误的方法很简单:
while True:
print(kernel.respond(input("\n>>")))
我们在 print 函数中添加了括号,包括要显示的内容并开始使用 input() 函数,因为没有更多的 raw_input () 在python3中。