チャットボット: 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 タグを含めることができます。
追加する他の Aiml ファイルには、ルート Aiml タグにトピック タグが含まれている必要があります。このトピック タグには、複数のカテゴリ タグとデフォルト タグを含めることができます (ここにある他の 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 について
userId パラメーターを使用して GET モードで api.php にリクエストを送信すると、このパラメーターはユーザーの一意の識別子として使用されます。 。このパラメータを指定しない場合、プログラムはユーザーの IP を一意の識別子として使用します。
$userId = isset($_REQUEST['userId']) ? $_REQUEST['userId'] : $_SERVER['REMOTE_ADDR'];
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 サイトの他の関連記事を参照してください。