ChatBot: Créez votre propre robot de chat intelligent AI à l’aide de Python – randerson112358

ChatBot: Créez votre propre robot de chat intelligent AI à l'aide de Python - randerson112358

Je vais commencer par dire ce que je veux que ce programme fasse. Ce programme prend le texte d’un site Web en ligne et l’utilise pour discuter et répondre aux requêtes. Nous allons essentiellement créer un programme de chat bot «intelligent» pour répondre aux questions sur les maladies rénales chroniques.

# Description: This is a 'smart'  program

Nous devons installer quelques packages nltk et newspaper3k . NLTK est le package Natural Language Tool Kit, qui est un package populaire pour NLP avec Python. Newspaper3k est un package python utilisé pour extraire et analyser des articles de journaux.

pip install nltk
pip install newspaper3k

Importez ensuite les bibliothèques. Nous utiliserons le newspaperbibliothèque pour extraire le texte du site Web en utilisant le Article classe. Nous utiliserons le random bibliothèque pour générer un nombre aléatoire pour notre réponse d’accueil. Nous utiliserons le string bibliothèque pour traiter la chaîne Python standard. lesklearn.feature_extraction.text la bibliothèque sera utilisée pour obtenir la classe de vectorisation de comptage countVectorizer pour vectoriser le texte et évaluer l’importance d’un mot pour un document. Du sklearn.metrics.pairwise bibliothèque, nous aurons le cosine_similarity pour voir à quel point le texte est similaire aux requêtes des utilisateurs. Nous importerons également le numpy bibliothèque pour utiliser certaines de ses méthodes comme la méthode sort (). Enfin, nous utiliserons le warnings bibliothèque pour ignorer les avertissements que nous recevons avec ce programme.

#import libraries
from newspaper import Article
import random
import string
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import nltk
import numpy as np
import warnings
warnings.filterwarnings('ignore')

Téléchargez le punkt paquet. Punkt est un modèle de tokenizer pré-formé pour la langue anglaise qui divise le texte en une liste de phrases. Si vous ne savez pas de quels jeux de données / modèles vous aurez besoin, vous pouvez installer le popular package qui est un sous-ensemble de données NLTK, ou tous les packages utilisant nltk.download()

Remarque: l’option silencieuse empêche NLTK de sortir vers le terminal lors du téléchargement.

nltk.download('punkt', quiet=True) # Download the punkt package

Lisez l’URL de l’article pour obtenir le corpus de texte. N’oubliez pas qu’un corpus de texte ou un corpus est un ensemble vaste et structuré de textes d’un auteur particulier ou un corpus d’écriture sur un sujet particulier.

Téléchargez l’article, puis analysez l’article et appliquez la PNL à l’article. Ensuite, stockez le texte des articles dans une variable corpus .

#Get the article URL
article = Article('https://www.mayoclinic.org/diseases-conditions/chronic-kidney-disease/symptoms-causes/syc-20354521')
article.download() #Download the article
article.parse() #Parse the article
article.nlp() #Apply Natural Language Processing (NLP)
corpus = article.text #Store the article text into corpus

Imprimez le corpus.

print(corpus)
Un échantillon du texte / corpus imprimé

Ensuite, nous allons tokenize le texte en obtenant une liste de phrases du texte.

#Tokenization
text = corpus
sent_tokens = nltk.sent_tokenize(text)# txt to a list of sentences

Imprimez la liste des phrases.

#Print the list of sentences
print(sent_tokens)
Exemple de jeton de phrase imprimé

Ensuite, nous utiliserons la correspondance des mots clés (une approche basée sur des règles) pour vérifier les mots de type message d’accueil comme entrée de l’utilisateur et répondre en retour avec un message d’accueil aléatoire en sortie.

Pour ce faire, nous devons créer une liste d’entrées de salutation (les salutations que nous attendons de l’utilisateur), puis nous créerons une liste de réponses de salutation (les salutations que notre robot de chat utilisera).

Ensuite, nous allons créer une fonction pour vérifier les salutations des utilisateurs et choisir au hasard une réponse de salutation.

#Function to return a random greeting response to a users greeting
def greeting_response(text):
#Convert the text to be all lowercase
text = text.lower()
# Keyword Matching
#Greeting responses back to the user from the bot
bot_greetings = ["howdy","hi", "hey", "what's good", "hello","hey there"]
#Greeting input from the user
user_greetings = ["hi", "hello", "hola", "greetings", "wassup","hey"]

#If user's input is a greeting, return a randomly chosen greeting response
for word in text.split():
if word in user_greetings:
return random.choice(bot_greetings)

Créez une fonction pour renvoyer les indices des valeurs d’un tableau dans l’ordre trié par les valeurs des tableaux. Cette fonction aidera à renvoyer la réponse du chat bot.

#Return the indices of the values from an array in sorted order by the values
def index_sort(list_var):
length = len(list_var)
list_index = list(range(0, length))
x = list_var
for i in range(length):
for j in range(length):
if x[list_index[i]] > x[list_index[j]]:
temp = list_index[i]
list_index[i] = list_index[j]
list_index[j] = temp
return list_index

Nous allons créer une fonction qui prendra en compte la réponse ou les requêtes des utilisateurs, puis renverra les meilleures réponses sélectionnées dans le corpus.

# Generate the response
def bot_response(user_input):
user_input = user_input.lower() #Convert the users input to all lowercase letters
sentence_list.append(user_input) #Append the users response to the list of sentence tokens
bot_response='' #Create an empty response for the bot
cm = CountVectorizer().fit_transform(sentence_list) #Create the count matrix
similarity_scores = cosine_similarity(cm[-1], cm) #Get the similarity scores to the users input
flatten = similarity_scores.flatten() #Reduce the dimensionality of the similarity scores
index = index_sort(flatten) #Sort the index from
index = index[1:] #Get all of the similarity scores except the first (the query itself)
response_flag=0 #Set a flag letting us know if the text contains a similarity score greater than 0.0
#Loop the through the index list and get the 'n' number of sentences as the response
j = 0
for i in range(0, len(index)):
if flatten[index[i]] > 0.0:
bot_response = bot_response+' '+sentence_list[index[i]]
response_flag = 1
j = j+1
if j > 2:
break
#if no sentence contains a similarity score greater than 0.0 then print 'I apologize, I don't understand'
if(response_flag==0):
bot_response = bot_response+' '+"I apologize, I don't understand."
sentence_list.remove(user_input) #Remove the users response from the sentence tokens

return bot_response

Nous pouvons maintenant créer une boucle continue pour que le bot de chat puisse converser avec l’utilisateur. Nous exécuterons cette boucle jusqu’à ce que la réponse des utilisateurs soit «exit».

#Start the chat
print("Doc Bot: I am DOCTOR BOT or Doc Bot for short. I will answer your queries about Chronic Kidney Disease. If you want to exit, type Bye!")
exit_list = ['exit', 'see you later','bye', 'quit', 'break']while(True):
user_input = input()
if(user_input.lower() in exit_list):
print("Doc Bot: Chat with you later !")
break
else:
if(greeting_response(user_input)!= None):
print("Doc Bot: "+greeting_response(user_input))
else:
print("Doc Bot: "+bot_response(user_input))

Si vous souhaitez également en savoir plus sur l’apprentissage automatique pour commencer immédiatement avec des problèmes et des exemples, je vous recommande fortement de consulter l’apprentissage automatique pratique avec Scikit-Learn et TensorFlow: Concepts, outils et techniques pour créer des systèmes intelligents. C’est un excellent livre pour aider les débutants à apprendre à écrire des programmes d’apprentissage automatique et à comprendre les concepts d’apprentissage automatique.

Apprentissage automatique pratique avec Scikit-Learn et TensorFlow: concepts, outils et techniques pour créer des systèmes intelligents

Merci d’avoir lu cet article, j’espère qu’il vous sera utile à tous! Si vous avez apprécié cet article et l’avez trouvé utile, veuillez laisser quelques applaudissements pour montrer votre appréciation. Continuez à apprendre et si vous aimez l’apprentissage automatique, les mathématiques, l’informatique, la programmation ou l’analyse d’algorithmes, veuillez visiter et vous abonner à mes chaînes YouTube (randerson112358 et compsci112358).

[1]TF-IDF
[2]FreecodeCamp.com
[3]Similitude cosinus
[4]Créez votre propre en utilisant Python
[5]Créer un moteur de recommandation de films
[6]Une introduction au sac de mots
[7] Clinique Mayo

ChatBot: Créez votre propre robot de chat intelligent AI à l'aide de Python - randerson112358

#Créez #votre #propre #robot #chat #intelligent #laide #Python #randerson112358