Capítulo 10: Introducción a los Chatbots
Ejercicios Prácticos
Ejercicio 1: Chatbot Basado en Reglas
Tarea: Implementar un chatbot basado en reglas que pueda responder preguntas básicas sobre la información de contacto de una empresa ficticia, horarios de operación y servicios ofrecidos.
Solución:
def rule_based_chatbot(user_input):
responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what are your hours of operation?": "Our office is open from 9 AM to 5 PM, Monday to Friday.",
"where are you located?": "We are located at 123 Main Street, Anytown, USA.",
"what services do you offer?": "We offer web development, mobile app development, and digital marketing services.",
"bye": "Goodbye! Have a great day!"
}
user_input = user_input.lower()
return responses.get(user_input, "I'm sorry, I don't understand that. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = rule_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 2: Retrieval-Based Chatbot
Tarea: Implementar un chatbot basado en recuperación que use el vectorizador TF-IDF y la similitud coseno para coincidir las consultas de los usuarios con respuestas predefinidas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def retrieval_based_chatbot(user_input):
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = retrieval_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 3: Generative Chatbot
Tarea: Implementar un chatbot generativo simple utilizando un modelo Seq2Seq existente para generar respuestas. Para este ejercicio, simularemos el uso de un modelo preentrenado.
Solución:
Dado que entrenar un modelo Seq2Seq desde cero es complejo y requiere una cantidad significativa de datos, simularemos las respuestas como si fueran generadas por un modelo Seq2Seq preentrenado.
# Simulated pre-trained Seq2Seq model responses
pretrained_responses = {
"hello": "Hello! How can I help you today?",
"how are you?": "I'm just a chatbot, but I'm here to assist you!",
"what is your name?": "I am ChatBot, your virtual assistant.",
"bye": "Goodbye! Take care!"
}
def generative_chatbot(user_input):
user_input = user_input.lower()
return pretrained_responses.get(user_input, "I'm still learning. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Take care!")
break
response = generative_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 4: Hybrid Chatbot
Tarea: Implementar un chatbot híbrido que utilice respuestas basadas en reglas para saludos comunes y respuestas basadas en autoaprendizaje (basadas en recuperación) para otras consultas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 5: Mejorar el Chatbot Híbrido con Más Respuestas
Tarea: Mejora el chatbot híbrido añadiendo más respuestas basadas en reglas y ampliando el corpus de respuestas basadas en recuperación.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services.",
"You can contact us at support@company.com.",
"Our phone number is (123) 456-7890."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def enhanced_hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what is your phone number?": "Our phone number is (123) 456-7890.",
"what is your email address?": "You can contact us at support@company.com.",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = enhanced_hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Estos ejercicios proporcionan una experiencia práctica con diferentes tipos de chatbots, reforzando los conceptos cubiertos en este capítulo.
Ejercicios Prácticos
Ejercicio 1: Chatbot Basado en Reglas
Tarea: Implementar un chatbot basado en reglas que pueda responder preguntas básicas sobre la información de contacto de una empresa ficticia, horarios de operación y servicios ofrecidos.
Solución:
def rule_based_chatbot(user_input):
responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what are your hours of operation?": "Our office is open from 9 AM to 5 PM, Monday to Friday.",
"where are you located?": "We are located at 123 Main Street, Anytown, USA.",
"what services do you offer?": "We offer web development, mobile app development, and digital marketing services.",
"bye": "Goodbye! Have a great day!"
}
user_input = user_input.lower()
return responses.get(user_input, "I'm sorry, I don't understand that. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = rule_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 2: Retrieval-Based Chatbot
Tarea: Implementar un chatbot basado en recuperación que use el vectorizador TF-IDF y la similitud coseno para coincidir las consultas de los usuarios con respuestas predefinidas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def retrieval_based_chatbot(user_input):
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = retrieval_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 3: Generative Chatbot
Tarea: Implementar un chatbot generativo simple utilizando un modelo Seq2Seq existente para generar respuestas. Para este ejercicio, simularemos el uso de un modelo preentrenado.
Solución:
Dado que entrenar un modelo Seq2Seq desde cero es complejo y requiere una cantidad significativa de datos, simularemos las respuestas como si fueran generadas por un modelo Seq2Seq preentrenado.
# Simulated pre-trained Seq2Seq model responses
pretrained_responses = {
"hello": "Hello! How can I help you today?",
"how are you?": "I'm just a chatbot, but I'm here to assist you!",
"what is your name?": "I am ChatBot, your virtual assistant.",
"bye": "Goodbye! Take care!"
}
def generative_chatbot(user_input):
user_input = user_input.lower()
return pretrained_responses.get(user_input, "I'm still learning. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Take care!")
break
response = generative_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 4: Hybrid Chatbot
Tarea: Implementar un chatbot híbrido que utilice respuestas basadas en reglas para saludos comunes y respuestas basadas en autoaprendizaje (basadas en recuperación) para otras consultas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 5: Mejorar el Chatbot Híbrido con Más Respuestas
Tarea: Mejora el chatbot híbrido añadiendo más respuestas basadas en reglas y ampliando el corpus de respuestas basadas en recuperación.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services.",
"You can contact us at support@company.com.",
"Our phone number is (123) 456-7890."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def enhanced_hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what is your phone number?": "Our phone number is (123) 456-7890.",
"what is your email address?": "You can contact us at support@company.com.",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = enhanced_hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Estos ejercicios proporcionan una experiencia práctica con diferentes tipos de chatbots, reforzando los conceptos cubiertos en este capítulo.
Ejercicios Prácticos
Ejercicio 1: Chatbot Basado en Reglas
Tarea: Implementar un chatbot basado en reglas que pueda responder preguntas básicas sobre la información de contacto de una empresa ficticia, horarios de operación y servicios ofrecidos.
Solución:
def rule_based_chatbot(user_input):
responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what are your hours of operation?": "Our office is open from 9 AM to 5 PM, Monday to Friday.",
"where are you located?": "We are located at 123 Main Street, Anytown, USA.",
"what services do you offer?": "We offer web development, mobile app development, and digital marketing services.",
"bye": "Goodbye! Have a great day!"
}
user_input = user_input.lower()
return responses.get(user_input, "I'm sorry, I don't understand that. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = rule_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 2: Retrieval-Based Chatbot
Tarea: Implementar un chatbot basado en recuperación que use el vectorizador TF-IDF y la similitud coseno para coincidir las consultas de los usuarios con respuestas predefinidas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def retrieval_based_chatbot(user_input):
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = retrieval_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 3: Generative Chatbot
Tarea: Implementar un chatbot generativo simple utilizando un modelo Seq2Seq existente para generar respuestas. Para este ejercicio, simularemos el uso de un modelo preentrenado.
Solución:
Dado que entrenar un modelo Seq2Seq desde cero es complejo y requiere una cantidad significativa de datos, simularemos las respuestas como si fueran generadas por un modelo Seq2Seq preentrenado.
# Simulated pre-trained Seq2Seq model responses
pretrained_responses = {
"hello": "Hello! How can I help you today?",
"how are you?": "I'm just a chatbot, but I'm here to assist you!",
"what is your name?": "I am ChatBot, your virtual assistant.",
"bye": "Goodbye! Take care!"
}
def generative_chatbot(user_input):
user_input = user_input.lower()
return pretrained_responses.get(user_input, "I'm still learning. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Take care!")
break
response = generative_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 4: Hybrid Chatbot
Tarea: Implementar un chatbot híbrido que utilice respuestas basadas en reglas para saludos comunes y respuestas basadas en autoaprendizaje (basadas en recuperación) para otras consultas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 5: Mejorar el Chatbot Híbrido con Más Respuestas
Tarea: Mejora el chatbot híbrido añadiendo más respuestas basadas en reglas y ampliando el corpus de respuestas basadas en recuperación.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services.",
"You can contact us at support@company.com.",
"Our phone number is (123) 456-7890."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def enhanced_hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what is your phone number?": "Our phone number is (123) 456-7890.",
"what is your email address?": "You can contact us at support@company.com.",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = enhanced_hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Estos ejercicios proporcionan una experiencia práctica con diferentes tipos de chatbots, reforzando los conceptos cubiertos en este capítulo.
Ejercicios Prácticos
Ejercicio 1: Chatbot Basado en Reglas
Tarea: Implementar un chatbot basado en reglas que pueda responder preguntas básicas sobre la información de contacto de una empresa ficticia, horarios de operación y servicios ofrecidos.
Solución:
def rule_based_chatbot(user_input):
responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what are your hours of operation?": "Our office is open from 9 AM to 5 PM, Monday to Friday.",
"where are you located?": "We are located at 123 Main Street, Anytown, USA.",
"what services do you offer?": "We offer web development, mobile app development, and digital marketing services.",
"bye": "Goodbye! Have a great day!"
}
user_input = user_input.lower()
return responses.get(user_input, "I'm sorry, I don't understand that. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = rule_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 2: Retrieval-Based Chatbot
Tarea: Implementar un chatbot basado en recuperación que use el vectorizador TF-IDF y la similitud coseno para coincidir las consultas de los usuarios con respuestas predefinidas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def retrieval_based_chatbot(user_input):
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = retrieval_based_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 3: Generative Chatbot
Tarea: Implementar un chatbot generativo simple utilizando un modelo Seq2Seq existente para generar respuestas. Para este ejercicio, simularemos el uso de un modelo preentrenado.
Solución:
Dado que entrenar un modelo Seq2Seq desde cero es complejo y requiere una cantidad significativa de datos, simularemos las respuestas como si fueran generadas por un modelo Seq2Seq preentrenado.
# Simulated pre-trained Seq2Seq model responses
pretrained_responses = {
"hello": "Hello! How can I help you today?",
"how are you?": "I'm just a chatbot, but I'm here to assist you!",
"what is your name?": "I am ChatBot, your virtual assistant.",
"bye": "Goodbye! Take care!"
}
def generative_chatbot(user_input):
user_input = user_input.lower()
return pretrained_responses.get(user_input, "I'm still learning. Can you please rephrase?")
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Take care!")
break
response = generative_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 4: Hybrid Chatbot
Tarea: Implementar un chatbot híbrido que utilice respuestas basadas en reglas para saludos comunes y respuestas basadas en autoaprendizaje (basadas en recuperación) para otras consultas.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Ejercicio 5: Mejorar el Chatbot Híbrido con Más Respuestas
Tarea: Mejora el chatbot híbrido añadiendo más respuestas basadas en reglas y ampliando el corpus de respuestas basadas en recuperación.
Solución:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
corpus = [
"Our office is open from 9 AM to 5 PM, Monday to Friday.",
"We are located at 123 Main Street, Anytown, USA.",
"We offer web development, mobile app development, and digital marketing services.",
"You can contact us at support@company.com.",
"Our phone number is (123) 456-7890."
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
def enhanced_hybrid_chatbot(user_input):
rule_based_responses = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! What can I do for you?",
"what is your phone number?": "Our phone number is (123) 456-7890.",
"what is your email address?": "You can contact us at support@company.com.",
"bye": "Goodbye! Have a great day!"
}
user_input_lower = user_input.lower()
if user_input_lower in rule_based_responses:
return rule_based_responses[user_input_lower]
else:
user_input_vector = vectorizer.transform([user_input])
similarities = cosine_similarity(user_input_vector, X)
response_index = similarities.argmax()
return corpus[response_index]
# Test the chatbot
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
print("ChatBot: Goodbye! Have a great day!")
break
response = enhanced_hybrid_chatbot(user_input)
print(f"ChatBot: {response}")
Estos ejercicios proporcionan una experiencia práctica con diferentes tipos de chatbots, reforzando los conceptos cubiertos en este capítulo.