专栏首页海天一树Python实现聊天机器人

Python实现聊天机器人

一、AIML是什么

AIML全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由RichardS. Wallace 博士和Alicebot开源软件组织于1995-2000年间发明创造的。AIML是一种为了匹配模式和确定响应而进行规则定义的 XML 格式。

二、实现第一个聊天机器人

(一)安装Python aiml库

pip install aiml

(二)获取alice资源

Python aiml安装完成后在Python安装目录下的 site-packages的aiml下会有alice子目录(比如D:\Program Files\Python36\Lib\site-packages\aiml\botdata\alice),这个是系统自带的一个简单的英文语料库。

(三)编程实现机器人聊天

1 程序

# -*- coding: utf-8 -*-
import aiml
import sys
import os


def get_module_dir(name):
    print("module", sys.modules[name])
    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 = aiml.Kernel()       # 创建机器人alice对象
alice.learn("startup.xml")  # 加载...\\botdata\\alice\\startup.xml
alice.respond('LOAD ALICE') # 加载...\\botdata\\alice目录下的语料库

while True:
    message = input("Enter your message >> ")
    if("exit" == message):
        exit()
    response = alice.respond(message) # 机器人应答
    print(response)

2 运行结果

三、参考资料

https://www.biaodianfu.com/python-aiml.html

本文分享自微信公众号 - 海天一树(gh_de7b45c40e8b)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • USACO的注册和使用

    2 在登录栏上面有“Register here for ausername/password”这一行,点击进去

    海天一树
  • 信息学竞赛,学C还是C++?

    先看C++和C的关系。C++是在C语言的基础上产生的,C++除了兼容C语言,还增加了标准模板库和面向对象两大特性。所谓标准模板库,就是C++中提供了一些好用的工...

    海天一树
  • NOIP 2011初赛普及组C/C++答案详解

    3 C 8G = 8 * 1024 M 8 * 1024 / 2 = 4096张 注意,题目说的是“大约”,不要求精确。

    海天一树
  • google protobuf学习笔记:编译安装、序列化、反序列化

    简介 protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实...

    _gongluck
  • 将Spring Boot作为守护进程启动的一种简单的方法

    我有一个SpringBoot应用,通过shell脚本start.sh启动。现在我期望通过守护进程的方式启动这个应用,这样我即使关掉终端,该应用也能继续运行。

    Jerry Wang
  • python实现进度条

    import sys import time def view_bar(num, total):   rate = num / total   rate_n...

    py3study
  • 放眼全球:原来自动驾驶车已经至少在47个城市跑起来了

    自动驾驶越来越热了,从一件事儿能看得出来,日前据海外一机构统计,放眼全球,已经有近50座城市在测试自动驾驶汽车。 这一数据,来自彭博慈善基金会和一家名叫阿斯彭研...

    企鹅号小编
  • 多研究些架构,少谈些框架(2)-- 微服务和充血模型

    上篇我们聊了微服务的DDD之间的关系,很多人还是觉得很虚幻,DDD那么复杂的理论,聚合根、值对象、事件溯源,到底我们该怎么入手呢? 实际上DDD和面向对象设计、...

    Java高级架构
  • 组合模式(统一叶子与组合对象)

    情景说明:海运轮船上有很多集装箱,集装箱里面又装满了更小的包装箱。一般情况下,集装箱与集装箱单独排列组合。包装箱与包装箱单独排列组合。虽然如此,但并不妨碍现实生...

    幺鹿
  • 再看Android官方文档之分享

    子勰

扫码关注云+社区

领取腾讯云代金券