DeCLUTR-small

johngiorgi
Similitud de oraciones

El modelo 'DeCLUTR-small' de nuestro artículo: DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations.

Como usar

Por favor consulte nuestro repositorio para más detalles. Un ejemplo simple se muestra a continuación.

Con SentenceTransformers

from scipy.spatial.distance import cosine
from sentence_transformers import SentenceTransformer

# Cargar el modelo
model = SentenceTransformer('johngiorgi/declutr-small')

# Preparar algunos textos para incrustar
texts = [
 'Una mujer sonriente disfrazada sostiene un paraguas.',
 'Una mujer feliz en un disfraz de hada sostiene un paraguas.',
]

# Incrustar el texto
embeddings = model.encode(texts)

# Calcular una similitud semántica a través de la distancia del coseno
semantic_sim = 1 - cosine(embeddings[0], embeddings[1])

Con 🤗 Transformers

import torch
from scipy.spatial.distance import cosine
from transformers import AutoModel, AutoTokenizer

# Cargar el modelo
tokenizer = AutoTokenizer.from_pretrained('johngiorgi/declutr-small')
model = AutoModel.from_pretrained('johngiorgi/declutr-small')

# Preparar algunos textos para incrustar
text = [
 'Una mujer sonriente disfrazada sostiene un paraguas.',
 'Una mujer feliz en un disfraz de hada sostiene un paraguas.',
]
inputs = tokenizer(text, padding=True, truncation=True, return_tensors='pt')

# Incrustar el texto
with torch.no_grad():
 sequence_output = model(**inputs)[0]

# Agrupar por media las incrustaciones a nivel de token para obtener incrustaciones a nivel de oración
embeddings = torch.sum(
 sequence_output * inputs['attention_mask'].unsqueeze(-1), dim=1
) / torch.clamp(torch.sum(inputs['attention_mask'], dim=1, keepdims=True), min=1e-9)

# Calcular una similitud semántica a través de la distancia del coseno
semantic_sim = 1 - cosine(embeddings[0], embeddings[1])

Funcionalidades

similaridad de oraciones
transformadores de oraciones
PyTorch
JAX
extracción de características
inferencia de incrustaciones de texto
Puntos de Inferencia

Casos de uso

Se puede usar como un codificador universal de oraciones, similar al Codificador Universal de Oraciones de Google o Transformadores de Oraciones