LaBSE
setu4993
Similitud de oraciones
El BERT Sentence Encoder independiente del idioma (LaBSE) es un modelo basado en BERT entrenado para la incrustación de oraciones en 109 idiomas. El proceso de preentrenamiento combina el modelado de lenguaje enmascarado con el modelado de lenguaje de traducción. El modelo es útil para obtener incrustaciones de oraciones multilingües y para la recuperación de texto bi-texto.
Como usar
import torch
from transformers import BertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained("setu4993/LaBSE")
model = BertModel.from_pretrained("setu4993/LaBSE")
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)
To get the sentence embeddings, use the pooler output:
english_embeddings = english_outputs.pooler_output
Output for other languages:
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
For similarity between sentences, an L2-norm is recommended before calculating the similarity:
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
- Entrenado con el modelado de lenguaje enmascarado y el modelado de lenguaje de traducción
- Compatible con 109 idiomas
- Equivalencia en las incrustaciones producidas en versiones TensorFlow y PyTorch
- Conversión de TensorFlow a PyTorch disponible
Casos de uso
- Obtención de incrustaciones de oraciones multilingües
- Recuperación de textos bi-texto
- Cálculo de similitud de oraciones entre diferentes idiomas
- Procesamiento de texto en aplicaciones multilingües