¿Cómo crear un Chatbot con Python?
Crear un chatbot para contestar a interrogantes de tus clientes no es tan sencillo; te voy a guiar paso a paso para que puedas hacerlo con Python.
Contar con un chatbot brinda el beneficio de formalidad en cuentas comerciales y oficiales. Pero instalar un bot para contestar a las interrogantes de los usuarios que acuden a el, la verdad no es tan sencillo, pero no te preocupes, aquí en Tips de Tecnología te voy a guiar paso a paso para que puedas crear un chatbot con la ayuda de Python.
¿Qué es un chatbot?
Antes de iniciar con esta guía instructiva primero, vamos a establecer que es en sí un chatbot. Los chatsbots son pequeños bot que se emplean dentro de aplicaciones de conexión de mensajerías para dar respuestas a usuarios externos. Es utilizado por cuentas empresariales o institucionales, así como algunas cuentas oficiales; y aunque parezca una función básica, la verdad es que es una herramienta verdaderamente oportuna.
Se trata de una función que permite a marcas oficiales, establecer una mejor atención cuando hay un gran flujo de preguntas. Estos te ayudan a aumentar tu audiencia en el mundo digital, expandir tu marca y aumentar su reconocimiento; todo acompañado de buenas estrategias de Marketing.
Intentar crear un chatbot puede ser algo complejo pero con nuestra guía y con la ayuda de Python podrás hacerlo con éxito, y de la manera más conveniente para tu empresa.
¿Qué beneficios ofrece un chatbot para mi empresa digital?
Como ya te mencioné poseer un chatbot en cuentas comerciales ayuda a atender mejor a los clientes usuarios, pero también brinda beneficios que permiten evolucionar en el comercio digital. Entre las ventajas más renombrables que podemos destacar están:
• Incrementa tu audiencia
Seguramente ya te habrás dado cuenta que con los chatbots se pueden implementar en las redes sociales; cuentas donde se puede interactuar con facilidad con clientes. Estos usuarios interesados en tus cuentas, suelen escribir a los directs para hallar información con el fin de transaccionar. Por lo que, contar con respuestas eficientes, puntuales y al mismo tiempo el tiempo récord es importantísimo.
• Mejor monitoreo de datos del consumidor y obtención de estadísticas
Esta es una de los beneficios más oportunos para negocios digitales; ya que esta herramienta te permite obtener una recopilación de datos, debido a que en muchas ocasiones los consumidores no brindan mucha información de ellos. De esta manera podrás saber cuál es la actividad de los usuarios que entran, siguen o dejan de seguir tu cuenta.
Básicamente, podrás utilizarlo para analizar el flujo de tus consumidores y obtener una estadística optimizada según la conversión de la audiencia a las que deseas llegar.
En tal caso, un chatbot puede redireccionar al usuario a tu cuenta nuevamente, por lo que te ayudará a mover y mejorar el tráfico en tu cuenta. Por otro lado, este software te ayuda a analizar el por qué un usuario ha abandonado la suscripción en tu página, cuenta o perfil. De manera que podrás tener información que te ayudará a entender las necesidades de tu público y mejorar.
• Brindar una atención personalizada
Todo ejecutivo de ventas desea incrementar sus despachos, sin embargo esta acción siempre depende de la cantidad de consumidores que tenga. Por lo que, aumentar el número de posibles clientes se considera esencial para tener un negocio exitoso. Para esto, implementar un chatbot te puede ayudar a través de las repuestas y atención directa y personalizada.
Los chatbots pueden ser programados para ofrecer búsquedas y experiencias personalizadas, beneficio que encaja a la perfección con las necesidades de tus clientes. Contar con este paso es vital para que el engagement aumente.
• Mejora tu marca personal
En relación al punto anterior, se puede decir que atraer clientes en este momento digital es un tema cada vez más competitivo. En tal sentido, los bots suelen ser una solución eficaz a los problemas, ya que permite mejorar tu marca personal brindando una mejor experiencia a tus clientes. Para ello emplea las siguientes acciones:
- ofrecerle a las personas la información necesaria para su comodidad.
- elimina los obstáculos para la búsqueda o compra de nuestros clientes.
- brinda una atención instantánea.
Realizando estas tareas aparentemente básicas, te posicionarás entre tus clientes como una de sus empresas favoritas.
• Se ajustan a las necesidades de tu negocio
gracias a su modalidad de ajustes y programaciones que permiten sacar el máximo provecho en beneficio de tu negocio digital; podrás adaptar esta herramienta según las prioridades de tu negocio.
¿Qué tareas de mi embudo de ventas realiza un chatbot por mi?
El fin de un chatbot es potenciar tus ventas, para lograrlo realiza tareas de atención y recopilación de datos entre tus seguidores. Como virtud destacable se puede mencionar que además ésta guía a tus clientes potenciales a través de tu página según lo que esta ha detectado que necesita o desea.
Esto es posible, ya que un chatbot estudia y analiza a los clientes según las respuestas que los usuarios proporcionan. Claro, que su función más básica y obvias son las respuestas programadas. En este segunda y no menos importante tarea, el chatbot se espeicaliza; ya que al abrir una tienda, sea física o virtual, la atención al cliente es muy importante para lograr un negocio exitoso.
Se puede decir que para lograr este objetivo es necesario:
- Ofrecer productos de interés
- Generar atención personalizada
- Sugerir búsquedas y opciones adicionales
- Cumplir con las necesidades del consumidor
- Lo más importante ¡se valora su tiempo!
Esto es precisamente las tareas que un chatbot le facilitan y le garantizan.
¿Por qué utilizar Python para crear un chatbot?
A la hora de crear un chatbot los expertos en programación recomiendan hacerlo con Python. La razón es que esta plataforma ofrece excelentes ventajas por encima de otras similares. Entre las virtudes más mencionable de Python encontramos:
√ Es simple y rápido
Parte de las grandes ventajas que nos brinda Python, es su sencillez y rapidez en todos los procesos de programación del bot chat. Podemos crear nuestro bot de chat con un lenguaje scripting, usando los patrones de programación que nos otorga la herramienta.
√ Resultados elegantes y flexibles
La elegancia y la flexibilidad son características de Python, por lo que es posible obtener resultados exigentes. Esta herramienta posee una gran variedad de herramientas para que las programaciones cumplan con las exigencias del usuario. No debes preocuparte tanto por repetir codificaciones ya que este lenguaje sugiere las que corresponden para que el algoritmo se cumpla a la perfección, y con un mínimo de error.
√ Programación sana y productiva
Programar con Pyton es no solo productivo, si no también seguro. Lo que significa que que nuestra programación cumpla con las reglas correspondientes para la función adecuada.
Dicho de otra forma, aprender en Python es sumamente sencillo ya que sus programaciones son de gran calidad en las operaciones, en el menor tiempo posible y sin riesgo a perder el trabajo por fallas.
√ Portable
Este lenguaje es totalmente portable, lo que significa que su formato es soportado en diferentes sistemas operativos; permitiendo programar desde tu Mac, Linux o Windows.
Guía para crear un chatbot con Python
¡Ahora si! A continuación te mostraré cuáles son los pasos y requisitos necesarios para crear un chatbot útil para tu empresa.
Pero ¡Ojo! es importante que sepas que en este proceso, te encontrará con términos de programación, por lo que quizá te sientas algo confundido al toparte con ellos. De manera que te recomiendo, que a parte, tengas un acceso a Internet para que puedas ir poco a poco relacionándote con los términos a través de las búsquedas de a web. De todas maneras te mencionaré de manera simple lo que necesitas saber sobre ellos.
Requisitos previos de programación
El requisito más importante antes de poder programar con Python es conocer los conceptos claves de NLTK, Scikit y NLP. Si no tienes ni la menor idea de lo que te estamos mencionando, te invitamos a que leas los conceptos que corresponden a cada uno de ellos.
NLP
El Procesamiento del Lenguaje Natural, o también conocido como NLP, hace referencia a la interacción que existe entre el procesador del lenguaje humano con el de las computadoras. En otras palabras es el intermediario o traductor del proceso.
NLTK
La plataforma Natural Language Toolkit es la adecuada para la escritura en un lenguaje humano, proporcionando interfaces flexibles y sencillas de utilizar.
En ella se pueden encontrar diferentes bibliotecas de procesamiento ideales para la clasificación, tokenización, derivación, etiquetado, análisis y razonamiento semántico, trabajando en conjunto con el PNL.
Scikit Learn
Es la biblioteca de aprendizaje automático de Python y ofrece una guía de algoritmos de programación en Python.
Descargar e instalar NLTK
Puedes acceder a cualquier página de acceso en la web que tenga disponible este progama. Una vez tengas el instalador en tu pc, se ejecuta el archivo después de descargarlo, con el siguiente código: pip install nltk
.
Luego, relaiza la instalación de rueba con python para ello utiliza import nltk
.
Instalación de Paquetes NLTK
Ahora importamos y ejecutamos NLTK con el comando nltk.download()
. A continuación podrás elegir los paquetes modelos que deseas indexar en el programa.
Reprocesamiento de texto con NLTK
El reprocesamiento de texto con NLTK es muy importante antes de realizar cualquier proyecto de PNL, debido que el principal problema de estos textos, es que se presentan en forma de cadenas.
Bag of Words
Luego de realizar el reprocesamiento, es necesario que las palabras o matriz de números se conviertan o transformen en una representación de textos. A este proceso se le conoce como bag of words, el cual su objetivo es describir el espectro de palabras dentro de un documento.
Enfoque TF-IDF
Esto consiste en agrupar palabras que son muy frecuentes entre sí, pero con poco valor en la programación, por lo que hará que nuestros documentos tengan más peso, para funciones más cortas
El enfoque consiste en volver a escalar la frecuencia de esas palabras, de forma que se disminuya el peso, pero aumente el valor. Tales palabras frecuentes pueden ser artículos, como por ejemplo: «the, a y an».
Similitud coseno
Consiste en la transformación o interpretación que le aplican a los textos para que puedan ser identificados dentro de un vector real en el espacio. Dentro del proceso de NPL puede existir similitudes, lo que produce una división por el producto de normas.
Existe una fórmula que puede ser utilizada para descubrir cuándo existe una similitud entre dos documentos (d1 y d2):
Cosine Similarity (d1, d2) = Dot product(d1, d2) / ||d1|| * ||d2||
Programación del bot
Bien, ahora que ya sabes en qué consiste el proceso NPL, y los términos más básicos de programación necesarios para crear un chatbot desde cero con Python; entonces podemos iniciar a hacer el tuyo. Pero antes de empezar, tendrás que colocarle un nombre a tu bot. Ahora sí, iniciemos la ruta de aplicación y creación:
1.- Importa las librerías necesarias.
Luego de cumplir con los requisitos previos, debes acceder e importar toda la librería necesaria para trabajar.
Para ello ingresa el siguiente código en la terminal de comandos:
import nltk import numpy as np import random import string # to process standard Python strings
2.- Busca un cuerpo
Debes buscar un cuerpo, y para ello vas a cualquier página de Internet y copiamos todo el corpus, y guardas un archivo con el nombre de «chatbot.txt».
3.- Leyendo en los datos
El proceso se continúa con la lectura del archivo chatbot.txt en un detallado repertorio de oraciones y frases para el procesamiento de lectura del bot a crear.
El proceso se realiza mediante la siguiente fórmula:
f=open('chatbot.txt','r',errors = 'ignore')raw=f.read()raw=raw.lower()# converts to lowercasenltk.download('punkt') # first-time use only nltk.download('wordnet') # first-time use onlysent_tokens = nltk.sent_tokenize(raw)# converts to list of sentences word_tokens = nltk.word_tokenize(raw)# converts to list of words
Hecho lo anterior puedes hacer una lectura o ver la estructura del «sent tokens» y «Word tokens», por medio del siguiente:
sent_tokens[:2] ['a chatbot (also known as a talkbot, chatterbot, bot, im bot, interactive agent, or artificial conversational entity) is a computer program or an artificial intelligence which conducts a conversation via auditory or textual methods.', 'such programs are often designed to convincingly simulate how a human would behave as a conversational partner, thereby passing the turing test.'] word_tokens[:2] ['a', 'chatbot', '(', 'also', 'known']
4.- Pre-procesamiento del texto crudo
En este nivel, tendrás que definir la función para que llame al Lem Tokens, que tomará los tokens en forma de entradas, pero no alterará ningún dato, ya que posteriormente los regresara normalizados:
lemmer = nltk.stem.WordNetLemmatizer() #WordNet is a semantically-oriented dictionary of English included in NLTK.def LemTokens(tokens): return [lemmer.lemmatize(token) for token in tokens] remove_punct_dict = dict((ord(punct), None) for punct in string.punctuation) def LemNormalize(text): return LemTokens(nltk.word_tokenize(text.lower().translate(remove_punct_dict)))
5.- Coincidencia de palabras clave
En este punto, tendrás que activar con una palabra clave las respuestas ocasionales que programarás. Puede ser el típico saludo Hola, o buenos días, tardes y noches.
Ejemplo en el diagrama de programación:
GREETING_NPUTS = ("hello", "hi", "greetings", "sup", "what's up","hey",)GREETING_RESPONSES = ["hi", "hey", "*nods*", "hi there", "hello", "I am glad! You are talking to me"]def greeting(sentence): for word in sentence.split(): if word.lower() in GREETING_INPUTS: return random.choice(GREETING_RESPONSES)
6.- Generando respuesta
Ahora bien, así como se indicarán las preguntas de activación, tendrás que crear las respuestas a la posibles preguntas de tu mercado.
Para ello se inicia con la importación de ciertos módulos necesarios.
Desde la biblioteca, se importa directamente el vectorizador TFidf, el cual se utilizará para convertir una colección de documentos, en una matriz fácil de interpretar:
from sklearn.feature_extraction.text import TfidfVectorizer
También se debe hacer el proceso de importación con el módulo de similitud de coseno, desde la biblioteca de aprendizaje de Scikit:
from sklearn.metrics.pairwise import cosine_similarity
Esta es una de las implementaciones más sencillas de un chatbot.
7.- Respuesta no encontrada
Normalmente se programa al bot de forma que si no entiende las preguntas realizadas, le muestre al usuario un mensaje indicando que realice nuevamente las preguntas: «¡Lo siento! No te entiendo»:
def response(user_response): robo_response='' sent_tokens.append(user_response)TfidfVec = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english') tfidf = TfidfVec.fit_transform(sent_tokens) vals = cosine_similarity(tfidf[-1], tfidf) idx=vals.argsort()[0][-2] flat = vals.flatten() flat.sort() req_tfidf = flat[-2]if(req_tfidf==0): robo_response=robo_response+"I am sorry! I don't understand you" return robo_response else: robo_response = robo_response+sent_tokens[idx] return robo_response
Para ir cerrando con la programación, se debe incluir unas líneas que debe decir nuestro robot al iniciar o culminar la conversación, el código para esto es el siguiente:
flag=True print("ROBO: My name is Robo. I will answer your queries about Chatbots. If you want to exit, type Bye!")while(flag==True): user_response = input() user_response=user_response.lower() if(user_response!='bye'): if(user_response=='thanks' or user_response=='thank you' ): flag=False print("ROBO: You are welcome..") else: if(greeting(user_response)!=None): print("ROBO: "+greeting(user_response)) else: print("ROBO: ",end="") print(response(user_response)) sent_tokens.remove(user_response) else: flag=False print("ROBO: Bye! take care..")
Si has cumplido con todos estos pasos y requisitos, felicidades entonces tu programación ha sido todo un éxito. Así que ya puedes iniciar la prueba a ver cómo interactúa con los clientes.