ChatterBot - Creando ChatBots con Python
Introducción:
En el día de hoy, les mostrare un modulo llamado "ChatterBot", el cual es un software para la creación de Chat Bots. Todo de una manera muy sencilla. Realizaremos una ejemplos muy entretenidos y muy interesantes.
¿Que te parece si en el articulo de hoy creamos a nuestro propio Jarvis?
Actualmente existe una gran cantidad de tecnologías para la creación de Chat Bots. Y es que a quien no le gustan los Bots? Estos pequeños software que al decirles "Hola" nos responden y nos hacen sentir como un Tony Stark creando nuestro Jarvis.
Puedes descargar el modulo ChatterBot Ingresando Aquí.
O puedes descargarlo utilizando PyPi: pip install chatterbot.
ChatBots con ChatterBot:
Comencemos con un ejemplo sencillo. Entrenaremos a un Bot con un serie de datos de diferentes temas (conversaciones, deporte, comida, política, etc). Luego le hablaremos a nuestro Bot para ver su respuesta:
from chatterbot import ChatBot # Importamos la clase ChatBot # Creamos una instancia de ChatBot para la creación de un Bot. # Le pasamos como arcumneto el nombre que le daremos al Bot: "PythonBot" # Y los datos que se utilizaran para entrenar al Bot chatbot = ChatBot( 'PythonBot', trainer='chatterbot.trainers.ChatterBotCorpusTrainer' ) # Entrenamos al Bot chatbot.train("chatterbot.corpus.english") # Respuesta para "Hello, how are you?" chatbot.get_response("Hello, how are you?")
Este es un ejemplo básico sobre una respuesta simple del Bot. Como pueden observar, lo primero que hará el script será entrenar al Bot con cada uno de los temas. Luego le decimos algo al Bot: "Hello, how are you?" - "Hola, como estas?". Por lo que éste respondió: "I am doing well." - "Estoy bien"
chatbot.get_response("Dollar")
<Statement text:you can't buy much for a dollar anymore.>
Como pueden observar, la respuesta fue: "You can´t buy much a dollar anymore" - "Ya no puedes comprar mucho por un dólar". Es increíble, ¿No es así?.
Prueba con tus propios temas.
Muy bien, es hora de convertir nuestro Bot hablador, en algo más funcional. Lo que haremos será crear un Jarvis que pueda realizar operaciones aritméticas y que nos pueda dar la hora:
from chatterbot import ChatBot # Creamos a jarvis y definimos sus caracteristicas bot = ChatBot( "jarvis", logic_adapters=[ # Importamos los adaptadores "chatterbot.logic.MathematicalEvaluation", "chatterbot.logic.TimeLogicAdapter" ], input_adapter="chatterbot.input.VariableInputTypeAdapter", output_adapter="chatterbot.output.OutputAdapter" ) # Le preguntamos a Jarvis cuanto es 30 * 4 response = bot.get_response("What is 30 * 4?") print(response) # mostramos la respuesta de Jarvis # Le preguntamos a jarvis ¿que hora es? response = bot.get_response("What time is it?") print(response) # Mostramos la respuesta de jarvis
30 * 4 = 120 The current time is 08:45 PM
Como podemos ver, el resultado es satisfactorio. Recuerden que pueden utilizar cualquier operación aritméticas con el bot (+, -, *, /).
Muy bien, hasta ahora lo hemos hecho bien. ¿Qué pasa sí queremos re-programar las repuestas de Jarvis? Para ello existe un adaptador que nos permite darle respuestas especificas al bot:
from chatterbot import ChatBot # Creamos una instancia de jarvis bot = ChatBot( 'jarvis', storage_adapter='chatterbot.storage.SQLStorageAdapter', # Importamos el adaptador de almacenamiento logic_adapters=[ { 'import_path': 'chatterbot.logic.BestMatch' # importaos el adaptador para las respuestas }, { 'import_path': 'chatterbot.logic.SpecificResponseAdapter', # Adaptador para respuestas especificas 'input_text': 'Quien eres?', # Entrada del usuario 'output_text': 'Mi nombre es Jarvis, estoy para servirle' # Respuesta de jarvis } ], trainer='chatterbot.trainers.ListTrainer' # Entrenamos al bot ) # Preguntamos al Bot ¿Quien eres? response = bot.get_response('Quien eres?') print(response) # Mostramos la respuesta
Mi nombre es Jarvis, estoy para servirle
Y como resultado, obtenemos la respuesta que nosotros mismos hemos especificado.
Este modulo esta para que lo uses de la manera que tu quieras, creer los bots que quieras, como quieras.
¿Alguna duda? No olvides dejar tu comentario.
Puedes descargar un buen PDF con información acerca del Procesamiento del Lenguaje Natural Ingresando Aquí.
Descarga todos los ejemplos mostrados en este articulo Ingresando Aquí.
Quizá te interese ver también: Introducción a las Redes Neuronales- Parte #1 - Tipos de Redes Neuronales
Recuerda que en nuestro blog puedes encontrar mucha información útil sobre Pyhton. Puedes Aprender Python de manera cómoda, aquí, en Mi Diario Python.
Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
-
-
hola,tuve un problema similar. Tendrias que volver a entrenar el chatbot, y pues las preguntas y respuestas se tendria que resetear. Espero poder ayudarte.
-
-
Hola me manda error de librería de chatterbot
-
HOla ¿si la pregunta no esta en la lista, como hago para que responda un raspuesta en especifico?
-
Yo me qued atascada en el primer bloque de código... Me da este error: ModuleNotFoundError: No module named 'chatterbot_corpus'
¿Hay que instalar algo más o no está bien instalado chatterbox?
-
Tienes que instalar el chatterbot corpus...
Pop install chatterbot-corpus
vía ssh
-
Tienes que instalar el chatterbot corpus...
pip install chatterbot-corpus
Vía ssh
-
-
Deja una respuesta
Hola Luis, gracias por tus explicaciones. Consulta, le estoy editando los "corpus" en español. Lo entreno, pero me sigue trayendo respuestas viejas como "hace calor?" cuando le pregunto el nombre...esta respuesta ya no está en los archivos yml...como reseteo lo que sabe el bot? Como para empezar desde cero.
Muchas gracias!!!