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*
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" } } }
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>
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['userId']) ? $_REQUEST['userId'] : $_SERVER['REMOTE_ADDR'];
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"); }
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>
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!