我正在开始实现 PyAIML 的Python项目,我编写了以下代码来为我的项目创建一个大脑:
import aiml
k=aiml.Kernel()
k.learn("std-startup.xml")
k.respond("LOAD AIML B")
k.saveBrain("jarvis.brn")
当我运行该程序时,我收到此错误:WARNING: No match found for input: LOAD AIML B
我知道我需要下载 AIML 设置才能开始开发。所以我做到了,但我被困在那里。
请帮忙。我是一个菜鸟程序员,所以不要因为这个愚蠢的错误而对我粗暴。
提前致谢!
答案 0 :(得分:4)
如果你传递的文件不存在,.learn()
方法不会抛出错误,我猜你正试图从"std-startup.xml"
学习模式,而你的目录中没有这个文件。
确保文件 std-startup.xml 位于您运行脚本的目录中。您还应该在工作目录中有一个名为 standard 的目录,其中包含标准的aiml文件集。基本上你的目录应如下所示:
mydir/my_script.py
mydir/std-startup.xml
mydir/standard/a-bunch-of-std-aiml-files.aiml
可以在pyaiml source forge site上的“其他文件/标准AIML集/”文件夹中找到这些文件。转到该文件夹并下载其中一个tarball或zip。
答案 1 :(得分:2)
一些事情:
如果你的AIML正确加载,pyAIML会回复一行,其内容如下:
Loading std-startup.aiml... done (1.00 seconds)
如果找不到要加载的文件,则不一定会抛出错误,因此如果您没有看到此行,则pyAIML尚未加载AIML文件。
我也没有在sourceforge目录中看到'std-startup.xml',但这不重要。您加载的所有内容都是允许您测试内核的任何AIML文件。尝试在/ aiml目录中加载'self-test.aiml'文件。 (仔细检查以确保代码中的文件后缀是.aiml而不是.xml)
k.respond()
用于给机器人一些输入,'LOAD AIML B'只是一个测试用语。一旦你加载'self-test.aiml',试试k.respond('测试日期'),你应该得到
The date is Wed Mar 13 01:37:07 2013
作为回应。