用aiml构建英语聊天机器人
整体思路
-
安装aiml库
-
获取语料库路径
获取aiml的安装路径
- 补充路径名称
- 切换到语料库所在工作目录(所有的语料库,是可以自己补充修改的,这里就先用现成的)
创建机器人alice对象
加载语料库
- 如果是第一次加载语料库,读取数据,同时保存资料至
bot_brain.brn
bot_brain.brn
正式开始聊天
- 如果遇到用户输入
exit
,就退出聊天
运行界面
前面的加载过程,是为了调试。实际使用的时候,可以全部注释掉,直接开始对话。
输入
exit
,程序会自动退出
安装库
安装
aiml 0.9.2
库:https://pypi.org/project/aiml/
pip install aiml
完整代码
# -*- coding: utf-8 -*-# 加载库import aimlimport sysimport os# 获取aiml的安装路径def get_module_dir(name):print(\"module\", sys.modules[name])# __file__ is the pathname of the file from which the module was loaded, if it was loaded from a filepath = getattr(sys.modules[name], \'__file__\', None)print(path)if not path:raise AttributeError(\'module %s has not attribute __file__\' % name)return os.path.dirname(os.path.abspath(path))# 补充路径名称alice_path = get_module_dir(\'aiml\') + \'\\\\botdata\\\\alice\'# 切换到语料库所在工作目录os.chdir(alice_path)# 创建机器人alice对象alice = aiml.Kernel()print(\"正在加载语料库\")# 这里做一个判断# 如果是第一次加载语料库,就进入else部分,读取数据,同时保存资料至bot_brain.brn# 如果是之后再加载语料库,就不需要读取所有数据了,直接读取保存数据bot_brain.brnif os.path.isfile(\"bot_brain.brn\"):alice.bootstrap(brainFile = \"bot_brain.brn\")else:alice.learn(\"startup.xml\") # 加载...\\\\botdata\\\\alice\\\\startup.xmlalice.respond(\'LOAD ALICE\') # 加载...\\\\botdata\\\\alice目录下的语料库alice.saveBrain(\"bot_brain.brn\")print(\"数据加载完毕,开始对话\\n\")# 正式开始聊天while True:message = input(\"Enter your message >> \")if (\"exit\" == message):# 如果输入exit,程序退出exit()response = alice.respond(message) # 机器人应答print(response)break # 结束循环response = alice.respond(message) # 机器人应答print(response)
参考资料
- 用AIML实现的Python人工智能聊天机器人