4

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

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

提前致谢!

4

2 回答 2

4

如果您传递的文件不存在,该.learn()方法不会抛出错误,我猜您正在尝试学习模式,"std-startup.xml"而您的目录中没有此文件。

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

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

这些文件可以在pyaiml source forge 站点上的“Other Files/Standard AIML Set/”文件夹中找到。转到该文件夹​​并下载其中一个 tarball 或 zip。

于 2013-03-12T01:05:26.843 回答
3

一些东西:

  1. 如果您的 AIML 加载正确,pyAIML 将响应如下内容: Loading std-startup.aiml... done (1.00 seconds) 如果找不到要加载的文件,它不一定会抛出错误,因此如果您没有看到此行,则 pyAIML 尚未加载AIML 文件。

  2. 我也没有在 sourceforge 目录中看到“std-startup.xml”,但这不重要。您加载的只是任何允许您测试内核的 AIML 文件。尝试在 /aiml 目录中加载“self-test.aiml”文件。(仔细检查以确保代码中的文件后缀是 .aiml 而不是 .xml)

  3. k.respond()用于给机器人一些输入,“LOAD AIML B”只是一个测试短语。一旦你加载了'self-test.aiml'试试k.respond('test date'),你应该得到

The date is Wed Mar 13 01:37:07 2013作为回应。

于 2013-03-13T05:40:47.447 回答