Maison > développement back-end > tutoriel php > Chatbot PHP basé sur AIML

Chatbot PHP basé sur AIML

藏色散人
Libérer: 2023-04-08 08:08:01
avant
3285 Les gens l'ont consulté

chatbot : chatbot PHP basé sur AIML

Cet article présente un petit programme de chatbot implémenté en PHP, utilisant les connaissances liées au domaine d'exploitation PHP et à la base de données mysql, qui peut être utilisé pour l’apprentissage. Le code peut être téléchargé depuis https://github.com/kompasim/chatbot.

0. Rappel

Ce chatbot est écrit en référence à AIML 2.5 et Program-P Les balises aiml implémentées par ce chatbot et les balises aiml standards sont déterminées par. certaines lacunes, de sorte que le corpus aiml que vous avez téléchargé depuis Internet risque de ne pas fonctionner correctement. Convient aux langues codées en UTF-8 où les suffixes des mots changent selon les différents temps. Les amis intéressés peuvent faire leurs propres recherches et études.

1. Introduction

Il s'agit d'un analyseur aiml écrit en PHP, qui peut actuellement fonctionner normalement dans l'environnement PHP5.4.

2. Configuration de la base de données

Ce programme utilise une base de données MySQL Vous devez verser le fichier chatbot.sql dans votre base de données, puis l'ajouter à chatbot/Config. .php Modifiez les variables de configuration de la base de données pertinentes dans le fichier.

4. Ressources du corpus aiml

Vous pouvez directement modifier le fichier aiml/chatbot.aiml ou en créer un nouveau. aiml puis le fichier aiml/chatbot.aiml l'introduit avec la balise include.

5. À propos des fichiers aiml

aiml doit être placé dans le répertoire aiml

chatbot.aiml est le fichier d'entrée, et la balise aiml. il peut contenir plusieurs balises de catégorie, une balise par défaut et plusieurs balises d'inclusion.

Les autres fichiers aiml que vous ajoutez doivent contenir une balise de sujet dans la balise aiml racine. Cette balise de sujet peut contenir plusieurs balises de catégorie et une balise par défaut (les autres fichiers aiml ici ne peuvent pas écrire de balises d'inclusion, les balises d'inclusion ne peuvent apparaître que dans. le fichier chatbot.aiml).

6. Testez le chatbot

Vous pouvez ouvrir index.php pour discuter avec le robot à des fins de test.

7. Appelez le chatbot

Si vous souhaitez appeler le chatbot dans votre propre application, nous pouvons appeler son API comme ceci api.php?requestType=talk&input= Bonjour

8. À propos des règles de correspondance

Les règles de correspondance modifiées :

* ---> (\S+)
# ---> \S+
_ ---> .*
= ---> \S*
Copier après la connexion

9. À propos des balises AIML

La balise aiml de ce chatbot est différente de la balise aiml standard. J'ai personnalisé les balises en fonction de mes besoins. On peut trouver plus de balises supportées par ce chatbot dans le fichier AIML.MD.

10. À propos des données de retour d'api.php

{
    "status": "success",
    "type": "talk",
    "message": "haha ...",
    "data": {
        "arr1": {
            "name11": "value11",
            "name12": "value12"
        },
        "arr2": {
            "name21": "value21",
            "name22": "value22"
        }
    }
}
Copier après la connexion

Lorsque vous accédez à api.php?requestType=talk&userInput=haha, vous pouvez obtenir les données json ci-dessus.

<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>
Copier après la connexion

11. À propos de userId

Lorsque vous envoyez une requête à api.php en mode GET avec le paramètre userId, ce paramètre sera utilisé comme identifiant unique de l'utilisateur. . Si vous ne donnez pas ce paramètre, le programme utilisera l'adresse IP de l'utilisateur comme identifiant unique.

$userId = isset($_REQUEST[&#39;userId&#39;]) ? $_REQUEST[&#39;userId&#39;] : $_SERVER[&#39;REMOTE_ADDR&#39;];
Copier après la connexion

12. À propos de plusieurs chatbots

Si vous définissez multiChatbot dans le fichier 'chatbot/Config.php' sur false, tous les utilisateurs partageront un chatbot par défaut. Lorsque vous le définissez sur true, chaque utilisateur disposera d'un chatbot indépendant. Ces chatbots utiliseront userId comme identifiant unique. Chaque utilisateur définit des attributs tels que le nom, le sexe, l'âge, etc. pour son chatbot. La fonctionnalité de chatbot multiple est particulièrement utile lorsque vous écrivez un assistant vocal ou similaire, car les utilisateurs peuvent définir des noms pour leurs propres assistants vocaux.

$user = $this->getUser($this->_unique);
if ($this->_config->multiChatbot){
    $bot = $this->getBot($this->_unique);
} else {
    $bot = $this->getBot("default");
}
Copier après la connexion

13. À propos de userInfo et botInfo

userInfo et botInfo font référence à certains attributs des utilisateurs et des chatbots, tels que le nom, l'âge, le sexe, etc. Les utilisateurs peuvent modifier ces attributs. Bien sûr, cela est réalisé grâce à certaines balises lorsque nous écrivons le corpus aiml. Nous pouvons apprendre set, get, del, user, bot et d'autres balises associées à partir d'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>
Copier après la connexion

14. À propos de la base de données

log est une table qui stocke les journaux

property est une table qui stocke les attributs liés à l'utilisateur et au bot. , ce qui nous équivaut à la tête du chatbot nous aide à mémoriser certains attributs. Des balises telles que set, get, del, user, bot sont utilisées pour faire fonctionner cette table. La

table de données est utilisée pour stocker les entrées de l'utilisateur, les réponses du robot, les entrées, le sujet et d'autres balises qui feront fonctionner l'analyseur : : Tableau $_data, chaque fois que le programme démarre, le programme chargera les données de cette table dans ce tableau, puis les stockera dans cette table à la fin du programme. Le seul identifiant de la table est userId.

Code source

https://github.com/kompasim/chatbot

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal