sentence-transformers/distilbert-base-nli-stsb-mean-tokens

sentence-transformers
Similitud de oraciones

Este es un modelo de sentence-transformers: mapea frases y párrafos a un espacio vectorial denso de 768 dimensiones y se puede usar para tareas como agrupamiento o búsqueda semántica. **⚠️ Este modelo está obsoleto. Por favor, no lo uses, ya que produce incrustaciones de frases de baja calidad.** Puedes encontrar modelos recomendados de incrustación de frases aquí: SBERT.net - Modelos preentrenados.

Como usar

Uso (Sentence-Transformers)

Instalar el paquete sentence-transformers:

pip install -U sentence-transformers

Usar el modelo de la siguiente manera:

from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]

model = SentenceTransformer('sentence-transformers/distilbert-base-nli-stsb-mean-tokens')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers)

Sin sentence-transformers, puedes usar el modelo de esta manera:

from transformers import AutoTokenizer, AutoModel
import torch

# Mean Pooling - Tomar en cuenta la máscara de atención 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 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)

# Frases para las que queremos obtener incrustaciones
sentences = ['This is an example sentence', 'Each sentence is converted']

# Cargar el modelo desde HuggingFace Hub

# Tokenizar las frases
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/distilbert-base-nli-stsb-mean-tokens')
model = AutoModel.from_pretrained('sentence-transformers/distilbert-base-nli-stsb-mean-tokens')
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 pooling (promedio). En este caso, el max pooling
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

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

Funcionalidades

Transforma frases y párrafos en vectores densos de 768 dimensiones
Utiliza técnicas de agrupamiento y búsqueda semántica
Basado en la arquitectura DistilBert
Incluye operaciones de pooling como el Mean Pooling tomando en cuenta la máscara de atención

Casos de uso

Agrupamiento de frases
Búsqueda semántica
Análisis de similitud entre frases