Cómo extraer insights de texto en Copilot de Fabric: paso a paso
Este tutorial muestra cómo usar Copilot en Fabric para extraer entidades (nombres, lugares, organizaciones) y sentimiento de un conjunto de comentarios y, a continuación, generar un resumen accionable. Saber automatizar esta tarea acelera análisis cualitativos y crea señales para informes en Power BI o procesos ETL. Trabajaremos con un ejemplo realista: un conjunto de 500–5.000 comentarios de clientes para identificar problemas recurrentes y medir el porcentaje de feedback negativo para priorización.
Requisitos previos
- Cuenta con acceso a Microsoft Fabric y Copilot activado. Verifique que su tenant tiene cuotas suficientes para llamadas a servicios (si usa Azure OpenAI).
- Lista de comentarios en OneLake o en un fichero CSV accesible en el Workspace. Idealmente un fichero entre 1 MB y 50 MB para pruebas; >100k filas podrá requerir muestreo.
- Permisos para crear Notebooks o Dataflows Gen2 en el Workspace y permisos de lectura/escritura en la ruta de OneLake que use.
Paso 1: Preparar los datos de texto en el Workspace
Coloque un fichero CSV simple con una columna id y una columna comment en OneLake dentro de su Workspace, por ejemplo en /Shared/textos/comentarios.csv. Esto facilita que Copilot acceda al contenido sin pasos adicionales de autenticación. Para pruebas, use un fichero pequeño (10–100 líneas) y luego escale a un fichero mayor (500–5.000 líneas). Ejemplo mínimo del fichero:
id,comment
1,"Adorei o produto, entrega rápida."
2,"Suporte fraco, demora na resposta."
3,"Ótima qualidade, recomendo à equipa."
Buenas prácticas: incluya metadatos (fecha, canal, idioma) si están disponibles — eso permite análisis por período o fuente. Verifique también el encoding UTF-8 para evitar problemas con caracteres especiales.
Paso 2: Abrir un Notebook e invocar a Copilot
Creé un Notebook en su Workspace (Python) e invoque Copilot. Pídale que lea el CSV y muestre las primeras líneas. Esto valida permisos, ruta y formato. Para conjuntos mayores, lea por chunks (p. ej.: chunksize=1000) y confirme la memoria disponible en el kernel.
# Pergunta ao Copilot: "Lê /Shared/textos/comentarios.csv e mostra as 5 primeiras linhas em DataFrame pandas"
# Código gerado pelo Copilot (exemplo mínimo):
import pandas as pd
df = pd.read_csv('/Workspace/Shared/textos/comentarios.csv')
df.head()
Consejo: si el fichero tiene 10.000 líneas y el notebook va lento, cargue solo una muestra para desarrollo: df = pd.read_csv(path, nrows=500).
Paso 3: Pedir a Copilot que extraiga entidades y sentimiento
Explique a Copilot que quiere dos columnas nuevas: entities (lista) y sentiment (positivo/negativo/neutro). Pida un ejemplo de enfoque con librerías Python estándar disponibles en el Notebook (por ejemplo, spaCy o Azure OpenAI si está configurado). Si no tiene modelos locales, solicite un prompt que use un servicio de lenguaje disponible en su tenant.
# Exemplo de função simples usando spaCy (se disponível no ambiente):
import spacy
nlp = spacy.load('en_core_web_sm') # ou o modelo necessário
def extract_entities(text):
doc = nlp(text)
return [(ent.text, ent.label_) for ent in doc.ents]
# Sentiment simples com TextBlob (se instalado) ou pedir ao Copilot para usar Azure OpenAI
from textblob import TextBlob
def sentiment_label(text):
polarity = TextBlob(text).sentiment.polarity
return 'positivo' if polarity>0.1 else 'negativo' if polarity<-0.1 else 'neutro'
# Aplicar
df['entities'] = df['comment'].apply(extract_entities)
df['sentiment'] = df['comment'].apply(sentiment_label)
Ejemplo práctico: si en 1.000 comentarios 230 se clasifican como 'negativo', esa señal (23%) puede usarse para alertar al equipo de soporte. Ajuste thresholds de polaridad (p. ej. >0.15 para positivo) según idioma y dominio.
Paso 4: Tratar errores comunes al usar modelos en el Notebook
Si Copilot sugiere librerías no instaladas o modelos grandes fallan, haga una de estas acciones: instalar paquetes en el entorno del Notebook, pedir a Copilot una versión alternativa que use llamadas a un servicio (Azure OpenAI) o usar una lógica heurística simple (palabras clave) hasta conseguir el modelo. Ejemplos de mensajes de error comunes: "Model not found" al cargar spacy, "Permission denied" para OneLake, o "Rate limit exceeded" en las llamadas a Azure OpenAI.
# Instalar dependências (se o ambiente permitir):
!pip install spacy textblob
!python -m textblob.download_corpora
Si no puede instalar paquetes, pida a Copilot que genere una función simple basada en reglas: buscar palabras como "erro", "mau", "adoro" para inferir sentimiento como fallback. Documente cualquier fallback para revisión posterior.
Paso 5: Generar un resumen accionable con Copilot
Con las columnas entities y sentiment, pida a Copilot que produzca un resumen en lenguaje natural con insights: principales entidades mencionadas, porcentaje de comentarios negativos, tópicos recurrentes y recomendaciones concretas (p. ej. "investigar tickets del producto X, priorizar mejora de onboarding"). Copilot puede generar un bloque de código que calcule agregaciones y genere texto en formato de resumen para stakeholders.
# Exemplo de agregação e resumo
entities_flat = [ent[0] for sub in df['entities'] for ent in sub]
from collections import Counter
top_entities = Counter(entities_flat).most_common(5)
sent_counts = df['sentiment'].value_counts(normalize=True).to_dict()
summary = f"Top entidades: {top_entities}. Sentimentos: {sent_counts}. A recomendação inicial é investigar suporte para reduzir comentários negativos."
print(summary)
Incluya métricas: número total de comentarios analizados, porcentajes por sentimiento y un top 3 de entidades con recuentos. Por ejemplo: "Analizados 1.250 comentarios — 18% negativos, 62% neutros, 20% positivos. Top entidades: Producto A (120 menciones), Entrega (98), Soporte (85)."
Verificar el resultado
Confirme que el DataFrame tiene las columnas entities y sentiment y que el resumen textual tiene sentido. Verifique muestras manuales: 10 comentarios con entidades y sentimiento, y compare con expectativas. Si usa Azure OpenAI, confirme que las llamadas fueron autorizadas, que los tokens no fueron truncados y que el coste estimado para la ejecución en producción está dentro del presupuesto (p. ej. 0.5–2 USD por 1k peticiones, según el plan).
Registre métricas simples como % negativo para validar la señal y cree una pequeña matriz de validación (p. ej. 100 comentarios marcados manualmente para medir precisión/recall del modelo/fallback).
Conclusión
Usar Copilot en Fabric para extraer entidades y sentimiento transforma texto libre en señales estructuradas listas para informes y automatizaciones. Próximos pasos: integrar este Notebook en un Dataflow Gen2 para automatizar la ingestión, o crear un informe en Power BI conectado a OneLake. Comience con un subconjunto de datos, valide manualmente y luego escale — así se reduce el riesgo de falsos positivos y costes innecesarios. Pequeñas iteraciones (p. ej.: validar 200 comentarios por sprint) ayudan a calibrar thresholds y a mejorar modelos antes de producción.