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:
pipelinepara lo rápido,AutoTokenizer+AutoModelpara 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.
