Heim >Backend-Entwicklung >PHP-Tutorial >AIML-basierter PHP-Chatbot

AIML-basierter PHP-Chatbot

藏色散人
藏色散人nach vorne
2020-01-11 15:28:453283Durchsuche

Chatbot: PHP-Chatbot basierend auf AIML

In diesem Artikel wird ein kleines, in PHP implementiertes Chatbot-Programm vorgestellt, das Kenntnisse im Zusammenhang mit dem PHP-Betrieb von DOM und MySQL-Datenbanken nutzt zum Lernen genutzt. Der Code kann unter https://github.com/kompasim/chatbot heruntergeladen werden.

0. Erinnerung

Dieser Chatbot wurde unter Bezugnahme auf AIML 2.5 und Program-P geschrieben. Die von diesem Chatbot implementierten Aiml-Tags werden von bestimmt Lücke, sodass das aus dem Internet heruntergeladene AML-Korpus möglicherweise nicht ordnungsgemäß funktioniert. Geeignet für UTF-8-codierte Sprachen, in denen sich Wortsuffixe je nach Zeitform ändern. Interessierte Freunde können selbst recherchieren und studieren.

1. Einführung

Dies ist ein in PHP geschriebener Aiml-Parser, der derzeit normal in der PHP5.4-Umgebung ausgeführt werden kann.

2. Datenbankkonfiguration

Dieses Programm verwendet die MySQL-Datenbank. Sie müssen die Datei chatbot.sql in Ihre Datenbank einfügen und sie dann zu chatbot/Config hinzufügen .php Ändern Sie die relevanten Datenbankkonfigurationsvariablen in der Datei.

4. Aiml-Korpusressourcen

Sie können die Datei „aml/chatbot.aiml“ direkt bearbeiten oder eine neue erstellen AML-Datei und dann Die AML/Chatbot.aiml-Datei führt es mit dem Include-Tag ein.

5. Über Aml-Dateien

aiml muss im Aiml-Verzeichnis abgelegt werden.

chatbot.aiml ist die Eintragsdatei und das Aiml-Tag darin Kann mehrere Kategorie-Tags, ein Standard-Tag und mehrere Include-Tags enthalten.

Die anderen AML-Dateien, die Sie hinzufügen, müssen ein Themen-Tag im Stamm-AML-Tag enthalten. Dieses Themen-Tag kann mehrere Kategorie-Tags und ein Standard-Tag enthalten (andere AML-Dateien können hier keine Include-Tags schreiben, Include-Tags können nur angezeigt werden). in der Datei chatbot.aiml).

6. Testen Sie den Chatbot

Sie können index.php öffnen, um zum Testen mit dem Roboter zu chatten.

7. Rufen Sie den Chatbot auf

Wenn Sie den Chatbot in Ihrer eigenen Anwendung aufrufen möchten, können wir seine API wie folgt aufrufen: api.php?requestType=talk&input= Hallo

8. Über die Matching-Regeln

Die geänderten Matching-Regeln:

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

Über die AIML-Tags

Der Aiml-Tag dieses Chatbots unterscheidet sich vom Standard-Aiml-Tag. Ich habe die Tags entsprechend meinen Bedürfnissen personalisiert. Weitere von diesem Chatbot unterstützte Tags finden Sie in der AIML.MD-Datei.

10. Über die Rückgabedaten von api.php

{
    "status": "success",
    "type": "talk",
    "message": "haha ...",
    "data": {
        "arr1": {
            "name11": "value11",
            "name12": "value12"
        },
        "arr2": {
            "name21": "value21",
            "name22": "value22"
        }
    }
}

Wenn Sie auf api.php?requestType=talk&userInput=haha zugreifen, können Sie die oben genannten JSON-Daten abrufen.

<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. Über userId

Wenn Sie im GET-Modus eine Anfrage an api.php mit dem userId-Parameter senden, wird dieser Parameter als eindeutige Kennung des Benutzers verwendet . Wenn Sie diesen Parameter nicht angeben, verwendet das Programm die IP des Benutzers als eindeutige Kennung.

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

12. Über mehrere Chatbots

Wenn Sie multiChatbot in der Datei „chatbot/Config.php“ auf „false“ setzen, teilen alle Benutzer einen Standard-Chatbot. Wenn Sie es auf „true“ setzen, verfügt jeder Benutzer über einen unabhängigen Chatbot. Diese Chatbots verwenden die Benutzer-ID als eindeutige Kennung. Jeder Benutzer legt Attribute wie Name, Geschlecht, Alter usw. für seinen Chatbot fest. Die Funktionalität mehrerer Chatbots ist besonders nützlich, wenn Sie einen Sprachassistenten oder ähnliches schreiben, da Benutzer Namen für ihre eigenen Sprachassistenten festlegen können.

$user = $this->getUser($this->_unique);
if ($this->_config->multiChatbot){
    $bot = $this->getBot($this->_unique);
} else {
    $bot = $this->getBot("default");
}

13. Über userInfo und botInfo

userInfo und botInfo beziehen sich auf einige Attribute von Benutzern und Chatbots, wie Name, Alter, Geschlecht usw. Benutzer können diese Attribute natürlich durch einige Tags ändern, wenn wir den Aiml-Korpus schreiben. Wir können set, get, del, user, bot und andere verwandte Tags von AIML.MD lernen.

<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. Über die Datenbank

Protokoll ist eine Tabelle, die Protokolle speichert.

Eigenschaft ist eine Tabelle, die Benutzer- und Bot-bezogene Attribute speichert. was unserem entspricht Der Kopf des Chatbots hilft uns, uns an einige Attribute zu erinnern. Tags wie set, get, del, user, bot werden zum Betrieb dieser Tabelle verwendet. Die

Datentabelle wird zum Speichern von Benutzereingaben, Roboterantworten, Eingaben, diesem, Thema und anderen Tags verwendet, die den Parser bedienen: : $_data-Array. Jedes Mal, wenn das Programm ausgeführt wird, lädt das Programm Daten aus dieser Tabelle in dieses Array und speichert sie dann in dieser Tabelle, wenn das Programm endet. Der einzige Bezeichner der Tabelle ist userId.

Quellcode

https://github.com/kompasim/chatbot

Das obige ist der detaillierte Inhalt vonAIML-basierter PHP-Chatbot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen