2013-03-12 113 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