sentence-transformers/distilroberta-base-msmarco-v1

sentence-transformers
Similitud de oraciones

Este modelo de sentence-transformers mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y se puede usar para tareas como la agrupación o la búsqueda semántica. Sin embargo, este modelo está obsoleto y no debe ser utilizado, ya que produce incrustaciones de oraciones de baja calidad. Puedes encontrar modelos recomendados para incrustaciones de oraciones en SBERT.net - Modelos Preentrenados.

Como usar

Uso (Sentence-Transformers)

Usar este modelo es fácil cuando tienes sentence-transformers instalado:

pip install -U sentence-transformers

Luego puedes usar el modelo de la siguiente manera:

from sentence_transformers import SentenceTransformer
sentences = ["Esta es una oración de ejemplo", "Cada oración es convertida"]

model = SentenceTransformer('sentence-transformers/distilroberta-base-msmarco-v1')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers)

Sin sentence-transformers, puedes usar el modelo de la siguiente manera: Primero, debes pasar tu entrada por el modelo transformador, luego debes aplicar la operación de agrupamiento correcta en la parte superior de las incrustaciones de palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

#Mean Pooling - Tomar en cuenta la máscara de atención para promediar correctamente
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] # El primer elemento de model_output contiene todas las incrustaciones 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)

# Sentencias para las que queremos incrustaciones de oraciones
sentences = ['Esta es una oración de ejemplo', 'Cada oración es convertida']

# Cargar el modelo de HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/distilroberta-base-msmarco-v1')
model = AutoModel.from_pretrained('sentence-transformers/distilroberta-base-msmarco-v1')

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

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

# Realizar agrupamiento. En este caso, agrupar por promedio.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Incrustaciones de oraciones:")
print(sentence_embeddings)

Resultados de Evaluación

Para una evaluación automatizada de este modelo, ver el Benchmark de Sentence Embeddings: https://seb.sbert.net

Funcionalidades

Transformador Roberta con secuencia máxima de longitud 350.
Dimensión de incrustación de palabras: 768.
Modos de agrupamiento: mean pooling (promedio), sin clustering (cls), sin max pooling, sin mean sqrt len pooling.

Casos de uso

Búsqueda semántica
Agrupación de oraciones
Extracción de características de oraciones