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