Cased Finnish Sentence BERT model

TurkuNLP
Similitud de oraciones

BERT de oraciones en finlandés entrenado a partir de FinBERT. Este modelo puede recuperar las oraciones más similares de un conjunto de datos de 400 millones de oraciones.

Como usar

El mismo que se encuentra en la documentación de HuggingFace para el transformador de oraciones en inglés. Se puede utilizar tanto a través de SentenceTransformer como de HuggingFace Transformers.

from sentence_transformers import SentenceTransformer
sentences = ["Tämä on esimerkkilause.", "Tämä on toinen lause."]

model = SentenceTransformer('TurkuNLP/sbert-cased-finnish-paraphrase')
embeddings = model.encode(sentences)
print(embeddings)
from transformers import AutoTokenizer, AutoModel
import torch

#Mean Pooling - Tomar en cuenta la máscara de atención para un promedio correcto
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] #El primer elemento de la salida del modelo contiene todas las incrustaciones 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)

# Oraciones para las cuales queremos incrustaciones de oraciones
sentences = ["Tämä on esimerkkilause.", "Tämä on toinen lause."]

# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('TurkuNLP/sbert-cased-finnish-paraphrase')
model = AutoModel.from_pretrained('TurkuNLP/sbert-cased-finnish-paraphrase')

# Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# Calcular las incrustaciones de tokens
with torch.no_grad():
    model_output = model(**encoded_input)

# Realizar pooling. En este caso, media de pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

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

Funcionalidades

Modelo basado en FinBERT
Datos: Corpus finlandés de paráfrasis y candidatos de paráfrasis recopilados automáticamente (500K positivos y 5M negativos)
Pooling: media de pooling
Tarea: predicción binaria, si dos oraciones son paráfrasis o no

Casos de uso

Recuperación de oraciones más similares de un gran conjunto de datos