本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操做dom相关的知识和mysql数据库,能够用来学习。代码能够从下载。php
该聊天机器人是参考AIML 2.5和而写成的,这聊天机器人实现的aiml标签和标准的aiml标签由必定的差距,因此你从网上下载的aiml语料库可能无法正常工做。适用于UTF-8编码的,单词后缀根据不一样的时态而改变的那些语言。感兴趣的朋友能够本身研究学习一下。mysql
这是一个用PHP写的aiml解析器,目前在PHP5.4环境上能正常运行。git
你能够打开
index.php
进行和机器人聊天作测试。数组
修改以后的匹配规则 :
本聊天机器人的
aiml
标签和标准aiml
标签有所不一样,我根据需求对标签作了一些个性化,咱们能够在AIML.MD文件里面查到更多本聊天机器人所支持的标签。
当你给
api.php
以GET
方式发送请求的时候带了userId
参数, 这个参数会看成用户的惟一标识。若你没给这个参数,程序会用用户的ip看成惟一标示。
若是你把'chatbot/Config.php'文件里面的
multiChatbot
设置成false
,全部的用户会分享一个default
的chatbot
。当你设置成true
的时候每一个用户都会拥有独立的chatbot
,这些chatbot
会吧userId
做为惟一标示,每一个用户给本身的chatbot
设置相关名字,性别,年龄之类的属性。当你在写一个语音助手之类的时候多个chatbot
功能会特别好用,由于用户能够给本身的语音助手设置名字了。
userInfo和botInfo是指用户和聊天机器人的一些属性,例如姓名,年龄,性别等等。用户能够改变这些属性,固然这是咱们当写aiml语料库的时候经过一些标签来实现的,咱们能够从AIML.MD 学习set, get, del, user, bot等有关标签。
等标签会操做
Parser::$_data
数组,每次程序开始运行的时候程序会从这个表加载数据到这个数组里,而后程序要结束的时候再会存储到这个表里面。表的惟一标示仍是userId
。
国外有一个聊天机器人Alice做的很好,但是不支持中文,我修改其内置的AIML解析器的源代码使其支持中文,并且增加了机器人的学习功能,最后还集成了数据库。我将自己做过的一些工作整理成一个文档,希望大家能来这里给我点建议(/wangxiaolongbob/article/details/8090897)。收起