inokufu/bert-base-uncased-xnli-sts-finetuned-education
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)