摘要:基于的聊天天機器人本文章中講介紹用實現的一個小聊天機器人程序,用到了操作相關的知識和數據庫,可以用來學習。關于數據庫存儲日志的表是存儲和的有關屬性的表相當于我們聊天機器人的腦袋,幫我們記住一些屬性。
基于AIML的PHP聊天天機器人
English 0. 提醒本文章中講介紹用PHP實現的一個小聊天機器人程序,用到了php操作dom相關的知識和mysql數據庫,可以用來學習。代碼可以從https://github.com/kompasim/c...下載。
1. 介紹該聊天機器人是參考AIML 2.5和Program-P而寫成的,這聊天機器人實現的aiml標簽和標準的aiml標簽由一定的差距,所以你從網上下載的aiml語料庫可能沒法正常工作。適用于UTF-8編碼的,單詞后綴根據不同的時態而改變的那些語言。感興趣的朋友可以自己研究學習一下。
2. 數據庫配置這是一個用PHP寫的aiml解析器,目前在PHP5.4環境上能正常運行。
4. aiml語料庫資源本程序用了MySQL數據庫,你需要把chatbot.sql 文件倒入到你的數據庫,然后在chatbot/Config.php文件里修改相關數據庫配置變量.
5. 關于aiml文件你可以直接編輯 aiml/chatbot.aiml 文件或者創建一個新的aiml文件然后在aiml/chatbot.aiml文件用include標簽引入它。
6. 測試聊天機器人aiml 必須要放在 aiml 目錄內.
chatbot.aiml 是入口文件 ,它里面的 aiml 標簽可以包含多個 category 標簽 , 一個 default標簽和多個 include標簽。
被你添加的其它 aiml 文件在根aiml標簽里必須要包含一個 topic 標簽 , 這個topic標簽可以包含多個 category 標簽和一個default標簽 (這里的其他aiml文件不能寫include標簽,include標簽只能出現在chatbot.aiml文件里)。
7. 調用聊天機器人你可以打開index.php進行和機器人聊天做測試。
8. 關于匹配規則如果希望在自己的應用里面調用聊天機器人我們可以這樣調用它的api api.php?requestType=talk&input=你好
修改之后的匹配規則 :
* ---> (S+) # ---> S+ _ ---> .* = ---> S*9. 關于AIML標簽
10. 關于api.php的返回數據本聊天機器人的aiml標簽和標準aiml標簽有所不同,我根據需求對標簽做了一些個性化,我們可以在AIML.MD文件里面查到更多本聊天機器人所支持的標簽。
{ "status": "success", "type": "talk", "message": "haha ...", "data": { "arr1": { "name11": "value11", "name12": "value12" }, "arr2": { "name21": "value21", "name22": "value22" } } }
當你訪問 api.php?requestType=talk&userInput=haha 的時候能得到以上json數據 .
11. 關于userIdhaha value11 value12 value21 value22 haha ...
當你給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等有關標簽。
14. 關于數據庫my name is * ok , your name iswhat is my name oh , your name is, i remembered it last time ...
源碼log 存儲日志的表 .
property 是存儲user和bot的有關屬性的表 , 相當于我們聊天機器人的腦袋,幫我們記住一些屬性。 set ,get, del, user, bot 等標簽是用來操作這個表的 .
data 表用來存儲用戶的輸入,機器人的回復,input , that, topic 等標簽會操作Parser::$_data數組,每次程序開始運行的時候程序會從這個表加載數據到這個數組里,然后程序要結束的時候再會存儲到這個表里面。表的唯一標示還是userId。
https://github.com/kompasim/chatbot
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110350.html
摘要:基于的聊天天機器人本文章中講介紹用實現的一個小聊天機器人程序,用到了操作相關的知識和數據庫,可以用來學習。關于數據庫存儲日志的表是存儲和的有關屬性的表相當于我們聊天機器人的腦袋,幫我們記住一些屬性。 基于AIML的PHP聊天天機器人 本文章中講介紹用PHP實現的一個小聊天機器人程序,用到了php操作dom相關的知識和mysql數據庫,可以用來學習。代碼可以從https://github...
摘要:最近借用了女朋友的公號,感覺如果只是用來發文章,太浪費微信給提供的這些功能了。想了想,先從最簡單的開始,做一個聊天機器人吧。是一款接口的,基于一系列規則和機器學習算法完成的聊天機器人。 最近借用了女朋友的公號,感覺如果只是用來發文章,太浪費微信給提供的這些功能了。想了想,先從最簡單的開始,做一個聊天機器人吧。 使用Python實現聊天機器人的方案有多種:AIML、chatterBot以...
摘要:前言用的包很容易就能寫一個人工智能聊天機器人。他開發了一個叫的機器人并且贏了幾個人工智能的獎項。這條在它收到一個以開始的消息時會隨機回復。那也有一個可以讓你玩點的機器人。機器人需要變活。這就要靠機器人大腦文件了。看下節寫命令給機器人。 前言 用python的AIML包很容易就能寫一個人工智能聊天機器人。 AIML是Artificial Intelligence Markup Langu...
摘要:夏天太熱,又不想出門,就讓我們用的來搭建屬于自己的可以對話的老婆吧本文擬使用的開發語言實現類似于的平臺的小娜,或者是下的的。 夏天太熱,又不想出門,就讓我們用的Python來搭建屬于自己的?可以對話的AI老婆吧? 本文擬使用Python的開發語言實現類似于的WIndows平臺的小娜,或者是IOS下的Siri的。最終達到人機對話的效果。 showImg(https://segment...
閱讀 3511·2021-11-18 10:02
閱讀 946·2021-09-04 16:48
閱讀 2034·2019-08-30 15:55
閱讀 3533·2019-08-30 15:52
閱讀 1810·2019-08-30 14:08
閱讀 3552·2019-08-30 13:19
閱讀 1137·2019-08-27 10:53
閱讀 3116·2019-08-26 12:11