Blaxzter/LaBSE-sentence-embeddings

Blaxzter
Similitud de oraciones

Language-agnostic BERT Sentence Encoder (LaBSE) es un modelo basado en BERT entrenado para la incrustación de frases 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 frases multilingües y para la recuperación de texto bi-texto.

Como usar

Usando el modelo:

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)

Para obtener las incrustaciones de frases, 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 frases, se recomienda una normalización L2 antes de calcular la similitud:
```python
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 frases multilingües
recuperación de bi-texto
modelado de lenguaje enmascarado
modelado de lenguaje de traducción
compatible con 109 idiomas
conversión de TensorFlow a PyTorch

Casos de uso

Obtener incrustaciones de frases multilingües
Recuperación de texto bi-texto
Mejorar la precisión en modelos de traducción multilingües
Calcular la similitud de frases en diferentes idiomas