中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP使用AIML解析器實現聊天機器人

發布時間:2020-05-22 17:29:08 來源:億速云 閱讀:314 作者:鴿子 欄目:編程語言

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。

以上就是基于AIML的PHP聊天機器人的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

榆中县| 泽库县| 衡阳县| 临海市| 红安县| 蓬莱市| 三明市| 灵石县| 汽车| 大姚县| 于都县| 兴宁市| 宁国市| 洛南县| 平舆县| 日喀则市| 蚌埠市| 裕民县| 西乌珠穆沁旗| 永清县| 红河县| 博乐市| 航空| 瑞安市| 阳信县| 嘉祥县| 邹城市| 剑川县| 太白县| 贞丰县| 绥阳县| 扶绥县| 金乡县| 吕梁市| 肃宁县| 敦煌市| 保康县| 嘉义市| 通江县| 根河市| 云浮市|