Python AIML错误

时间:2016-08-16 18:53:53

标签: python aiml

我正在使用Python开始一个使用AIML的项目,当我运行脚本它给了我一个“找不到匹配项”#39;错误。这是Python代码:

import aiml
kernel = aiml.Kernel()
kernel.learn("bot.aiml")
while True:
    print kernel.respond(raw_input("\n>>"))

只是一个简单的AIML内核。这有什么问题吗?

5 个答案:

答案 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中。