日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php mysql生日提醒_基于AIML的PHP聊天机器人

發(fā)布時間:2024/9/30 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php mysql生日提醒_基于AIML的PHP聊天机器人 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

php中文網(wǎng)最新課程

每日17點準時技術干貨分享

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

本文章中講介紹用PHP實現(xiàn)的一個小聊天機器人程序,用到了php操作dom相關的知識和mysql數(shù)據(jù)庫,可以用來學習。

代碼可以從https://github.com/kompasim/chatbot 下載

0. 提醒

該聊天機器人是參考AIML 2.5和Program-P而寫成的,這聊天機器人實現(xiàn)的aiml標簽和標準的aiml標簽由一定的差距,所以你從網(wǎng)上下載的aiml語料庫可能沒法正常工作。

適用于UTF-8編碼的,單詞后綴根據(jù)不同的時態(tài)而改變的那些語言。

感興趣的朋友可以自己研究學習一下。

1. 介紹

這是一個用PHP寫的aiml解析器,目前在PHP5.4環(huán)境上能正常運行。

2. 數(shù)據(jù)庫配置

本程序用了MySQL數(shù)據(jù)庫,你需要把chatbot.sql 文件倒入到你的數(shù)據(jù)庫,然后在chatbot/Config.php文件里修改相關數(shù)據(jù)庫配置變量.

4. aiml語料庫資源

你可以直接編輯 aiml/chatbot.aiml 文件或者創(chuàng)建一個新的aiml文件然后在aiml/chatbot.aiml文件用include標簽引入它。

5. 關于aiml文件

aiml 必須要放在 aiml 目錄內(nèi).

chatbot.aiml 是入口文件 ,它里面的 aiml 標簽可以包含多個 category 標簽 , 一個 default標簽和多個 include標簽。

被你添加的其它 aiml 文件在根aiml標簽里必須要包含一個 topic 標簽 , 這個topic標簽可以包含多個 category 標簽和一個default標簽?(這里的其他aiml文件不能寫include標簽,include標簽只能出現(xiàn)在chatbot.aiml文件里)。

6. 測試聊天機器人

你可以打開index.php進行和機器人聊天做測試。

7. 調(diào)用聊天機器人

如果希望在自己的應用里面調(diào)用聊天機器人我們可以這樣調(diào)用它的api api.php?requestType=talk&input=你好

8. 關于匹配規(guī)則

修改之后的匹配規(guī)則 :

* ---> (\S+)# ---> \S+_ ---> .*= ---> \S*

9. 關于AIML標簽

本聊天機器人的aiml標簽和標準aiml標簽有所不同,我根據(jù)需求對標簽做了一些個性化,我們可以在AIML.MD文件里面查到更多本聊天機器人所支持的標簽。

10. 關于api.php的返回數(shù)據(jù)

{ "status": "success", "type": "talk", "message": "haha ...", "data": { "arr1": { "name11": "value11", "name12": "value12" }, "arr2": { "name21": "value21", "name22": "value22" } }}當你訪問 api.php?requestType=talk&userInput=haha 的時候能得到以上json數(shù)據(jù) . haha value11 value12 value21 value22 haha ...

11. 關于userId

當你給api.php以GET方式發(fā)送請求的時候帶了userId參數(shù), 這個參數(shù)會當作用戶的唯一標識。若你沒給這個參數(shù),程序會用用戶的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語料庫的時候通過一些標簽來實現(xiàn)的,我們可以從AIML.MD 學習set, get, del, user, bot等有關標簽。

my name is * ok , your name is what is my name oh , your name is , i remembered it last time ...

14. 關于數(shù)據(jù)庫

log 存儲日志的表 .

property 是存儲user和bot的有關屬性的表 , 相當于我們聊天機器人的腦袋,幫我們記住一些屬性。 set ,get, del, user, bot 等標簽是用來操作這個表的 .

data 表用來存儲用戶的輸入,機器人的回復,input , that, topic 等標簽會操作Parser::$_data數(shù)組,每次程序開始運行的時候程序會從這個表加載數(shù)據(jù)到這個數(shù)組里,然后程序要結束的時候再會存儲到這個表里面。表的唯一標示還是userId。

源碼

https://github.com/kompasim/chatbot

-END-

總結

以上是生活随笔為你收集整理的php mysql生日提醒_基于AIML的PHP聊天机器人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。