Course
Construir un Chatbot usando Chatterbot en Python
¿Estás cansado de esperar en largas colas a que conecten tu llamada con el ejecutivo de atención al cliente? ¿Leer las FAQ te hace sentir aletargado? Entonces estás en la página correcta. ¿Recuerdas la última vez que te comunicaste con un agente del servicio de atención al cliente a través del chat porque te habían entregado un artículo equivocado? Existe una alta probabilidad de que se haya comunicado contigo un bot en lugar de un representante del servicio de atención al cliente. ¿Qué son exactamente los robots? ¿Cómo construimos uno? ¿Qué fuente de código requiere? Éstas son algunas de las preguntas a las que responderemos en esta entrada del blog.
La inteligencia artificial, que pone en juego el aprendizaje automático y el Procesamiento del Lenguaje Natural (PLN) para construir bots o chatbot, está diseñada específicamente para desentrañar la interacción fluida entre humanos y ordenadores. Los chatbots están por todas partes, ya sea un sitio web bancario, una pizzería o tiendas de comercio electrónico, encontrarás chatbots a diestro y siniestro. Los chatbots proporcionan asistencia de atención al cliente en tiempo real sobre una serie de preguntas predefinidas relacionadas con el dominio sobre el que está construido. Adapta el lenguaje humano natural y conversa con los humanos de forma similar a la humana.
Para simplificar la definición de chatbot, podemos decir que los chatbots son la evolución de los sistemas de pregunta-respuesta que emplean el procesamiento del lenguaje natural. Según las fuentes, para el año 2024, el tamaño del mercado mundial de la conversación ascenderá a 15.700 millones de dólares, con una tasa de crecimiento anual del 30,2%. Por ejemplo, en medio de la pandemia del CoronaVirus, hemos sido testigos de miles de bulos que circulan por WhatsApp, como qué se puede utilizar para tratar el COVID o qué puede ser beneficioso para aumentar la inmunidad, o si el virus se desarrolló en un laboratorio. Para acabar con estos bulos, Facebook ha lanzado un chatbot que funciona como verificador de hechos.
¿Te interesa construir un chatbot con herramientas como OpenAI y Pinecone? Echa un vistazo a nuestro código a continuación:
¿Qué es un Chatbot?
El término "chatterbot" surgió en 1994, cuando Michael Mauldin creó su primer chatbot llamado "Julia". Según el Diccionario Oxford, un chatbot se define como "Un programa informático diseñado para simular una conversación con usuarios humanos, especialmente a través de Internet". Puede considerarse como un asistente virtual que se comunica con los usuarios a través de mensajes de texto y ayuda a las empresas a acercarse a sus clientes. Es un programa diseñado para imitar la forma en que los seres humanos se comunican entre sí. Puede hacerse a través de una interfaz de chat o mediante una llamada de voz. Los desarrolladores suelen diseñar los chatbots de modo que a los usuarios les resulte difícil saber si se están comunicando con una persona o con un robot.
Los chatbots ayudan a cualquier empresa/organización a lograr los siguientes objetivos:
- Aumenta la eficacia operativa.
- Automatizar el cumplimiento de las solicitudes de los clientes.
- Gestionar consultas básicas, lo que a su vez libera a los empleados para trabajar en consultas complejas y de mayor valor.
- Ofrece soporte multilingüe.
- Ahorra tiempo y esfuerzo automatizando la atención al cliente.
- Mejora la tasa de respuesta y el compromiso del cliente.
- Personalización de la comunicación
¿Cómo funciona un Chatbot?
Los chatbots no son más que aplicaciones de software que tienen una capa de aplicación, una base de datos y API. Para simplificar el funcionamiento del chatbot, podemos decir que funciona mediante la concordancia de patrones para clasificar el texto y producir una respuesta adecuada a las preguntas/consultas planteadas por el usuario. El chatbot responde al usuario según el programa que se haya introducido en él. Los chatbots son de distintos tipos, dependiendo de cómo se utilicen. Principalmente hay tres tipos de chatbots, y son los siguientes:
-
Chatbot basado en reglas: Este es el chatbot básico que se hace, el usuario interactúa con este tipo de bot utilizando opciones predefinidas. Para obtener respuestas de estos robots, los usuarios tienen que hacer clic en determinadas opciones. Este tipo de bots recogen la petición del usuario, la analizan y luego ofrecen resultados en forma de botones. Estos bots se utilizan habitualmente para sustituir a las preguntas frecuentes cuando se trata de consultas complejas; no siempre son la mejor solución.
-
Chatbots independientes (palabra clave): Se trata de bots de aprendizaje automático que, a diferencia de los chatbots basados en reglas, analizan lo que quiere el usuario y responden adecuadamente. Estos chatbots utilizan palabras clave personalizables y aprendizaje automático para determinar cómo responder a las peticiones de los usuarios con eficacia y eficiencia.
-
Chatbots PNL (contextuales): Estos son hasta ahora los chatbots más avanzados. Son una combinación de lo mejor de los chatbots basados en reglas y en palabras clave. Estos chatbots utilizan la PNL para comprender el contexto y la intención de las peticiones de los usuarios y actuar en consecuencia. Estos chatbots pueden gestionar fácilmente varias solicitudes de un mismo usuario.
Comparaciones de las plataformas Chatbot
Muchas plataformas ofrecen chatbots personalizados con automatización que ponen a disposición de los clientes servicios de asistencia sin fisuras, siempre puntuales y de la mejor calidad, siempre que lo necesiten, sin las capacidades conversacionales de la caja. Los clientes también están dispuestos a comprar a una empresa con la que puedan conectar fácilmente a través de mensajes.
Enumeración de la plataforma de creación de chatbot de IA en 2020:
-
Servicio Azure Bot: El servicio de bots de Azure te ofrece construir un chatbot desde cero, es decir, puedes construirlo, conectarlo, probarlo y desplegarlo. Permite a los desarrolladores utilizar el SDK y las herramientas de código abierto. También permite a los desarrolladores crear bots avanzados, como asistentes virtuales, para gestionar consultas complejas.
-
Botsify: La singularidad de esta herramienta es que permite a los usuarios no técnicos construir un chatbot con su interfaz intuitiva. Los robots se representan aquí como historias, es decir, puedes crear varias historias o varios chatbots y desplegarlos según las necesidades. Otra gran función es la posibilidad de guardar las respuestas de los usuarios en un formulario que se puede exportar fácilmente a un CSV.
-
Amazon Lex: Amazon lex permite a los desarrolladores crear interfaces conversacionales utilizando texto y voz. Incorpora funcionalidades avanzadas de aprendizaje profundo y PNL para comprender el contexto del texto. Proporciona una consola fácil de usar para construir chatbot en cuestión de minutos.
-
Mobile Monkey: Mobile monkey ofrece a los desarrolladores la posibilidad de crear chatbots específicamente con fines de marketing. Permite a los desarrolladores crear bots de anuncios de Facebook, bots de SMS y chatbots web nativos, todo en una única plataforma. También ofrecen plantillas de chatbot preparadas para cada negocio posible, que pueden incrustarse directamente en un sitio web.
-
ChatterOn: Afirma que maneja diferentes tipos de respuestas de contenido enriquecido del Bot, ya que permite a los desarrolladores conectar diferentes API en cada interacción con el usuario. ChatterOn ofrece más de 20 pernos preconstruidos que se pueden poner en funcionamiento con un solo clic. No requiere mucha codificación, lo que facilita a los usuarios no técnicos la creación de chatbots.
-
TARS: Te ofrece construir una página de aterrizaje conversacional, que te permite crear un chatbot automatizado para saludar a tus clientes, darles información relevante sobre sus dudas respecto a tus productos, y pedirles su contacto simultáneamente. Tars ofrece muchas plantillas de chatbot predefinidas, que se clasifican en dos partes: por sector y por caso de uso.
A estas alturas, ya debes tener curiosidad por crear tu propio chatbot. ¿Y qué hay mejor que un chatbot PNL personalizable? Empecemos a construir nuestro propio chatbot en Python utilizando la biblioteca chatterbot.
Chatterbot
Como su nombre indica, chatterbot es una biblioteca python diseñada específicamente para generar chatbots. Este algoritmo utiliza una selección de algoritmos de aprendizaje automático para fabricar respuestas variables a los usuarios según sus peticiones.
Chatterbot facilita el desarrollo de chatbots capaces de entablar conversaciones. Empieza creando un chatterbot no entrenado que no tenga experiencia ni conocimientos previos sobre cómo comunicarse. A medida que los usuarios introducen declaraciones, la biblioteca guarda la solicitud realizada por el usuario, así como las respuestas que se envían de vuelta a los usuarios. A medida que aumenta el número de instancias en el chatterbot, también aumenta la precisión de las respuestas realizadas por el chatterbot.
Chatterbot está entrenado para buscar la respuesta análoga más cercana encontrando la petición análoga más cercana realizada por los usuarios que sea equivalente a la nueva petición realizada. A continuación, selecciona una respuesta de entre las ya existentes. La USP de chatterbot es que permite a los desarrolladores crear sus propios conjuntos de datos y estructuras con facilidad.
Construir un Chatbot utilizando Chatterbot
Empecemos por instalar la biblioteca chatterbot. Para crear el chatbot también necesitas instalar el corpus chatterbot. Corpus - el significado literal es una colección de palabras. Contiene un corpus de datos que se incluye en el módulo chatterbot. Cada corpus no es más que un prototipo de diferentes enunciados de entrada y sus respuestas. Estos corpus los utilizan los robots para entrenarse. El método más recomendable para instalar chatterbot y chatterbot_corpus es utilizar pip.
Comandos de instalación para terminal:
pip install chatterbot
pip install chatterbot_corpus
Comandos de instalación de Jupyter Notebook:
!pip install chatterbot
!pip install chatterbot_corpus
Primero vamos a importar la clase Chatbot del módulo chatterbot.
# Importing chatterbot
from chatterbot import ChatBot
Crear Instancia Chatbot
Ahora, es el momento de la parte más interesante, es decir, dar nombre a tu chatbot creando un objeto Chatbot. Puedes elegir el nombre que quieras. Esta única línea de código genera nuestro nuevo bot llamado Buddy. Tenemos que especificar algunos parámetros más antes de ejecutar nuestro primer programa.
# Create object of ChatBot class
bot = ChatBot('Buddy')
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data] /root/nltk_data...
[nltk_data] Unzipping taggers/averaged_perceptron_tagger.zip.
[nltk_data] Downloading package stopwords to /root/nltk_data...
[nltk_data] Unzipping corpora/stopwords.zip.
[nltk_data] Downloading package wordnet to /root/nltk_data...
[nltk_data] Unzipping corpora/wordnet.zip.
Puedes colocar el adaptador de almacenamiento con el objeto chatbot. Los Adaptadores de Almacenamiento te permiten conectarte a una unidad de almacenamiento o red determinada. Para utilizar un adaptador de almacenamiento, tenemos que especificarlo. Posicionaremos el adaptador de almacenamiento asignándolo a la ruta de importación del almacenamiento que queremos utilizar. Aquí estamos utilizando el Adaptador de Almacenamiento SQL, que permite al chatbot conectarse a bases de datos en SQL. Utilizando el parámetro base de datos, crearemos una nueva Base de Datos SQLite. Sigue el código siguiente para crear una nueva base de datos para el chatbot.
# Create object of ChatBot class with Storage Adapter
bot = ChatBot(
'Buddy',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
database_uri='sqlite:///database.sqlite3'
)
También puedes posicionar el adaptador lógico con un objeto chatbot. Como su nombre indica, el Adaptador Lógico regula la lógica del chatterbot, es decir, elige respuestas para cualquier entrada que se le proporcione. Este parámetro contiene una lista de operadores lógicos. Chatterbot nos permite utilizar varios Adaptadores lógicos. Cuando se utilice más de un adaptador lógico, el chatbot calculará el nivel de confianza, y la respuesta con la mayor confianza calculada se devolverá como salida. Aquí hemos utilizado dos adaptadores lógicos: BestMatch
y TimeLogicAdapter
.
# Create object of ChatBot class with Logic Adapter
bot = ChatBot(
'Buddy',
logic_adapters=[
'chatterbot.logic.BestMatch',
'chatterbot.logic.TimeLogicAdapter'],
)
Entrenar al chatbot
Ahora el paso final para crear un chatbot es entrenar al chatbot utilizando los módulos disponibles en chatterbot. Entrenar un chatbot utilizando chatterbot es tan sencillo como proporcionar una conversación a la base de datos del chatbot. En cuanto el chatbot recibe un conjunto de datos, produce las entradas esenciales en el grafo de conocimiento del chatbot para representar la entrada y la salida de la forma correcta. En primer lugar, vamos a importar ListTrainer
, crear su objeto pasándole el objeto Chatbot
, y llamar al método train()
pasándole una lista de frases.
# Inport ListTrainer
from chatterbot.trainers import ListTrainer
trainer = ListTrainer(bot)
trainer.train([
'Hi',
'Hello',
'I need your assistance regarding my order',
'Please, Provide me with your order id',
'I have a complaint.',
'Please elaborate, your concern',
'How long it will take to receive an order ?',
'An order takes 3-5 Business days to get delivered.',
'Okay Thanks',
'No Problem! Have a Good Day!'
])
List Trainer: [####################] 100%
Pruebas de Chatbot
El último paso de este tutorial es poner a prueba las habilidades conversacionales del chatterbot. Para comprobar sus respuestas, llamaremos al método get_responses()
de la instancia Chatbot
.
# Get a response to the input text 'I would like to book a flight.'
response = bot.get_response('I have a complaint.')
print("Bot Response:", response)
Bot Response: Please elaborate, your concern
Crearemos un bucle while para que se ejecute nuestro chatbot. Cuando se pasen declaraciones en el bucle, obtendremos una respuesta adecuada para ello, puesto que ya hemos introducido datos en nuestra base de datos. Si el usuario nos dice "Adiós", podemos poner fin al bucle y detener el programa.
name=input("Enter Your Name: ")
print("Welcome to the Bot Service! Let me know how can I help you?")
while True:
request=input(name+':')
if request=='Bye' or request =='bye':
print('Bot: Bye')
break
else:
response=bot.get_response(request)
print('Bot:',response)
Enter Your Name: Avinash
Welcome to the Bot Service! Let me know how can I help you?
Avinash:I need your assistance regarding my order
Bot: Please, Provide me with your order id
Avinash:12345
Bot: No Problem! Have a Good Day!
Avinash:Bye
Bot: Bye
Conclusión
Enhorabuena, ¡has llegado al final de este tutorial!
Este artículo se basó en aprender a crear un chatbot en Python utilizando la biblioteca ChatterBot. Construir un chatbot con ChatterBot no sólo fue sencillo, sino que, además, los resultados fueron precisos. Con la Inteligencia Artificial y el Aprendizaje Automático, en avance, todo y cualquier cosa es posible de conseguir ya sea crear bots con habilidades conversacionales como los humanos o sea cualquier otra cosa. Consulta el tutorial de DataCamp sobre Despliegue de chatbots de Facebook con Python.
Más información sobre Python
Course
Introduction to Data Science in Python
Course
Intermediate Python
tutorial
Construir agentes LangChain para automatizar tareas en Python
tutorial
Guía de torchchat de PyTorch: Configuración local con Python
François Aubry
tutorial
Tutorial de funciones de Python
tutorial
Tutorial de FastAPI: Introducción al uso de FastAPI
tutorial
Tutorial de clasificación Naive Bayes con Scikit-learn
tutorial