robbert-2022-dutch-sentence-transformers
Este es un modelo de sentence-transformers: Transforma oraciones y párrafos en un espacio de vectores densos de 768 dimensiones y puede ser utilizado para tareas como agrupación o búsqueda semántica. Este modelo está basado en el modelo RobBERT de KU Leuven. Ha sido afinado en el conjunto de datos Paraphrase, que hemos (máquina-) traducido al holandés. El conjunto de datos Paraphrase consiste en múltiples conjuntos de datos que consisten en dúos de textos similares, por ejemplo, preguntas duplicadas en un foro. Hemos liberado los datos traducidos que utilizamos para entrenar este modelo en nuestra página de Huggingface.
Como usar
Uso (Sentence-Transformers)
Usar este modelo es fácil cuando tienes sentence-transformers instalado:
pip install -U sentence-transformers
Entonces puedes usar el modelo así:
from sentence_transformers import SentenceTransformer
sentences = ["Esta es una oración de ejemplo", "Cada oración se convierte"]
model = SentenceTransformer('NetherlandsForensicInstitute/robbert-2022-dutch-sentence-transformers')
embeddings = model.encode(sentences)
print(embeddings)
Uso (HuggingFace Transformers)
Sin sentence-transformers, puedes usar el modelo así: Primero, pasas 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 - Tener 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 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)
# Oraciones para las que queremos embeddings
sentences = ['Esta es una oración de ejemplo', 'Cada oración se convierte']
# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('NetherlandsForensicInstitute/robbert-2022-dutch-sentence-transformers')
model = AutoModel.from_pretrained('NetherlandsForensicInstitute/robbert-2022-dutch-sentence-transformers')
# Tokenizar oraciones
encoded_input = tokenizer(sentencias, 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, pooling medio (mean pooling).
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Embeddings de oraciones:")
print(sentence_embeddings)
Funcionalidades
- Transforma oraciones y párrafos en un espacio de vectores densos de 768 dimensiones.
- Basado en el modelo RobBERT de KU Leuven.
- Afinado en el conjunto de datos Paraphrase traducidos al holandés.
- Útil para tareas como agrupación o búsqueda semántica.
Casos de uso
- Agrupación de oraciones similares.
- Búsqueda semántica en bases de datos de texto.
- Detección de duplicados en foros.
- Compresión de oraciones.
- Generación de embeddings de texto para otras tareas de NLP.