LEALLA-large
setu4993
Similitud de oraciones
LEALLA es una colección de modelos de embeddings de oraciones ligeros y agnósticos al idioma que soportan 109 idiomas, destilados de LaBSE. El modelo es útil para obtener embeddings de oraciones multilingües y para la recuperación de bi-textos. Este modelo ha sido migrado de la versión v1 en el TF Hub. Los embeddings producidos por ambas versiones del modelo son equivalentes. Aunque, para algunos de los idiomas (como el japonés), los modelos LEALLA parecen requerir tolerancias más altas al comparar embeddings y similitudes.
Como usar
Usando el modelo:
import torch
from transformers import BertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained("setu4993/LEALLA-large")
model = BertModel.from_pretrained("setu4993/LEALLA-large")
model = model.eval()
english_sentences = [
"dog",
"Puppies are nice.",
"I enjoy taking long walks along the beach with my dog.",
]
english_inputs = tokenizer(english_sentences, return_tensors="pt", padding=True)
with torch.no_grad():
english_outputs = model(**english_inputs)
# Para obtener los embeddings de oración, use la salida del pooler:
english_embeddings = english_outputs.pooler_output
# Salida para otros idiomas:
italian_sentences = [
"cane",
"I cuccioli sono carini.",
"Mi piace fare lunghe passeggiate lungo la spiaggia con il mio cane.",
]
japanese_sentences = ["犬", "子犬はいいです", "私は犬と一緒にビーチを散歩するのが好きです"]
italian_inputs = tokenizer(italian_sentences, return_tensors="pt", padding=True)
japanese_inputs = tokenizer(japanese_sentences, return_tensors="pt", padding=True)
with torch.no_grad():
italian_outputs = model(**italian_inputs)
japanese_outputs = model(**japanese_inputs)
italian_embeddings = italian_outputs.pooler_output
japanese_embeddings = japanese_outputs.pooler_output
# Para la similitud entre oraciones, se recomienda una norma L2 antes de calcular la similitud:
import torch.nn.functional as F
def similarity(embeddings_1, embeddings_2):
normalized_embeddings_1 = F.normalize(embeddings_1, p=2)
normalized_embeddings_2 = F.normalize(embeddings_2, p=2)
return torch.matmul(
normalized_embeddings_1, normalized_embeddings_2.transpose(0, 1)
)
print(similarity(english_embeddings, italian_embeddings))
print(similarity(english_embeddings, japanese_embeddings))
print(similarity(italian_embeddings, japanese_embeddings))
Funcionalidades
- Modelos ligeros y agnósticos al idioma
- Soporte para 109 idiomas
- Útil para obtener embeddings de oraciones en múltiples idiomas
- Compatible con la recuperación de bi-textos
- Distilado de LaBSE
- Migrado desde la versión v1 en TF Hub
Casos de uso
- Obtener embeddings de oraciones en múltiples idiomas
- Recuperación de bi-textos
- Comparación de oraciones en diferentes idiomas
- Aplicaciones de procesamiento de lenguaje natural multilingües
- Mejorar la velocidad de inferencia y el rendimiento computacional en comparación con modelos más grandes