ホームページ  >  記事  >  バックエンド開発  >  AIMLベースのPHPチャットボット

AIMLベースのPHPチャットボット

藏色散人
藏色散人転載
2020-01-11 15:28:453246ブラウズ

チャットボット: 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 タグは複数のカテゴリ タグ、デフォルト タグ、および複数の include タグを含めることができます。

追加する他の A​​iml ファイルには、ルート Aiml タグにトピック タグが含まれている必要があります。このトピック タグには、複数のカテゴリ タグとデフォルト タグを含めることができます (ここにある他の A​​iml ファイルは 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 について

userId パラメーターを使用して GET モードで api.php にリクエストを送信すると、このパラメーターはユーザーの一意の識別子として使用されます。 。このパラメータを指定しない場合、プログラムはユーザーの IP を一意の識別子として使用します。

$userId = isset($_REQUEST[&#39;userId&#39;]) ? $_REQUEST[&#39;userId&#39;] : $_SERVER[&#39;REMOTE_ADDR&#39;];

12. 複数のチャットボットについて

「chatbot/Config.php」ファイルの multiChatbot を false に設定すると、すべてのユーザーがデフォルトのチャットボットを共有します。 true に設定すると、各ユーザーは独立したチャットボットを持つようになります。これらのチャットボットは、userId を一意の識別子として使用します。各ユーザーは、自分のチャットボットに対して名前、性別、年齢などの属性を設定します。複数のチャットボット機能は、ユーザーが独自の音声アシスタントの名前を設定できるため、音声アシスタントなどを作成する場合に特に便利です。

$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 コーパスを作成するときにいくつかのタグを通じて実現されます。set、get、del、user、bot およびその他の関連タグは AIML.MD から学習できます。

<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 はユーザーとボット関連の属性を保存するテーブルです。これは、チャットボットのヘッドは、いくつかの属性を覚えるのに役立ちます。このテーブルの操作には、set、get、del、user、bot などのタグが使用されます。

data テーブルは、ユーザー入力、ロボットの応答、input、that、topic などのタグを保存するために使用され、パーサーを操作します。 : $_data 配列。プログラムの実行が開始されるたびに、プログラムはこのテーブルからこの配列にデータをロードし、プログラムの終了時にこのテーブルにデータを格納します。テーブルの唯一の識別子は userId です。

ソースコード

https://github.com/kompasim/chatbot

以上がAIMLベースのPHPチャットボットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。