最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 基于AIML的PHP聊天机器人_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数据 .

    <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聊天机器人的详细内容,更多请关注liyege.cn其它相关文章!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 995会员总数(位)
    • 111836资源总数(个)
    • 6本周发布(个)
    • 0 今日发布(个)
    • 208稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    侵权联系邮箱[email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐