stjiris/bert-large-portuguese-cased-legal-mlm-sts-v1.0

stjiris
Similitud de oraciones

Este es un modelo de transformers de oraciones: Mapea oraciones y párrafos a un espacio vectorial denso de 1024 dimensiones y puede ser utilizado para tareas como agrupación o búsqueda semántica. Se deriva de BERTimbau large. Fue entrenado utilizando la técnica MLM con una tasa de aprendizaje de 3e-5 en oraciones legales de aproximadamente 30000 documentos, con 130k pasos de entrenamiento (mejor rendimiento para nuestra implementación de sistema de búsqueda semántica). Está adaptado al dominio legal portugués y entrenado para STS en conjuntos de datos portugueses.

Como usar

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

pip install -U sentence-transformers

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

model = SentenceTransformer('stjiris/bert-large-portuguese-cased-legal-mlm-sts-v1.0')
embeddings = model.encode(sentences)
print(embeddings)
from transformers import AutoTokenizer, AutoModel
import torch

#Mean Pooling - Tener en cuenta la máscara de atención para una promediación correcta
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] #El primer elemento de model_output 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 que queremos incrustaciones 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-mlm-sts-v1.0')
model = AutoModel.from_pretrained('stjiris/bert-large-portuguese-cased-legal-mlm-sts-v1.0')

# 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 el pooling. En este caso, pooling promedio.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)

Funcionalidades

Transformador de oraciones
Vector de densidad 1024D
Entrenado con técnica MLM
Adaptado al dominio legal portugués
Entrenado para STS en conjuntos de datos portugueses

Casos de uso

Agrupación de oraciones
Búsqueda semántica
Extracción de características
Sentencias legales