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
Chat
y el móduloreflections
del módulonltk.chat.util
. La claseChat
se utiliza para crear una instancia del chatbot y gestionar la conversación, mientrasreflections
contiene 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 claseChat
utilizando 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