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