ChatterBot - Creando ChatBots con Python

Índice

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.

 
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?")
 
ai.yml Training: [####################] 100%
botprofile.yml Training: [####################] 100%
computers.yml Training: [####################] 100%
conversations.yml Training: [####################] 100%
emotion.yml Training: [####################] 100%
food.yml Training: [####################] 100%
gossip.yml Training: [####################] 100%
greetings.yml Training: [####################] 100%
history.yml Training: [####################] 100%
humor.yml Training: [####################] 100%
literature.yml Training: [####################] 100%
money.yml Training: [####################] 100%
movies.yml Training: [####################] 100%
politics.yml Training: [####################] 100%
psychology.yml Training: [####################] 100%
science.yml Training: [####################] 100%
sports.yml Training: [####################] 100%
trivia.yml Training: [####################] 100%
Out[1]:
<Statement text:I am doing well.>
 

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" 

Y con esto ya hemos creado a nuestro primer Bot. Todo esto de manera muy sencilla con ChatterBot.
 
¿Qué pasa si le hablamos sobre un tema en especifico? Podemos probarlo. Lo que haré será mencionar la palabra "Dollar" y veremos que sucede.
 
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.

  1. Unknown dice:

    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!!!

    1. Unknown dice:

      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.

  2. Unknown dice:

    Hola me manda error de librería de chatterbot

  3. Carlos dice:

    HOla ¿si la pregunta no esta en la lista, como hago para que responda un raspuesta en especifico?

  4. Elena dice:

    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?

    1. Pedro dice:

      Tienes que instalar el chatterbot corpus...

      Pop install chatterbot-corpus

      vía ssh

      1. Pedro dice:

        Tienes que instalar el chatterbot corpus...

        pip install chatterbot-corpus

        Vía ssh

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey