资讯专栏INFORMATION COLUMN

chatbot:基于 AIML 的 PHP 聊天机器人

MycLambert / 1019人阅读

摘要:基于的聊天天机器人本文章中讲介绍用实现的一个小聊天机器人程序,用到了操作相关的知识和数据库,可以用来学习。关于数据库存储日志的表是存储和的有关属性的表相当于我们聊天机器人的脑袋,帮我们记住一些属性。

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


    haha
    
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等有关标签。


    my name is *
    



    what is my name
    
14. 关于数据库

log 存储日志的表 .

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

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


源码

https://github.com/kompasim/chatbot

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22918.html

相关文章

  • chatbot基于 AIML PHP 聊天器人

    摘要:基于的聊天天机器人本文章中讲介绍用实现的一个小聊天机器人程序,用到了操作相关的知识和数据库,可以用来学习。关于数据库存储日志的表是存储和的有关属性的表相当于我们聊天机器人的脑袋,帮我们记住一些属性。 基于AIML的PHP聊天天机器人 本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库,可以用来学习。代码可以从https://github...

    Backache 评论0 收藏0
  • chatbot基于 AIML PHP 聊天器人

    摘要:基于的聊天天机器人本文章中讲介绍用实现的一个小聊天机器人程序,用到了操作相关的知识和数据库,可以用来学习。关于数据库存储日志的表是存储和的有关属性的表相当于我们聊天机器人的脑袋,帮我们记住一些属性。 基于AIML的PHP聊天天机器人 本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库,可以用来学习。代码可以从https://github...

    luckyw 评论0 收藏0
  • 微信公号DIY:一小时搭建微信聊天器人

    摘要:最近借用了女朋友的公号,感觉如果只是用来发文章,太浪费微信给提供的这些功能了。想了想,先从最简单的开始,做一个聊天机器人吧。是一款接口的,基于一系列规则和机器学习算法完成的聊天机器人。 最近借用了女朋友的公号,感觉如果只是用来发文章,太浪费微信给提供的这些功能了。想了想,先从最简单的开始,做一个聊天机器人吧。 使用Python实现聊天机器人的方案有多种:AIML、chatterBot以...

    source 评论0 收藏0
  • 【翻译】用AIML实现Python人工智能聊天器人

    摘要:前言用的包很容易就能写一个人工智能聊天机器人。他开发了一个叫的机器人并且赢了几个人工智能的奖项。这条在它收到一个以开始的消息时会随机回复。那也有一个可以让你玩点的机器人。机器人需要变活。这就要靠机器人大脑文件了。看下节写命令给机器人。 前言 用python的AIML包很容易就能写一个人工智能聊天机器人。 AIML是Artificial Intelligence Markup Langu...

    seasonley 评论0 收藏0
  • 超赞!快来用Python搭建你AI老婆吧!

    摘要:夏天太热,又不想出门,就让我们用的来搭建属于自己的可以对话的老婆吧本文拟使用的开发语言实现类似于的平台的小娜,或者是下的的。 夏天太热,又不想出门,就让我们用的Python来搭建属于自己的〜可以对话的AI老婆吧〜   本文拟使用Python的开发语言实现类似于的WIndows平台的小娜,或者是IOS下的Siri的。最终达到人机对话的效果。 showImg(https://segment...

    Tychio 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<