symanto/sn-mpnet-base-snli-mnli

symanto
Similitud de oraciones

Un modelo de red siamesa entrenado para clasificación de texto de cero y pocos disparos. El modelo base es mpnet-base. Fue entrenado en SNLI y MNLI. Este es un modelo sentence-transformers: Mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones.

Como usar

Uso (Sentence-Transformers)

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

pip install -U sentence-transformers

Entonces puedes usar el modelo así:

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

model = SentenceTransformer('{MODEL_NAME}')
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 agrupamiento adecuada sobre los embeddings de palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

# Agrupamiento promedio - Tener 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 del output contiene todos los 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 que queremos embeddings de oraciones
sentences = ['Esta es una oración de ejemplo', 'Cada oración se convierte']

# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('{MODEL_NAME}')
model = AutoModel.from_pretrained('{MODEL_NAME}')

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

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

# Realizar agrupamiento. En este caso, agrupamiento máximo.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

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

Funcionalidades

Clasificación de texto de cero disparos
Clasificación de texto de pocos disparos
Extracción de características
Similitud de oraciones

Casos de uso

Clasificación de texto sin necesidad de datos etiquetados (zero-shot)
Comparación y similitud de oraciones
Extracción de características significativas de texto