CoolFace
Modelpublic

agusnieto77/byt5-portada-contrastivo

sourceHugging Faceapache-2.0updated 6mo agoView on Hugging Face
0likes11downloads
Model Card

ByT5 Portada Contrastivo

Modelo ByT5 encoder afinado con aprendizaje contrastivo para similitud semántica entre variantes OCR y formas canónicas de gentilicios y entidades históricas en español. Desarrollado en el marco del proyecto PortADa.

⚠️ Uso correcto

Este modelo es un encoder (T5EncoderModel), no un modelo seq2seq. Genera embeddings que se comparan por similitud coseno.

python
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, T5EncoderModel

tokenizer = AutoTokenizer.from_pretrained("agusnieto77/byt5-portada-contrastivo")
model = T5EncoderModel.from_pretrained("agusnieto77/byt5-portada-contrastivo", torch_dtype=torch.bfloat16)
model.eval()

def get_embedding(texto):
    inputs = tokenizer(texto, return_tensors="pt", truncation=True, max_length=128)
    with torch.no_grad():
        out = model(**inputs)
    mask = inputs["attention_mask"].unsqueeze(-1).expand(out.last_hidden_state.size()).float()
    return (out.last_hidden_state.float() * mask).sum(1) / mask.sum(1).clamp(min=1e-9)

emb1 = get_embedding("española")
emb2 = get_embedding("ospanola")
print(F.cosine_similarity(emb1, emb2).item())

Datos del afinamiento (byt5_portada)

  • —Pares contrastivos: 22,409
  • —Grupos semánticos (group_id): 5,059

El entrenamiento contrastivo utiliza mean pooling sobre la salida del encoder y una variante de Multiple Negatives Ranking Loss con group masking e inclusión de hard negatives por grupo.

Caso de uso

Dada una variante OCR ruidosa, el modelo identifica a cuál forma canónica corresponde por similitud semántica en el espacio de embeddings.

Variante OCRMatch canónicoScore
lnglesinglesa0.7583
1ng1esinglesa0.7172
injlesainglesa0.9030
ingsinglesa0.8683
trancesafrancesa0.7523
francesfrancesa0.9714
francfrancesa0.8940
ospanolaespañola0.7472
spanolespañola0.7770
espanoliespañola0.9157
espespañola0.6613
spanishespañola0.7563
Spainespañola0.5947
Cubacubana0.7676
Cubanacubana0.8206
CuBañacubana0.7784
cvban0cubana0.7739
uruguayuruguaya0.9735
Uruguayuruguaya0.8640
orientaluruguaya0.6300
ururuguaya0.6407
ori0ntaluruguaya0.6805
Or1ent4luruguaya0.5156

Contexto del proyecto de investigación PortADa

Este modelo se enmarca en el proyecto PortADa (Port Arrivals Data), centrado en el análisis de llegadas de buques en los puertos de Barcelona, Marsella, La Habana y Buenos Aires entre 1850 y 1915. El proyecto busca generar una base de datos de aproximadamente 1 millón de registros a partir de prensa histórica.

Sitio oficial: https://www.proyectoportada.eu/