stjiris/bert-large-portuguese-cased-legal-mlm-gpl-nli-sts-MetaKD-v1

stjiris
Similitud de oraciones

Este es un modelo de sentence-transformers: Mapea oraciones y párrafos a un espacio vectorial denso de 1024 dimensiones y puede ser utilizado para tareas como clustering o búsqueda semántica. Este modelo deriva de stjiris/bert-large-portuguese-cased-legal-mlm (variante legal de BERTimbau large). Fue entrenado utilizando la técnica MLM con una tasa de aprendizaje de 1e-5 con oraciones legales de aproximadamente 30000 documentos en 15000 pasos de entrenamiento (mejor rendimiento para nuestra implementación del sistema de búsqueda semántica). Fue presentado al entrenamiento de Generative Pseudo Labeling. El modelo fue presentado a datos de NLI con lotes de tamaño 16, y tasa de aprendizaje de 2e-5. Fue entrenado para la Similaridad Textual Semántica, siendo sometido a una etapa de ajuste fino con los conjuntos de datos assin, assin2, stsb_multi_mt pt. Este modelo fue sometido a Metadata Knowledge Distillation.

Como usar

Uso (Sentence-Transformers)

Usar este modelo es fácil cuando tienes sentence-transformers instalado:

pip install -U sentence-transformers

Luego puedes usar el modelo así:

from sentence_transformers import SentenceTransformer
sentences = ["Isto é um exemplo", "Isto é um outro exemplo"]
model = SentenceTransformer('stjiris/bert-large-portuguese-cased-legal-mlm-gpl-nli-sts-v1')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers)

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 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 = ['This is an example sentence', 'Each sentence is converted']
# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('stjiris/bert-large-portuguese-cased-legal-mlm-gpl-nli-sts-v1')
model = AutoModel.from_pretrained('stjiris/bert-large-portuguese-cased-legal-mlm-gpl-nli-sts-v1')
# 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.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Incrustaciones de oraciones:")
print(sentence_embeddings)

Funcionalidades

MLM con tasa de aprendizaje de 1e-5
15000 pasos de entrenamiento
Generative Pseudo Labeling
Presentado a datos de NLI
Ajuste fino con assin, assin2, stsb_multi_mt pt
Metadata Knowledge Distillation

Casos de uso

Búsqueda semántica
Agrupamiento de oraciones
Extracción de características
Inferencia de incrustaciones textuales

Recibe las últimas noticias y actualizaciones sobre el mundo de IA directamente en tu bandeja de entrada.