本文章中讲引见用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数据 .
<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.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等无关标签。
<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 是存储user以及bot的无关属性的表 , 相称于咱们谈天机械人的脑壳,帮咱们记住一些属性。 set ,get, del, user, bot 等标签是用来操作这个表的 .
data 表用来存储用户的输出,机械人的回复,input , that, topic 等标签会操作Parser::$_data数组,每一次顺序开端运转的时分顺序会从这个表加载数据到这个数组里,而后顺序要完结的时分再见存储到这个内外面。表的惟一标示仍是userId。
源码
https://github.com/kompasim/chatbot
以上就是基于AIML的PHP谈天机械人的具体内容,更多请存眷资源魔其它相干文章!
标签: php php开发教程 php开发资料 php开发自学
抱歉,评论功能暂时关闭!