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