用aiml构建英语聊天机器人

用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 aiml
import sys
import 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 file
    path = 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.brn
if os.path.isfile("bot_brain.brn"):
    alice.bootstrap(brainFile = "bot_brain.brn")
else:
    alice.learn("startup.xml") # 加载...\\botdata\\alice\\startup.xml
    alice.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)

参考资料

  1. 用AIML实现的Python人工智能聊天机器人
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值