NbAiLab/nb-sbert-base
NbAiLab
Similitud de oraciones
NB-SBERT-BASE es un modelo de SentenceTransformers entrenado en una versión traducida automáticamente del conjunto de datos MNLI, a partir de nb-bert-base. El modelo mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones. Este vector puede ser utilizado para tareas como la agrupación y la búsqueda semántica. El modelo está entrenado de manera que oraciones similares en diferentes idiomas también deberían estar cerca unas de otras. Idealmente, un par de oraciones en inglés-noruego debería tener una alta similitud.
Como usar
Instalación:
pip install -U sentence-transformers
Uso con Sentence Transformers:
from sentence_transformers import SentenceTransformer, util
sentences = ["This is a Norwegian boy", "Dette er en norsk gutt"]
model = SentenceTransformer('NbAiLab/nb-sbert-base')
embeddings = model.encode(sentences)
print(embeddings)
# Compute cosine-similarities with sentence transformers
cosine_scores = util.cos_sim(embeddings[0], embeddings[1])
print(cosine_scores)
# Compute cosine-similarities with SciPy
from scipy import spatial
scipy_cosine_scores = 1 - spatial.distance.cosine(embeddings[0], embeddings[1])
print(scipy_cosine_scores)
# Both should give 0.8250 in the example above.
Uso sin Sentence Transformers:
from transformers import AutoTokenizer, AutoModel
import torch
# Mean Pooling - Take attention mask into account for correct averaging
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] # First element of model_output contains all token embeddings
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 obtener las incrustaciones
sentences = ["This is a Norwegian boy", "Dette er en norsk gutt"]
# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('NbAiLab/nb-sbert-base')
model = AutoModel.from_pretrained('NbAiLab/nb-sbert-base')
# Tokenizar oraciones
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. En este caso, mean pooling.
embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print(embeddings)
# Calcular similitudes de coseno con SciPy
from scipy import spatial
scipy_cosine_scores = 1 - spatial.distance.cosine(embeddings[0], embeddings[1])
print(scipy_cosine_scores)
# Esto debería dar 0.8250 en el ejemplo anterior.
Funcionalidades
- Extracción de características
- Inferencia de incrustaciones de texto
- Similitud de oraciones
- Transformadores
- Incluye el modelo NbAiLab/mnli-norwegian
Casos de uso
- Clasificación con pocas muestras (SetFit)
- Extracción de palabras clave
- Modelado de temas
- Búsqueda de similitud