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