Chatbot y python

En esta entrada se mostrará un ejemplo sencillo, sobre un chatbot que consulta y responde en base a un arreglo de respuestas previamente cargados, es uno de los más básicos chatbots.
código de chatbot
import nltk
from nltk.chat.util import Chat, reflections
# Definición de los patrones de entrada y respuestas
patrones = [
[
r"mi nombre es (.*)", # Si el usuario escribe "mi nombre es [nombre]"
["Hola %1, ¿cómo puedo ayudarte?",] # El chatbot responde saludando con el nombre del usuario
],
[
r"hola|buenos dias|buenas tardes|buenas noches", # Si el usuario teclea "hola" o saludo similar
["¡Hola! ¿En qué puedo ayudarte?",] # El chatbot responde con un saludo y ofrece su ayuda
],
[
r"¿Cómo estás?", # Si el usuario pregunta "¿Cómo estás?"
["Estoy bien, gracias. ¿Y tú?",] # El chatbot responde que está bien y pregunta cómo está el usuario
],
[
r"bye|chao|adios|diu|hasta luego|Hasta Luego", # Si el usuario escribe "bye" o algo similar
["¡Hasta luego! Si necesitas algo más, no dudes en preguntar.",] # El chatbot se despide y finaliza la conversación
],
]
def chatbot():
print("¡Hola! Soy un chatbot, mi nombre es Noa. ¿En qué puedo ayudarte?")
chat = Chat(patrones, reflections) # Creación de un objeto Chat con los pares de entrada y respuestas
chat.converse() # Inicio de la conversación con el chatbot
if __name__ == "__main__":
chatbot() # Llamada a la función principal para iniciar el chatbot
En el código anterior se observa lo siguiente:
- En la primera línea, se importa la biblioteca
nltk, que es el acrónimo de Natural Language Toolkit. Esta proporciona herramientas y recursos para el procesamiento del lenguaje natural. - Luego, se importa la clase
Chaty el móduloreflectionsdel módulonltk.chat.util. La claseChatse utiliza para crear una instancia del chatbot y gestionar la conversación, mientrasreflectionscontiene un conjunto de reflexiones predefinidas que pueden ser utilizadas para responder de manera más natural. - A continuación, se define la variable
patrones, que es una lista de listas. Cada sublista contiene un patrón de entrada y una lista de posibles respuestas asociadas a ese patrón. Estos patrones y respuestas definen las reglas para que el chatbot responda a ciertos tipos de entradas del usuario. - La función
chatbot()es definida. Esta imprime un mensaje de bienvenida y crea una instancia de la claseChatutilizando los patrones y reflexiones definidos anteriormente. - Luego, se llama al método
converse()en el objetochat. Este método inicia la conversación con el chatbot. El chatbot espera a que el usuario ingrese un mensaje, y luego selecciona una respuesta adecuada basada en los patrones definidos. - Finalmente, en la parte inferior del código, verificamos si el archivo actual es el archivo principal que se está ejecutando (
__name__ == "__main__"). Si es así, llamamos a la funciónchatbot()para iniciar el chatbot.
Este código define un chatbot muy básico, respondiendo a algunas entradas simples del usuario, como saludos, preguntas sobre el estado del chatbot y despedidas. Los patrones de entrada y respuestas se definen en la lista patroness, y la interacción con el chatbot se maneja utilizando el objeto Chat.
Este código se encuentra disponible en: https://github.com/ajgutierr3z/chatbot/tree/main