LEALLA-small
setu4993
Similitud de oraciones
LEALLA es una colección de modelos ligeros de incrustaciones de oraciones independientes del lenguaje que admiten 109 idiomas, destilados de LaBSE. El modelo es útil para obtener incrustaciones de oraciones multilingües y para la recuperación de bi-textos. Este modelo se migra desde la versión v1 en TF Hub. Las incrustaciones producidas por ambas versiones del modelo son equivalentes. Sin embargo, para algunos idiomas (como el japonés), los modelos de LEALLA parecen requerir tolerancias más altas al comparar incrustaciones y similitudes.
Como usar
Uso del modelo:
import torch
from transformers import BertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained("setu4993/LEALLA-small")
model = BertModel.from_pretrained("setu4993/LEALLA-small")
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 las incrustaciones de oraciones, use la salida del pool:
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
- Incrustaciones de oraciones multilingües
- Recuperación de bi-textos
- Modelos ligeros y eficientes
- Soporte para 109 idiomas
- Conversiones de TensorFlow a PyTorch
Casos de uso
- Incrustaciones de oraciones multilingües
- Recuperación de bi-textos
- Alineación de oraciones paralelas
- Comparación de texto multilingüe