distilcamembert-lleqa

maastrichtlawtech
Similitud de oraciones

Este es un modelo de sentence-transformers que mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y puede ser utilizado para tareas como agrupación o búsqueda semántica. El modelo fue entrenado en el conjunto de datos LLeQA para la recuperación de información legal en francés.

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 es convertida"]

model = SentenceTransformer('maastrichtlawtech/distilcamembert-lleqa')
embeddings = model.encode(sentences)
print(embeddings)

🤗 Transformers

Sin sentence-transformers, puedes usar el modelo así: Primero, pasas tu entrada a través del modelo transformador, luego debes aplicar la operación de pooling correcta sobre las incrustaciones 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 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 = ['Esta es una oración de ejemplo', 'Cada oración es convertida']

# Cargar modelo desde el Hub de HuggingFace
tokenizer = AutoTokenizer.from_pretrained('maastrichtlawtech/distilcamembert-lleqa')
model = AutoModel.from_pretrained('maastrichtlawtech/distilcamembert-lleqa')

# 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(sentence_embeddings)

Evaluación

Evaluamos el modelo en el conjunto de prueba de LLeQA, que consiste en 195 preguntas legales con un corpus de conocimiento de 27.9K artículos candidatos. Reportamos el MRR (Mean Reciprocal Rank), NDCG (Norm Discounted Cumulative Gain), MAP (Mean Average Precision) y recall a varios cortes (R@k).

MRR@10: 36.67
NDCG@10: 37.24
MAP@10: 29.26
R@10: 52.95
R@100: 78.07
R@500: 90.17

Funcionalidades

Transformador de oraciones
Extracción de características
Similitud de oraciones
Compatible con AutoTrain
Aptitud para incrustaciones de texto
Compatible con puntos de inferencia

Casos de uso

Agrupación de oraciones
Búsqueda semántica
Recuperación de información legal
Respuesta a preguntas legales