php机器人聊天对话框,基于AIML的PHP聊天机器人
chatbot:基于AIML的PHP聊天天机器人
本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库,可以用来学习。代码可以从https://github.com/kompasim/chatbot下载。
0. 提醒
该聊天机器人是参考AIML 2.5和Program-P而写成的,这聊天机器人实现的aiml标签和标准的aiml标签由一定的差距,所以你从网上下载的aiml语料库可能没法正常工作。适用于UTF-8编码的,单词后缀根据不同的时态而改变的那些语言。感兴趣的朋友可以自己研究学习一下。
1. 介绍
这是一个用PHP写的aiml解析器,目前在PHP5.4环境上能正常运行。
2. 数据库配置
本程序用了MySQL数据库,你需要把chatbot.sql 文件倒入到你的数据库,然后在chatbot/Config.php文件里修改相关数据库配置变量.
4. aiml语料库资源
你可以直接编辑 aiml/chatbot.aiml 文件或者创建一个新的aiml文件然后在aiml/chatbot.aiml文件用include标签引入它。
5. 关于aiml文件
aiml 必须要放在 aiml 目录内.
chatbot.aiml 是入口文件 ,它里面的 aiml 标签可以包含多个 category 标签 , 一个 default标签和多个 include标签。
被你添加的其它 aiml 文件在根aiml标签里必须要包含一个 topic 标签 , 这个topic标签可以包含多个 category 标签和一个default标签 (这里的其他aiml文件不能写include标签,include标签只能出现在chatbot.aiml文件里)。
6. 测试聊天机器人
你可以打开index.php进行和机器人聊天做测试。
7. 调用聊天机器人
如果希望在自己的应用里面调用聊天机器人我们可以这样调用它的api api.php?requestType=talk&input=你好
8. 关于匹配规则
修改之后的匹配规则 :* ---> (\S+)
# ---> \S+
_ ---> .*
= ---> \S*
9. 关于AIML标签
本聊天机器人的aiml标签和标准aiml标签有所不同,我根据需求对标签做了一些个性化,我们可以在AIML.MD文件里面查到更多本聊天机器人所支持的标签。
10. 关于api.php的返回数据{
"status": "success",
"type": "talk",
"message": "haha ...",
"data": {
"arr1": {
"name11": "value11",
"name12": "value12"
},
"arr2": {
"name21": "value21",
"name22": "value22"
}
}
}
当你访问 api.php?requestType=talk&userInput=haha 的时候能得到以上json数据 .
haha
value11
value12
value21
value22
haha ...
11. 关于userId
当你给api.php以GET方式发送请求的时候带了userId参数, 这个参数会当作用户的唯一标识。若你没给这个参数,程序会用用户的ip当作唯一标示。$userId = isset($_REQUEST['userId']) ? $_REQUEST['userId'] : $_SERVER['REMOTE_ADDR'];
12. 关于多个chatbot
如果你把'chatbot/Config.php'文件里面的multiChatbot设置成false,所有的用户会分享一个default的chatbot。当你设置成true的时候每个用户都会拥有独立的chatbot,这些chatbot会吧userId作为唯一标示,每个用户给自己的chatbot设置相关名字,性别,年龄之类的属性。当你在写一个语音助手之类的时候多个chatbot功能会特别好用,因为用户可以给自己的语音助手设置名字了。$user = $this->getUser($this->_unique);
if ($this->_config->multiChatbot){
$bot = $this->getBot($this->_unique);
} else {
$bot = $this->getBot("default");
}
13. 关于userInfo和botInfo
userInfo和botInfo是指用户和聊天机器人的一些属性,例如姓名,年龄,性别等等。用户可以改变这些属性,当然这是我们当写aiml语料库的时候通过一些标签来实现的,我们可以从AIML.MD 学习set, get, del, user, bot等有关标签。
my name is *
ok , your name is
what is my name
oh , your name is
, i remembered it last time ...
14. 关于数据库
log 存储日志的表 .
property 是存储user和bot的有关属性的表 , 相当于我们聊天机器人的脑袋,帮我们记住一些属性。 set ,get, del, user, bot 等标签是用来操作这个表的 .
data 表用来存储用户的输入,机器人的回复,input , that, topic 等标签会操作Parser::$_data数组,每次程序开始运行的时候程序会从这个表加载数据到这个数组里,然后程序要结束的时候再会存储到这个表里面。表的唯一标示还是userId。
源码https://github.com/kompasim/chatbot
php机器人聊天对话框,基于AIML的PHP聊天机器人相关推荐
- chatbot:基于 AIML 的 PHP 聊天机器人
基于AIML的PHP聊天天机器人 本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库,可以用来学习.代码可以从https://github.com/k ...
- php mysql生日提醒_基于AIML的PHP聊天机器人
php中文网最新课程 每日17点准时技术干货分享 chatbot:基于AIML的PHP聊天天机器人 本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库 ...
- aiml php,chatbot:基于 AIML 的 PHP 聊天机器人
原标题:chatbot:基于 AIML 的 PHP 聊天机器人 紧跟技术风向标,不迷失但也绝不落后,Go技术大全公众号正式开启,欢迎关注. 基于AIML的PHP聊天天机器人 0. 介绍 该聊天机器人是 ...
- 自然语言处理--基于 AIML 的模式匹配聊天机器人
AIML 是一种基于 XML 标准的声明式语言,它规定了可以在机器人中使用的编程构想和数据结构.我们基于人工智能标记语言(AIML)来定义聊天机器人的模式和回复,构建模式匹配聊天机器人. 展示如何在聊 ...
- Python基于AIML智能聊天机器人实战视频教程-张子良-专题视频课程
Python基于AIML智能聊天机器人实战视频教程-244人已学习 课程介绍 Python基于AIML的智能聊天机器人开发实战课程,包括典型案例.基础理论.功能拓展.源码框架解读四个方 ...
- Python基于AIML智能聊天机器人实战(4)- 机器人自学习能力集成
一.前言 本文是<Python基于AIML智能聊天机器人实战>第四篇:AIML自学习能力集成: AIML是智能对话机器人具有里程碑意义的开源项目,曾斩获多项国际大奖,是基于检索技术的闲聊式 ...
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
我用 tensorflow 实现的"一个神经聊天模型":一个基于深度学习的聊天机器人 个工作尝试重现这个论文的结果A Neural Conversational Model(aka ...
- 【NLP实战】如何基于Tensorflow搭建一个聊天机器人
实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自动动手试一试. 本篇介绍如何基于tensorflow快速搭建一个基 ...
- 基于python的聊天软件的设计与实现_Python基于TCP实现会聊天的小机器人功能示例...
本文实例讲述了Python基于TCP实现会聊天的小机器人功能.分享给大家供大家参考,具体如下: 一 代码 1.服务端程序 import socket words ={'how are you?':'F ...
- 基于深度学习的聊天机器人
基于深度学习的聊天机器人-项目前期知识准备 文章目录 基于深度学习的聊天机器人-项目前期知识准备 一.TensorFlow框架简介 二.NLP基础 1. 常用的神经网络模型 2. 词法分析 3.贝叶斯 ...
最新文章
- crontab+php-cgi/php 定时执行PHP脚本
- (转)start_kernel 代码分析
- 接口 500_python接口的自我修炼之路
- 团队软件开发第一次冲刺(六)
- python处理pdf实例_python 使用pdfminer3k 读取PDF文档的例子
- 方法的重写-扩展父类方法,super对象调用父类方法
- 前端学习(516):两列布局的第三种解决方案
- 【TensorFlow】实现、训练并评估简单的回归模型和分类模型
- 关于家庭无线局域网的连接
- 首页静态生成 错误:客户端发现响应内容类型为“text/html”,但应该是“text/xml”...
- 【mysql问题】can't connect to mysql server on 'localhost' (10060)
- Android系统信息获取 之十一:获取IMEI,IMSI号
- KK录像机怎么用?KK录像机使用方法介绍
- XLua系列讲解_Helloworld
- 如何使用码云Gitee上传本地项目
- 计算机控制器如何调用打印机,怎样设置打印机的虚拟usb端口
- python列表所有元素平均值_python—组合数据类型
- 发票自动处理识别和分类
- 如何编辑styleGAN生成的图像的属性
- 读了7年通信最后还是转了码,这值得吗?