Análisis de sentimiento en Azure AI Language: paso a paso
Saber si los comentarios de los clientes son positivos o negativos deja de ser un trabajo manual y lento cuando usamos el análisis de sentimiento de Azure AI Language. Con pocas líneas de Python podemos clasificar cualquier texto como positivo, negativo, neutral o mixto y obtener una puntuación de confianza para cada frase. Vamos a construir ese clasificador desde cero, con un ejemplo práctico que puedes adaptar a tu negocio.
Requisitos previos
- Una suscripción de Azure activa — el servicio tiene un nivel gratuito para empezar.
- Python 3.8 o superior instalado en tu máquina.
- Permisos para crear recursos en el portal de Azure.
- Soltura básica con la línea de comandos y un editor de código.
Paso 1: Crear el recurso Language en el portal de Azure
Empieza por crear el servicio que hará el análisis. En el portal de Azure, haz clic en Crear un recurso y busca Language service. Elige la suscripción, un grupo de recursos, la región más cercana a tus usuarios y el nivel de precio gratuito (F0), perfecto para aprender. Cuando el recurso esté listo, abre la sección Keys and Endpoint y copia el endpoint y una de las claves: estos dos valores autentican tu código.
Paso 2: Instalar el SDK de Python
Crea una carpeta para el proyecto e instala la biblioteca oficial. Un entorno virtual mantiene las dependencias aisladas; en Windows, actívalo con el script activate de la carpeta .venv.
python -m venv .venv
source .venv/bin/activate
pip install azure-ai-textanalytics
Paso 3: Autenticar el cliente
Nunca escribas la clave directamente en el código. Guarda el endpoint y la clave en variables de entorno y léelos con el módulo os — así no expones secretos cuando compartes o publicas el proyecto.
import os
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential
endpoint = os.environ["LANGUAGE_ENDPOINT"]
key = os.environ["LANGUAGE_KEY"]
client = TextAnalyticsClient(
endpoint=endpoint,
credential=AzureKeyCredential(key),
)
Paso 4: Analizar el sentimiento de un texto
El método analyze_sentiment recibe una lista de documentos y devuelve, para cada uno, el sentimiento general y la confianza en cada clase. Como ejemplo usamos dos comentarios reales en portugués — el servicio detecta el idioma automáticamente.
documents = [
"O atendimento foi excelente e a entrega chegou antes do previsto.",
"O produto veio partido e ninguém respondeu ao meu email.",
]
response = client.analyze_sentiment(documents=documents)
for doc in response:
print("Sentimento:", doc.sentiment)
print("Confiança:", doc.confidence_scores)
Cada doc.sentiment será positive, negative, neutral o mixed. Por su parte, confidence_scores trae tres valores entre 0 y 1 — positivo, neutral y negativo — que suman 1.
Paso 5: Bajar al nivel de la frase
Muchas veces un comentario mezcla elogios y críticas. El resultado incluye una lista sentences, que permite ver el sentimiento frase a frase y localizar exactamente dónde está el problema.
for doc in response:
print("Documento:", doc.sentiment)
for sentence in doc.sentences:
print(" -", sentence.sentiment, "->", sentence.text)
Consejo: activa show_opinion_mining=True en la llamada para vincular cada opinión al objetivo al que se refiere (por ejemplo, "entrega" o "atendimento").
Verificar el resultado
Guarda el archivo como sentimento.py y ejecútalo con python sentimento.py. La primera frase debe devolver positive con confianza alta y la segunda negative. Si recibes un error 401, revisa la clave y el endpoint; si es un 404, comprueba que copiaste el endpoint completo. Después, cambia los textos por comentarios reales de tu negocio para confirmar que la clasificación tiene sentido.
Conclusión
En cinco pasos conectaste Python con Azure AI Language y convertiste texto libre en sentimiento medible — una base sólida para dashboards de satisfacción o alertas automáticas de clientes insatisfechos. Desde aquí puedes explorar la extracción de frases clave, el reconocimiento de entidades o procesar cientos de comentarios a la vez. ¿Cuál será la primera fuente de texto que analizarás: emails, reseñas o redes sociales?