Prompt Engineering para reviews análisis

Mucho se ha dicho sobre las utilidades de inteligencia artificial de diciembre hasta hoy. Han aparecido millones de apps y las ideas explotaron como el pop corn. Yo he pasado muchas horas utilizándola, con distintos scripts, con python con analítica, etc. Pero donde mayores resultados he conseguido hasta ahora ha sido con el campo del lenguaje, la comunicación y la habilidad para reconocer por ejemplos sentimientos en textos.

Tiene lógica si nos paramos a pensarlo, despues de todo el chat ai es una maquina de lenguaje. Lo que más sabe de nosotros es texto. Aprende y ha aprendido de nuestro lenguaje digital moderno para asistirnos y en el camino llenar de dinero a sus creadores.

Pero vamos al grano que sino me enrollo. El caso es que tomé hace un tiempo un curso de ingeniería de prompts y modificando algun código que tenía por alli enpolvado finalmente llegúe a un buen rendimiento con este sencillo script de análisis de reviews. Básicamente se trata de aprovechar la tecnología que ya tiene por defecto chat gpt y volcarla en una seguidilla de prompts con el que se consiga llegar a un buen análisis de sentimientos.

Conseguiremos:

  • De los sentimientos positivos: un listado de ideas clave para potenciar en tu empresa
  • De los sentimientos negativos: un listado de ideas clave para mejorar en tu empresa o en las de la competencia 👹
  • De las conclusiones: un enfoque estrategico de cara a lo que piensa y comunican tus clientes(nunca subestimes el boca en boca).

Nada como mostrar el potencial de este análisis con un ejemplo:

¿Que vamos a hacer?

  • Extraer las reviews de Google Maps con Instant Data Scraper (una extensión de Chrome que nos permite el scrapeo facil)
  • Analizarlas con GPT a traves de ingeniería de prompting
  • Extraer las primicias de sentimientos positivos y negativos
  • Obtener un archivo con oro puro para copy, estrategia, oportunidades, amenazas, etc.

Vamos a ello

1. Instala la extensión en Chrome y dirigete al resultado que quieres scrapear para hacer el análisis.

instant scrpaer extension for Chrome
captura de la funcionalidad de instant Data Scraper

Aquí dejo un video que explica a detalle y en menos de 8 minutos cómo funciona esta extensión que te será util para este y otros casos de uso:

2. Obtendrás luego de extraer todas las reviews un excel como este:

Muestra del resultado del scraping

En mi caso tomaré directamente la columna que contiene los textos de las reviews (wil7pd en la imagen de arriba).

3. Ahora pasamos a lo bueno. El proceso que mostraré a partir de ahora es para quienes tengan un editor de código(aunque no es necesario saber hacer programación) pero lo aclaro porque bien podrías copiar y pegar estos textos en la interfaz de inteligencia artificial que prefieras y hacer un analisis con los mismos prompts, el proceso a continuación facilita en términos de velocidad y de la cantidad de texto que puedo pasar de una sola vez. Vamos allá:

Lo primero será abrir el editor de código que tengas y pegar los encabezados para conectarte con la API de Openai(necesitas una versión de pago para este modo de hacerlo) pero bien podrías conectarte con la API gratuita de Hugging Face:

import openai
import os

# Cargar las variables de entorno desde el archivo .env
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# Configurar la clave de API de OpenAI
openai.api_key = os.getenv('OPENAI_API_KEY')

Esta es la mejor manera de conectarse a la API de openai ya que no insertamos la clave directamente en el código sino que creamos un archivo .env donde pondremos la clave antecedida por OPENAI_API_KEY = ‘inserta tu clave api aqui’ es la manera más segura de hacerlo.

Luego llamaremos de una manera sencilla al modelo chat gpt 3.5 turbo

def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0.3, # this is the degree of randomness of the model's output
    )
    return response.choices[0].message["content"]

Bien, ahora pasaremos las reviews al modelo. Aquí la recomendación sería filtrar las positivas de las negativas si las filtraste previamente al hacer el scraping para obtener un mejor resultado, pero si las tienes mezcladas no pasa nada, GPT es muy bueno analizando sentimientos y puedes probar distintas variantes de los prompts para experimentar con los resultados.

En mi caso he pegado directamente toda la columna que copie de reseñas de mi excel filtradas por aquellas que Google etiqueto como «positivas» de la siguiente manera:

sentiment = "positive"

reviews = f"""
"La accesibilidad al programa, el desarrollo de los contenidos nos permitió con facilidad desarrollar los contenidos..." 

#Aquí va todo el bloque de reviews pero sería demasiado para este artículo

Recuerda cerrar el bloque de reviews poniendo luego de la última las tres """ que cierran.

"""

Como puedes observar almaceno el sentimiento en una variable y el cuerpo del texto de las reviews en otra ya que las utilizaré en el prompt a continuación:

prompt = f""
Eres una Ai asistente de servicio al cliente. \
Tu tarea consiste en obtener conclusiones a partir de las reviews de los clientes. \
Generar una conclusión de estas reviews sobre los puntos clave positivos para nuestra empresa \
Si el sentimiento es negativo o neutro, solo dame 'negativo'o 'neutro' en cada caso \
Asegúrate de utilizar detalles específicos de la reseña. \
Escribe en un tono conciso y profesional. \
Dame el detalle de cada sentimiento encontrado en formato JSON. \
Reseñas de clientes: {reviews}
Sentimiento de la reseña: {sentimiento}
"""
response = get_completion(prompt) 
print(respuesta)

La idea es que el modelo se detenga a analizar las variables que almacenan los sentimientos y las reviews y pueda extraer las conclusiones que le indiquemos.

Los delimitadores como «»» ó \ son útiles para indicar dónde debería hacer foco el modelo. Aunque casi no es necesarios para GPT si que son útiles para otros modelos menos desarrollados pero igualmente útiles(y gratuitos).

En este caso el resultado que me ha dado es el siguiente:

After analyzing the reviews, the best point for the education business is the flexibility and accessibility of the online platform, as it allows students to work at their own pace and balance their studies with their professional and personal responsibilities. The quality of the content and the preparation of the teachers also contribute to the high-quality teaching and learning process. Additionally, the availability and timely feedback of some facilitators and the use of tools like Webex for synchronous communication are highly valued by the students. Overall, the online education model is seen as a great option for those who want to update or professionalize themselves in their respective fields.

JSON format: {

«sentiment»: «positive»,

«best_point»: «flexibility and accessibility of the online platform» }

Este enfoque puede darte información de gran valor cuando las reseñas son muchas. Ni hablar de las oportunidades que pueden extraerse de las reseñas negativas de tus competidores, pero ese es otro capítulo.

Anímate a experimentar con distintas maneras de pasar este prompt para adaptarlo a tu caso, te sorprenderás con los distintos resultados.

Y, si te interesa la ingeniería de prompts te recomiendo empezar con los cursos cortos y gratuitos de Deep Learning impartidos por el mismo personal de Openai.

Espero que te haya servido como intro. Cualquier sugerencia sobre cómo mejorar este contenido es bienvenida en los comentarios!

Adios!

Deja un comentario

Scroll al inicio