基于Python如何使用AIML搭建聊天机器人


Posted in Python onJanuary 27, 2016

借助 Python 的 AIML 包,我们很容易实现人工智能聊天机器人。AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。

AIML 是什么?

AIML由Richard Wallace发明。他设计了一个名为 A.L.I.C.E. (Artificial Linguistics Internet Computer Entity 人工语言网计算机实体) 的机器人,并获得了多项人工智能大奖。有趣的是,图灵测试的其中一项就在寻找这样的人工智能:人与机器人通过文本界面展开数分钟的交流,以此查看机器人是否会被当作人类。AIML是一种为了匹配模式和确定响应而进行规则定义的 XML 格式。

AIML的官方网站:ALICE。

本文简单介绍下如何用Python编写简单的聊天机器人。

1. 安装Python aiml库

pip install aiml

2. 获取alice资源

Python aiml安装完成后在Python安装目录下的 Lib/site-packages/aiml下会有alice子目录,将此目录复制到工作区。
或者在Google code上下载alice brain: aiml-en-us-foundation-alice.v1-9.zip

3. Python下加载alice

取得alice资源之后就可以直接利用Python aiml库加载alice brain了:

import aiml
os.chdir('./res/alice') #切换工作目录到alice文件夹下,视具体情况而定
alice = aiml.Kernel()
alice.learn("startup.xml")
alice.respond('LOAD ALICE')

注意加载时需要切换工作目录到alice下。

4. 与alice聊天

加载之后就可以与alice聊天了,每次只需要调用respond接口:

alice.respond('hello') #这里的hello即为发给机器人的信息

5. 用Tornado搭建聊天机器人网站

利用Tornado可以很方便地搭建一个web接口的聊天机器人。具体的代码可以在此链接下在:web接口的聊天机器人。
下载此代码之后直接运行main.py即可,然后可以通过浏览器访问url与聊天机器人,url类似http://localhost/aiml?req=hello的形式(req参数即为发给机器人的信息)。

注意要运行此代码,需要安装Python 的aiml与Tornado库。

lwons.com上已经搭建了这样的web接口,可以访问http://lwons.com/aiml?req=hello来测试下。

6. 搭建聊天机器人微信订阅号

上一步的web接口可以很方便地改造成一个微信订阅号,实现的效果可以添加微信订阅号 CuriousGuys 后直接发送消息。如果需要微信订阅号的代码可以私信我。

订阅号效果截图:

基于Python如何使用AIML搭建聊天机器人

以上所述给大家介绍了基于Python如何使用AIML搭建聊天机器人的相关内容,希望本文所述对大家有所帮助。

Python 相关文章推荐
删除目录下相同文件的python代码(逐级优化)
May 25 Python
Python中http请求方法库汇总
Jan 06 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
python应用文件读取与登录注册功能
Sep 23 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
python将音频进行变速的操作方法
Apr 08 Python
python 一维二维插值实例
Apr 22 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
使用Python写个小监控
Jan 27 #Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 #Python
Python图像灰度变换及图像数组操作
Jan 27 #Python
让python在hadoop上跑起来
Jan 27 #Python
CentOS安装pillow报错的解决方法
Jan 27 #Python
python实现文本去重且不打乱原本顺序
Jan 26 #Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 #Python
You might like
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
实现“上一页”和“下一页按钮
2006/10/09 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
详解angular2 控制视图的封装模式
2018/12/27 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
Python中的with...as用法介绍
2015/05/28 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
python实现简单俄罗斯方块
2020/03/13 Python
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
优秀学生干部个人的自我评价
2013/10/04 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
大学社团计划书
2014/05/01 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
亮剑观后感600字
2015/06/05 职场文书
导游词之千岛湖
2019/09/23 职场文书