我正在尝试PyAiml包来编写聊天机器人。我用a.L.I.C.E中的所有默认aiml文件编写了一个非常基本的程序。到目前为止,除了<;that>;标记外,一切都正常。我以为是会议的问题。然后我修复了会话。但在上下文对话中仍然没有这个标记。有人知道怎么做吗?或者PyAiml在标记解析方面有一些缺陷?在
这是我的bot程序和一个非常小的aiml文件,我正在测试:
测试机器人.py
import aiml
import marshal
import os
from pprint import pprint
BOOTSTRAP_FILE = "/var/www/html/chatbot/std-startup.xml"
BOT_SESSION_PATH = "/var/www/html/chatbot/"
sess_id = 'user_id_moshfiqur'
while True:
k = aiml.Kernel()
k.bootstrap(learnFiles=BOOTSTRAP_FILE, commands="load aiml b")
if os.path.isfile(BOT_SESSION_PATH + sess_id + ".ses"):
sessionFile = file(BOT_SESSION_PATH + sess_id + ".ses", "rb")
sessionData = marshal.load(sessionFile)
sessionFile.close()
for pred, value in sessionData.items():
k.setPredicate(pred, value, sess_id)
response = k.respond(raw_input(">> "), sessionID=sess_id)
sessionData = k.getSessionData(sess_id)
pprint(sessionData)
sessionFile = file(BOT_SESSION_PATH + sess_id + ".ses", "wb")
marshal.dump(sessionData, sessionFile)
sessionFile.close()
pprint("<< " + response)
最小.aiml
^{pr2}$
对我来说这是有效的。。。在
关于您的
<that>
标记问题,我能告诉您的是,AIML部分没问题,我提供的是使用该标记的替代方法(如果您计划使用它):上面的方法将保存导致下一部分对话的函数,如果有一个答案实际用于触发它的变量,那么它就可以使用了,这在你有一个模式说“是”的情况下很有用,例如,许多类别都需要它。 请注意,为了使代码更流畅,还有更多的地方需要改进。 如果您觉得这很有帮助,请告诉我,并希望我对此进行详细说明:)
相关问题 更多 >
编程相关推荐