Featured image of post Comment créer un chatbot avec la bibliothèque Python ChatterBot ?

Comment créer un chatbot avec la bibliothèque Python ChatterBot ?

Apprenez à concevoir un chatbot intelligent en utilisant la bibliothèque Python ChatterBot. Suivez des étapes simples pour développer un assistant interactif capable de répondre aux utilisateurs de manière fluide et automatisée. Une excellente introduction au monde des chatbots et de l'intelligence artificielle !

Les chatbots sont devenus de plus en plus populaires pour automatiser les interactions avec les clients, fournir une assistance et améliorer l’expérience utilisateur. Dans ce guide étape par étape, vous apprendrez à créer un chatbot fonctionnel à l’aide de ChatterBot, une bibliothèque Python populaire. À la fin de ce tutoriel, vous disposerez d’un framework de chatbot de base qui pourra être personnalisé davantage pour répondre à vos besoins spécifiques.

La Bibliothèque ChatterBot

ChatterBot est une bibliothèque Python conçue pour faciliter la création de chatbots et d’agents conversationnels. Elle fournit un framework simple et flexible pour la construction d’applications basées sur le chat en utilisant des techniques de traitement du langage naturel (NLP). La bibliothèque permet aux développeurs de créer des chatbots capables d’engager des conversations, de comprendre les entrées des utilisateurs et de générer des réponses appropriées.

Avantages de ChatterBot

Les avantages de l’utilisation de ChatterBot sont les suivants :

  1. Capacité d’entraînement : ChatterBot permet aux développeurs d’entraîner des chatbots en utilisant de grands ensembles de données de conversations préexistantes. Il est livré avec un module d’entraînement intégré qui prend en charge l’entraînement sur des ensembles de données génériques et spécifiques, ce qui permet aux chatbots d’apprendre à partir d’un large éventail de modèles conversationnels.
  2. Indépendance linguistique : La bibliothèque ChatterBot prend en charge plusieurs langues, ce qui permet aux développeurs de créer des chatbots capables de converser dans différentes langues. Elle comprend des modèles de langage pré-entraînés et des ensembles de données pour plusieurs langues, ce qui facilite la construction de chatbots multilingues.
  3. Intelligence conversationnelle : ChatterBot intègre des algorithmes d’apprentissage automatique et des techniques de traitement du langage naturel pour analyser les entrées des utilisateurs, identifier les modèles et générer des réponses pertinentes. Il utilise une combinaison de correspondance basée sur des règles et de modèles de langage statistiques pour simuler des conversations de type humain.
  4. Architecture modulaire : La bibliothèque est conçue avec une architecture modulaire, ce qui facilite la modification des fonctionnalités du chatbot. Les développeurs peuvent intégrer des modèles de langage, des préprocesseurs et des bibliothèques externes supplémentaires pour améliorer les capacités du chatbot et l’adapter à des cas d’utilisation spécifiques.
  5. Amélioration des performances : ChatterBot prend en charge l’apprentissage incrémentiel, ce qui permet aux chatbots d’apprendre et de s’améliorer au fil du temps. Les développeurs peuvent entraîner les chatbots sur de nouvelles données de manière dynamique pendant l’exécution, ce qui leur permet de s’adapter et de répondre aux besoins changeants des utilisateurs.
  6. Dispositions d’intégration : ChatterBot peut être intégré à diverses plateformes et frameworks, notamment des applications web, des plateformes de messagerie et des assistants vocaux. Cette flexibilité permet aux développeurs de déployer des chatbots sur différents canaux et d’interagir avec les utilisateurs par le biais de leurs supports préférés.

En bref, ChatterBot est une bibliothèque Python largement utilisée en raison de sa flexibilité, de ses capacités et de sa facilité d’utilisation.

Fonctionnement de ChatterBot

Avant de commencer à travailler avec ChatterBot pour développer un chatbot, nous allons voir comment fonctionne cette bibliothèque Python :

  1. Une instance de ChatterBot est créée sans aucune connaissance préalable de la communication.
  2. Lorsqu’un utilisateur fournit une entrée, ChatterBot enregistre l’entrée ainsi que la réponse correspondante.
  3. ChatterBot continue de collecter des informations à partir des entrées fournies et améliore ainsi la précision de ses réponses.
  4. La réponse la plus proche de l’instruction d’entrée fournie est identifiée en fonction de la fréquence à laquelle ces réponses sont utilisées dans les conversations avec les gens.
  5. Comme ChatterBot est indépendant de la langue, il peut être entraîné à converser dans n’importe quelle langue en suivant le même processus.

Maintenant que nous avons une idée de base du fonctionnement de ChatterBot, nous allons apprendre comment créer un chatbot personnalisable en quelques étapes simples. Pour mieux comprendre les fonctionnalités de ChatterBot, nous allons d’abord définir notre scénario de projet. Nous passerons ensuite au reste du code.

Scénario du Projet

Vous êtes un développeur Python freelance. Vous avez été engagé par la clinique ORL bien connue, “Pseudonymous ENT”, pour construire un chatbot pour leur site web nouvellement publié. Ils n’ont pas besoin de quelque chose d’extravagant. Tout ce qu’ils veulent faire, c’est automatiser les tâches suivantes :

  1. Demander le nom et l’adresse e-mail de l’utilisateur, puis utiliser ces informations pour l’accueillir et traiter les demandes.
  2. Permettre à l’utilisateur de prendre un rendez-vous avec un ORL pour le jour même. L’utilisateur doit pouvoir choisir entre les créneaux du matin (8h00 à 12h00), de l’après-midi (12h00 à 16h00) et du soir (16h00 à 20h00).
  3. Permettre à l’utilisateur d’annuler son rendez-vous.
  4. Permettre à l’utilisateur de modifier son rendez-vous d’un créneau à un autre.
  5. Fournir à l’utilisateur le numéro de téléphone et l’adresse de la clinique.
  6. Informer l’utilisateur des médecins disponibles et lui permettre de sélectionner un médecin ainsi que le créneau horaire du rendez-vous.

Gardez à l’esprit qu’en réalité, cela nécessiterait également une certaine programmation en backend, où le code prend les informations de l’utilisateur, accède à la base de données et effectue les modifications nécessaires. Cependant, nous n’entrerons pas dans ces détails. Tout ce que nous ferons pour l’instant est de créer le chatbot.

Construction du Chatbot

Nous allons maintenant passer au processus de construction de notre chatbot.

Installations

Nous allons commencer par installer la bibliothèque ChatterBot. Cela peut être fait facilement en utilisant la commande ‘pip’.

pip install chatterbot

Importer les Paquets Nécessaires

Nous devons maintenant importer les paquets nécessaires pour notre programme.

from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer

Initialiser le Chatbot

Nous initialisons le chatbot en créant une instance de celui-ci et en lui donnant un nom. Ici, nous l’appelons ‘MedBot’, puisque notre objectif est de faire fonctionner ce chatbot pour le site web d’une clinique ORL.

Un fichier de base de données nommé ‘db.sqlite3’ sera créé dans votre dossier de travail et stockera toutes les données de conversation.

bot = ChatBot('MedBot')

Nettoyer les Données et Afficher un Message d’Erreur par Défaut

Nous pouvons nettoyer les données d’entrée pour rendre notre chatbot encore plus précis. Ici, nous allons supprimer les caractères unicode, les caractères html échappés et nettoyer les espaces blancs.

Nous pouvons également afficher un message d’erreur par défaut si le chatbot n’est pas en mesure de comprendre les données d’entrée.

bot = ChatBot('MedBot', read_only = True, 
              preprocessors=['chatterbot.preprocessors.convert_to_ascii', 
                             'chatterbot.preprocessors.unescape_html',
                             'chatterbot.preprocessors.clean_whitespace'],
             logic_adapters = [
                 {
                     'import_path': 'chatterbot.logic.BestMatch',
                     'default_response': 'Désolé, je ne peux pas traiter votre demande. Veuillez réessayer ou contactez-nous pour obtenir de l\'aide.',
                     'maximum_similarity_threshold': 0.90
                 }
             ],)

Entraîner le Chatbot

Nous pouvons entraîner notre chatbot en utilisant ‘ListTrainer()’ de chatterbot. Cela nous permet de fournir des données sous la forme d’une conversation (instruction + réponse), et le chatbot s’entraînera sur ces données pour savoir comment répondre avec précision à l’entrée d’un utilisateur.

trainer = ListTrainer(bot)
# Salutations
trainer.train([
    "Salut",
    "Bonjour, comment puis-je vous aider ?",
])
# Services
    
trainer.train([
    "Je voudrais prendre rendez-vous avec l'ORL aujourd'hui",
    "Bien sûr, veuillez choisir un créneau entre Matin, Après-midi ou Soir : ",
    "Après-midi",
    "Votre rendez-vous est confirmé. Vous pouvez venir entre 12h00 et 16h00.",
    "Matin",
    "Votre rendez-vous est confirmé. Vous pouvez venir entre 8h00 et 12h00.",
    "Soir",
    "Votre rendez-vous est confirmé. Vous pouvez venir entre 16h00 et 20h00.",
])
trainer.train([
    "Je veux annuler mon rendez-vous.",
    "D'accord, votre rendez-vous a été annulé.",
])
trainer.train([
    "Je voudrais changer mon créneau de rendez-vous.",
    "Bien sûr, quel créneau souhaitez-vous ? Vous pouvez choisir entre Matin, Après-midi et Soir.",
    "Après-midi",
    "Votre rendez-vous est confirmé. Votre créneau est maintenant entre 12h00 et 16h00.",
    "Matin",
    "Votre rendez-vous est confirmé. Votre créneau est maintenant entre 8h00 et 12h00.",
    "Soir",
    "Votre rendez-vous est confirmé. Votre créneau est maintenant entre 16h00 et 20h00.",
])
trainer.train([
    "Quel est votre numéro de téléphone ? Comment puis-je vous joindre ? Comment puis-je vous contacter ? Comment puis-je vous appeler ?",
    "Notre numéro est le 01**23**45",
    "Quelle est votre adresse ? Où êtes-vous situé ?",
    "Vous pouvez nous trouver au 45, 8e croisement, rue Oakwood",
])
trainer.train([
    "Quel médecin est disponible ?",
    "Nous avons le Dr Esther, le Dr Judith, le Dr Sarah, le Dr Matthew et le Dr Rob",
    "Je veux un rendez-vous avec le Dr Esther ou le Dr Judith ou le Dr Sarah ou le Dr Matthew ou le Dr Rob",
    "Bien sûr, veuillez sélectionner votre créneau",
    "Après-midi",
    "Votre rendez-vous est confirmé. Vous pouvez venir entre 12h00 et 16h00.",
    "Matin",
    "Votre rendez-vous est confirmé. Vous pouvez venir entre 8h00 et 12h00.",
    "Soir",
    "Votre rendez-vous est confirmé. Vous pouvez venir entre 16h00 et 20h00.",
])
# Conclusion
trainer.train([
    "Merci !",
    "Je vous en prie !",
    "Merci !",
    "Bien sûr !",
    ])

Tester le Chatbot

Nous pouvons tester la précision des réponses du chatbot, comme indiqué ci-dessous :

# Entrez n'importe quelle instruction de votre choix entre les parenthèses pour obtenir sa réponse.
response = bot.get_response('Quel médecin est disponible ?')
print("Réponse du bot :", response)

Exécuter le Chatbot

Nous allons d’abord demander à l’utilisateur son nom et son adresse e-mail, et les stocker en tant que variables. Nous allons ensuite afficher un message de bienvenue pour l’utilisateur. Pour l’entrée de l’utilisateur, nous allons créer une boucle while qui demande continuellement l’entrée de l’utilisateur. Ce processus s’arrêtera lorsque l’utilisateur tapera ‘Bye’.

name=input("Veuillez entrer votre nom : ")
email = input("Veuillez entrer votre adresse e-mail : ")
print("Bienvenue au service ChatBot pour Pseudonymous ENT ! Comment puis-je vous aider ? (Entrez 'Bye' pour quitter)")
while True:
    request=input(name+':')
    if request=='Bye' or request =='bye':
        print('ChatBot : C\'était super de parler avec vous ! Au revoir !')
        break
    else:
        response=bot.get_response(request)
        print('ChatBot:',response)

Exemple de Sortie

Voici un exemple de ce à quoi ressemblait ma sortie lorsque j’ai testé mon chatbot :

Veuillez entrer votre nom : Nik
Veuillez entrer votre adresse e-mail : nik@example.com
Bienvenue au service ChatBot pour Pseudonymous ENT ! Comment puis-je vous aider ? (Entrez 'Bye' pour quitter)
Nik:Je veux prendre rendez-vous
ChatBot : Bien sûr, veuillez choisir un créneau entre Matin, Après-midi ou Soir :
Nik:Soir
ChatBot : Votre rendez-vous est confirmé. Vous pouvez venir entre 16h00 et 19h00.
Nik:Je veux changer mon rendez-vous
ChatBot : D'accord, votre rendez-vous a été annulé.
Nik:Je veux changer mon créneau de rendez-vous
ChatBot : D'accord, votre rendez-vous a été annulé.
Nik:Je voudrais changer mon rendez-vous
ChatBot : Bien sûr, quel créneau souhaitez-vous ? Vous pouvez choisir entre Matin, Après-midi et Soir.
Nik:Matin
ChatBot : Votre rendez-vous est confirmé. Vous pouvez venir entre 8h00 et 12h00.
Nik:Quel médecin est disponible ?
ChatBot : Nous avons le Dr Esther, le Dr Judith, le Dr Sarah, le Dr Matthew et le Dr Rob
Nik:Où êtes-vous situé ?
ChatBot : Vous pouvez nous trouver au 45, 8e croisement, rue Oakwood
Nik:Ukulele
ChatBot : Salut
Nik:Merci !
ChatBot : Bien sûr !
Nik:Bye
ChatBot : C'était super de parler avec vous ! Au revoir !

Dans la sortie présentée ci-dessus, nous pouvons certainement voir quelques erreurs :

  1. Lorsque j’ai demandé à modifier mon rendez-vous, le chatbot a annulé mon rendez-vous à la place. Cela pourrait être dû à une corrélation incorrecte des mots entre les données d’entraînement et les données d’entrée. Les données d’entraînement utilisent ‘Je veux’ pour l’annulation de rendez-vous, et donc, le programme a associé ‘Je veux’ à la réponse d’annulation de rendez-vous. Dans la ligne suivante, lorsque j’ai utilisé les mots ‘Je voudrais’, le programme a compris ce que je voulais réellement dire.
  2. Le chatbot n’affiche pas le message d’erreur par défaut lorsque je tape le mot aléatoire ‘Ukulele’. Au lieu de cela, il affiche ‘Salut’.

Comme vous pouvez le constater, il reste encore beaucoup à faire pour améliorer ce chatbot. Nous pouvons ajouter davantage de données d’entraînement ou collecter des données de conversation réelles qui peuvent être utilisées pour entraîner le chatbot. Essayez d’ajouter des données d’entraînement propres supplémentaires et voyez à quel point vous pouvez le rendre précis.

Bon courage !

Remarque : Vous pouvez trouver le fichier de code complet, y compris quelques conseils de dépannage pour les erreurs possibles que vous pourriez rencontrer, sur GitHub : https://github.com/nikitasilaparasetty/Chatbot-Tutorials/blob/main/How%20to%20Build%20a%20Chatbot%20Using%20the%20ChatterBot%20Python%20Library.ipynb