pipeline_tag: 句子相似度
language: 法语
license: apache-2.0
datasets:
- maastrichtlawtech/lleqa
metrics:
- 召回率
tags:
- 特征提取
- 句子相似度
library_name: sentence-transformers
inference: true
widget:
- source_sentence: "我收到了与工作相关的机密信息。如果违反职业保密规定会面临什么风险?"
sentences:
- "第1条:医生、外科医师、卫生官员、药剂师、助产士及其他因职业或职务获知他人秘密者,若在非司法作证或议会调查委员会要求情况下,或未经法律、法令条例强制或授权披露时泄露秘密,将判处一至三年监禁及一百至一千欧元罚款,或仅处其中一项刑罚。"
- "第2条:申请人可从怀孕第六个月起申领生育津贴,并凭医疗证明在预产期前两个月获得支付。符合首款规定的生育津贴申请,应由家庭津贴管理机构、主管当局或公共实体在收到提前支付申请时,根据家庭津贴支付权限予以发放。"
- "第3条:产假为十二周带薪休假(多胞胎为十三周),在此期间持有人不得从事常规职业活动或其他任何职业活动。"
example_title: "示例"
camembert-base-lleqa
这是sentence-transformers模型:可将句子和段落映射到768维稠密向量空间,适用于聚类或语义搜索等任务。该模型基于法语法律信息检索数据集LLeQA训练。
使用方法
Sentence-Transformers
安装sentence-transformers后即可使用:
pip install -U sentence-transformers
调用示例:
from sentence_transformers import SentenceTransformer
sentences = ["这是示例句子", "每个句子将被转换"]
model = SentenceTransformer('maastrichtlawtech/camembert-base-lleqa')
embeddings = model.encode(sentences)
print(embeddings)
🤗 Transformers
若不使用sentence-transformers库:
from transformers import AutoTokenizer, AutoModel
import torch
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
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)
sentences = ['这是示例句子', '每个句子将被转换']
tokenizer = AutoTokenizer.from_pretrained('maastrichtlawtech/camembert-base-lleqa')
model = AutoModel.from_pretrained('maastrichtlawtech/camembert-base-lleqa')
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print(sentence_embeddings)
评估结果
在LLeQA测试集(含195个法律问题及27.9K条候选条款)上的表现:
MRR@10 |
NDCG@10 |
MAP@10 |
R@10 |
R@100 |
R@500 |
36.55 |
39.27 |
30.64 |
58.27 |
82.43 |
92.41 |
训练细节
背景
基于camembert-base模型,使用9.3K组法语问答对进行微调。采用对比学习目标:给定法律问题,模型需从采样条款中预测真实配对。通过计算批次内所有可能的余弦相似度,应用温度参数0.05的交叉熵损失进行优化。
超参数
在32GB显存的Tesla V100 GPU上训练20个epoch(5.4k步),批次大小32。使用AdamW优化器(初始学习率2e-05,权重衰减0.01),前50步学习率预热,后续线性衰减。序列长度限制为384个token。
数据
使用LLeQA数据集,包含比利时法规中的27,941条条款和1,868个由法学家标注真实条款答案的公民法律问题。
引用
@article{louis2023interpretable,
author = {Louis, Antoine and van Dijck, Gijs and Spanakis, Gerasimos},
title = {Interpretable Long-Form Legal Question Answering with Retrieval-Augmented Large Language Models},
journal = {CoRR},
volume = {abs/2309.17050},
year = {2023},
url = {https://arxiv.org/abs/2309.17050},
eprinttype = {arXiv},
eprint = {2309.17050},
}