百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> 基于AIML的PHP谈天机器人
分享文章到:

基于AIML的PHP谈天机器人

发布时间:09/01 来源:未知 浏览: 关键词:
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数据 .

<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谈天机器人的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板