mrm8488/distiluse-base-multilingual-cased-v2-finetuned-stsb_multi_mt-es

mrm8488
Similitud de oraciones

Este es un modelo de sentence-transformers (distiluse-base-multilingual-cased-v2): mapea oraciones y párrafos en un espacio denso de vector de 768 dimensiones y puede ser utilizado para tareas como agrupamiento o búsqueda semántica.

Como usar

Uso (Sentence-Transformers)

Usar este modelo es sencillo cuando se tiene sentence-transformers instalado:

pip install -U sentence-transformers

Después puedes usar el modelo así:

from sentence_transformers import SentenceTransformer
sentences = ["Nerea va a comprar un cuadro usando bitcoins", "Se puede comprar arte con bitcoins"]

model = SentenceTransformer('mrm8488/distiluse-base-multilingual-cased-v2-finetuned-stsb_multi_mt-es')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers)

Sin sentence-transformers, puedes usar el modelo así: Primero, pasas tu entrada a través del modelo transformer, luego tienes que aplicar la operación de pooling correcta sobre las embeddings contextuales de palabras.

from transformers import AutoTokenizer, AutoModel
import torch

# Media de Pooling - Toma la máscara de atención en cuenta para el promedio correcto
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0]  # El primer elemento de model_output contiene todas las embeddings de tokens
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

# Oraciones para las cuales queremos embeddings de oraciones
sentences = ["Nerea va a comprar un cuadro usando bitcoins", "Se puede comprar arte con bitcoins"]

# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('mrm8488/distiluse-base-multilingual-cased-v2-finetuned-stsb_multi_mt-es')
model = AutoModel.from_pretrained('mrm8488/distiluse-base-multilingual-cased-v2-finetuned-stsb_multi_mt-es')

# Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# Calcular embeddings de los tokens
with torch.no_grad():
    model_output = model(**encoded_input)

# Realizar pooling. En este caso, media de pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Embeddings de las oraciones:")
print(sentence_embeddings)

Funcionalidades

Modelo basado en DistilBERT
Espacio denso de vector de 768 dimensiones
Apropiado para búsqueda semántica
Optimizado para la evaluación de la similitud textual semántica

Casos de uso

Agrupamiento de sentencias
Búsqueda semántica
Evaluación de similitud textual
Extracción de características de texto
Embeddings de texto para inferencia