2013-03-12 459 views
4

我开始在Python中的项目,实现PyAIML,我写了下面的代码来创建一个大脑为我的项目:PyAIML不加载启动

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集才能开始开发。所以我做到了,但我被困在那里。

请帮忙。我是一个noob程序员,所以不要因为这个愚蠢的错误而粗暴对待我。

在此先感谢!

回答

4

如果你传递的文件不存在,.learn()方法不会抛出错误,我猜你正试图从"std-startup.xml"中学习模式,而不在你的目录中存在这个文件。

确保文件std-startup.xml位于您正在运行脚本的目录中。您的工作目录中还应该有一个名为的标准目录,该目录包含标准的aiml文件集。基本上,你的目录应该是这样的:

mydir/my_script.py 
mydir/std-startup.xml 
mydir/standard/a-bunch-of-std-aiml-files.aiml 

这些文件可在“其他文件/标准AIML设置/”文件夹中找到的pyaiml source forge site。转到该文件夹​​并下载其中一个tarball或zip。

+0

我有一个包含所有AIML文件的目录(我想它是带有“.aiml”文件扩展名的文件),但std-startup.xml不存在于系统中的任何地方。任何提示呢? – 2013-03-12 01:16:31

+0

文件** std-startup.xml **应与脚本位于同一目录中。你可以从我的文章中的链接中获得它(它与标准AIML集合中的相同压缩包)。从这个文件中学习模式,然后调用'.respond(“LOAD AIML B”)'会导致标准AIML集合中的模式被学习,该模式应该在名为** standard **的目录中。 – 2013-03-12 01:18:52

+0

谢谢!我的ALICE集缺少std文件,因此提出了这个问题。对不便之处:( – 2013-03-12 01:32:06

2

有几件事情:

  1. 如果您的AIML正常载入,pyAIML将与行会读一些模棱两可的话: Loading std-startup.aiml... done (1.00 seconds) 它不一定会抛出一个错误,如果它没有找到一个文件加载,所以如果你没有看到这一行,pyAIML尚未加载AIML文件。

  2. 我在sourceforge目录中看不到'std-startup.xml',但这不应该。你所加载的所有内容都是允许你测试内核的任何AIML文件。请尝试将“self-test.aiml”文件加载到/ aiml目录中。 (仔细检查,以确保在你的代码的文件后缀是.aiml而不是.XML)

  3. k.respond()是给机器人的一些输入“LOAD AIML B”只是测试短语。一旦你载入“自我test.aiml”尝试k.respond(“考试日期”),你应该在响应得到

The date is Wed Mar 13 01:37:07 2013