← Volver a Aprende con CDIA

Casos prácticosCaso: clasificar texto con Hugging Face

IntermedioCasos prácticos8 min de lectura

Caso: clasificar texto con Hugging Face

Usar un Transformer preentrenado desde Hugging Face para analizar texto en pocas líneas, sin entrenar nada: pipeline, modelos del Hub y el detalle de tokenizer y modelo.

En este caso práctico usamos un Transformer preentrenado desde Hugging Face para analizar texto en pocas líneas, sin entrenar nada nosotros. Hugging Face es el "GitHub de los modelos": un repositorio con cientos de miles de modelos listos para descargar y usar.

El problema

Queremos, a partir de un texto, saber si expresa un sentimiento positivo o negativo (análisis de sentimiento). Entrenar un modelo así desde cero requeriría muchos datos y cómputo; en su lugar, reutilizamos uno ya entrenado.

Paso 1: instalar

pip install transformers torch

Paso 2: la forma más simple, un pipeline

La abstracción pipeline esconde toda la complejidad (tokenizar, pasar por el modelo, interpretar la salida) tras una sola llamada:

from transformers import pipeline

clasificador = pipeline("sentiment-analysis")

clasificador("Me encantó este curso, aprendí muchísimo")
# [{'label': 'POSITIVE', 'score': 0.9998}]

clasificador("El servicio fue lento y confuso")
# [{'label': 'NEGATIVE', 'score': 0.9994}]

En dos líneas tienes un clasificador de sentimiento funcionando. El score es la confianza del modelo.

Paso 3: elegir un modelo específico

El pipeline por defecto está en inglés. Para español (o cualquier tarea) podemos pedir un modelo concreto del Hub por su nombre:

clasificador = pipeline(
    "sentiment-analysis",
    model="nlptown/bert-base-multilingual-uncased-sentiment",
)

clasificador("La película estuvo entretenida pero muy larga")
# [{'label': '3 stars', 'score': 0.51}]  → un modelo que puntúa de 1 a 5 estrellas

Paso 4: mirar bajo el capó (tokenizer + modelo)

Cuando quieras más control, puedes cargar por separado el tokenizer (que convierte texto en tokens) y el modelo:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

nombre = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(nombre)
modelo = AutoModelForSequenceClassification.from_pretrained(nombre)

entradas = tokenizer("This is fantastic!", return_tensors="pt")
with torch.no_grad():
    logits = modelo(**entradas).logits

probs = torch.softmax(logits, dim=-1)   # ¿recuerdas la softmax del Transformer?
print(probs)                            # probabilidad de [negativo, positivo]

Fíjate cómo reaparecen los conceptos: tokens, el paso por el Transformer y la softmax que convierte logits en probabilidades.

Para llevar

Hugging Face permite usar Transformers de última generación con una o dos líneas: pipeline para lo rápido, AutoTokenizer + AutoModel para tener control. No entrenamos nada: reutilizamos modelos que ya aprendieron de enormes cantidades de texto. Es la forma más rápida de llevar el Transformer de la teoría a un problema real.