distilcamembert-lleqa
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