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

stjiris
Similitud de oraciones

Este es un modelo sentence-transformers: mapea oraciones y párrafos a un espacio vectorial denso de 1024 dimensiones y puede ser usado para tareas como agrupamiento o búsqueda semántica. stjiris/bert-large-portuguese-cased-legal-tsdae se deriva de BERTimbau large. Fue entrenado utilizando la técnica TSDAE con una tasa de aprendizaje de 1e-5 en Sentencias Legales de aproximadamente 30000 documentos, con 212k pasos de entrenamiento (mejor rendimiento para nuestra implementación del sistema de búsqueda semántica). Fue presentado al entrenamiento Generative Pseudo Labeling y a los datos NLI con un tamaño de lote de 16 y una tasa de aprendizaje de 2e-5. Fue refinado para Similaridad Textual Semántica, siendo sometido a una etapa de ajuste fino con los conjuntos de datos assin, assin2, stsb_multi_mt pt y IRIS STS.

Como usar

Uso (Sentence-Transformers)

Instalar sentence-transformers:

pip install -U sentence-transformers

Usar el modelo:

from sentence_transformers import SentenceTransformer
sentences = ["Isto é um exemplo", "Isto é um outro exemplo"]

model = SentenceTransformer('stjiris/bert-large-portuguese-cased-legal-tsdae-gpl-nli-sts-v1')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers)

from transformers import AutoTokenizer, AutoModel
import torch

# Mean Pooling - Considerar la máscara de atención para el promedio correcto

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] # El primer elemento de model_output contiene todas las 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 de oraciones
sentences = ['This is an example sentence', 'Each sentence is converted']

# Cargar el modelo desde HuggingFace Hub

tokenizer = AutoTokenizer.from_pretrained('stjiris/bert-large-portuguese-cased-legal-tsdae-gpl-nli-sts-v1')
model = AutoModel.from_pretrained('stjiris/bert-large-portuguese-cased-legal-tsdae-gpl-nli-sts-v1')

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

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

# Realizar el pooling. En este caso, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Embeddings de oraciones:")
print(sentence_embeddings)

Funcionalidades

Transformadores PyTorch
Extracción de características
Embeddings de texto
Búsqueda semántica
Técnica TSDAE
Entrenamiento Generative Pseudo Labeling
Datos NLI

Casos de uso

Agrupamiento de oraciones
Búsqueda semántica
Similaridad textual semántica
Análisis jurídico