基于AIML的PHP聊天天机器人

本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库,可以用来学习。代码可以从https://github.com/kompasim/c...下载。

English

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数据 .

<category><pattern>haha</pattern><template><data name="arr1"><attr name="name11">value11</attr><attr name="name12">value12</attr></data><data name="arr2"><attr name="name21">value21</attr><attr name="name22">value22</attr></data>haha ...</template>
</category>

11. 关于userId

当你给api.phpGET方式发送请求的时候带了userId参数, 这个参数会当作用户的唯一标识。若你没给这个参数,程序会用用户的ip当作唯一标示。

$userId = isset($_REQUEST['userId']) ? $_REQUEST['userId'] : $_SERVER['REMOTE_ADDR'];

12. 关于多个chatbot

如果你把'chatbot/Config.php'文件里面的multiChatbot设置成false,所有的用户会分享一个defaultchatbot。当你设置成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等有关标签。

<category><pattern>my name is *</pattern><template>ok , your name is<star/><set type="user" name="name"><star/></set></template>
</category><category><pattern>what is my name</pattern><template>oh , your name is<get type="user" name="name"/>, i remembered it last time ...</template>
</category>

14. 关于数据库

log 存储日志的表 .

property 是存储userbot的有关属性的表 , 相当于我们聊天机器人的脑袋,帮我们记住一些属性。 set ,get, del, user, bot 等标签是用来操作这个表的 .

data 表用来存储用户的输入,机器人的回复,input , that, topic 等标签会操作Parser::$_data数组,每次程序开始运行的时候程序会从这个表加载数据到这个数组里,然后程序要结束的时候再会存储到这个表里面。表的唯一标示还是userId


源码

https://github.com/kompasim/chatbot

chatbot:基于 AIML 的 PHP 聊天机器人相关推荐

  1. aiml php,chatbot:基于 AIML 的 PHP 聊天机器人

    原标题:chatbot:基于 AIML 的 PHP 聊天机器人 紧跟技术风向标,不迷失但也绝不落后,Go技术大全公众号正式开启,欢迎关注. 基于AIML的PHP聊天天机器人 0. 介绍 该聊天机器人是 ...

  2. php mysql生日提醒_基于AIML的PHP聊天机器人

    php中文网最新课程 每日17点准时技术干货分享 chatbot:基于AIML的PHP聊天天机器人 本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库 ...

  3. 自然语言处理--基于 AIML 的模式匹配聊天机器人

    AIML 是一种基于 XML 标准的声明式语言,它规定了可以在机器人中使用的编程构想和数据结构.我们基于人工智能标记语言(AIML)来定义聊天机器人的模式和回复,构建模式匹配聊天机器人. 展示如何在聊 ...

  4. 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人

    我用 tensorflow 实现的"一个神经聊天模型":一个基于深度学习的聊天机器人 个工作尝试重现这个论文的结果A Neural Conversational Model(aka ...

  5. 搭建属于自己的基于ChatGPT的微信聊天机器人(方法)

    文章目录 1. GitHub开源项目 2. 前期准备 (1) 获取openAI API key 3. 准备部署环境 (1) 配置代理 (2) 配置python环境 4. 部署 (1) 修改配置文件 ( ...

  6. 【NLP实战】如何基于Tensorflow搭建一个聊天机器人

    实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自动动手试一试. 本篇介绍如何基于tensorflow快速搭建一个基 ...

  7. 基于深度学习的聊天机器人

    基于深度学习的聊天机器人-项目前期知识准备 文章目录 基于深度学习的聊天机器人-项目前期知识准备 一.TensorFlow框架简介 二.NLP基础 1. 常用的神经网络模型 2. 词法分析 3.贝叶斯 ...

  8. 基于“机器学习”的智能聊天机器人---python实现(1)

    本博文以自己课程设计为依托,介绍如何利用python语言编程实现基于"机器学习"的智能聊天机器人.由于本项目是自己首次接触python以及利用计算机编程实现小型项目,中途遇到诸多问 ...

  9. 基于ChatGPT实现微信聊天机器人

    ChatGPT近期以强大的对话和信息整合能力风靡全网,可以写代码.改论文.讲故事,几乎无所不能,这让人不禁有个大胆的想法,能否用他的对话模型把我们的微信打造成一个智能机器人,可以在与好友对话中给出意想 ...

最新文章

  1. 前端面试常考知识点---js
  2. matlab 日期加小时数_MATLAB时间与日期的基本操作
  3. jenkins pipeline python_Jenkins Pipeline示例
  4. 2018-06-29 西游记主题Python入门示例尝试-数据结构 5.1-5.1.2
  5. 一款可留言的恋爱计时HTML源码
  6. 深究Spring中Bean的生命周期
  7. asu计算机工程师,优达udacity无人驾驶工程师第一二三期(全)
  8. SSH应用之BBS之路-2、Hibernate配置
  9. 常用高性价比的LCD液晶屏驱动芯片VK1088B
  10. python 串口助手 简书_pySerial 串口工具简介
  11. 迈向新征程!2019国际第三代半导体大赛颁奖典礼盛大举办!
  12. 正则匹配大于等于号与indexof结合
  13. 2021医学影像分割论文:MSGSE-Net:用于皮层下脑结构分割的多尺度引导压缩和提取网络
  14. RabbitMQ的分发机制
  15. deepin系统安装的若干问题
  16. pandas中如何选取某几列_Pandas 2:如何在数据集中选取列
  17. 计算机学院晚会标题,计算机学院举办“计忆留夏·e彩纷呈”2017届毕业生晚会...
  18. 计算面积的计算机软件,CAD计算面积的快捷键是什么?
  19. C语言解析WAV音频文件
  20. 应届毕业生因为疫情休息在家,可以通过哪些途径提高自己?

热门文章

  1. 关于UUID的二三事
  2. 骚操作 !IDEA 防止写代码沉迷插件 !
  3. 把我坑惨的一个update语句!
  4. springboot + redis + 注解 + 拦截器 实现接口幂等性校验
  5. 做好数据可视化的技巧和原则!
  6. 让炼丹更玄学!苏大博士生用「天干地支」生成随机种子,项目已开源
  7. 100%抄袭!ICLR 2022投稿竟公然剽窃两篇顶会,程序主席放「实锤」严词拒稿
  8. 最新!2020中国高校毕业生薪资报告出炉
  9. 深度学习 CNN trick 合集
  10. 项目性能优化(页面静态化2)