inokufu/bert-base-uncased-xnli-sts-finetuned-education

inokufu
Similitud de oraciones

Un modelo sentence-transformers afinado en frases de cursos. Mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y se puede utilizar para tareas como el clustering o la búsqueda semántica. Este modelo se basa en el modelo bert-base-uncased en inglés. Fue afinado en un conjunto de datos de frases de objetos de aprendizaje (LO) que consiste en una muestra de 500k frases de descripciones de cursos. Luego, fue afinado en una tarea de inferencia de lenguaje natural (XNLI) y en una tarea de similitud semántica de texto (en datos STS). Este proceso de afinado permite que el modelo tenga una representación semántica de las palabras mucho mejor que la propuesta por el modelo base.

Como usar

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

pip install -U sentence-transformers

from sentence_transformers import SentenceTransformer
sentences = ["Learn to code in python", "Become an expert in accounting"]

model = SentenceTransformer('inokufu/bert-base-uncased-xnli-sts-finetuned-education')
embeddings = model.encode(sentences)
print(embeddings)

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

from transformers import AutoTokenizer, AutoModel
import torch

#Mean Pooling - Tomar en cuenta la mascarilla de atención para un promediado correcto

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] #El primer elemento de model_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)

# Frases para las que queremos embeddings de oraciones
sentences = ["Learn to code in python", "Become an expert in accounting"]

# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('inokufu/bert-base-uncased-xnli-sts-finetuned-education')
model = AutoModel.from_pretrained('inokufu/bert-base-uncased-xnli-sts-finetuned-education')

# Tokenizar frases
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 pooling, en este caso mean pooling
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

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

Funcionalidades

Transformadores con PyTorch
Features extraídas de bert
Embeddings de texto
Compatibilidad con education
Inferencia de texto
Compatibilidad con xnli y stsb_multi_mt

Casos de uso

Clustering
Búsqueda semántica
Estimación de similitud entre oraciones
Reconocimiento de relaciones entre oraciones (contradicción, neutral, implicación)