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: "职业保密"
distilcamembert-lleqa
这是sentence-transformers模型:可将句子和段落映射到768维稠密向量空间,适用于聚类或语义搜索等任务。该模型基于法语法律信息检索数据集LLeQA训练而成。
使用方法
Sentence-Transformers
安装sentence-transformers后即可轻松使用:
pip install -U sentence-transformers
使用示例:
from sentence_transformers import SentenceTransformer
sentences = ["这是示例句子", "每个句子都会被转换"]
model = SentenceTransformer('maastrichtlawtech/distilcamembert-lleqa')
embeddings = model.encode(sentences)
print(embeddings)
🤗 Transformers
若不使用sentence-transformers,可通过以下方式调用模型:首先将输入传入transformer模型,然后对上下文词嵌入执行正确的池化操作。
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/distilcamembert-lleqa')
model = AutoModel.from_pretrained('maastrichtlawtech/distilcamembert-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)、归一化折损累积增益(NDCG)、平均准确率(MAP)及不同截断点的召回率(R@k)。
MRR@10 |
NDCG@10 |
MAP@10 |
R@10 |
R@100 |
R@500 |
36.67 |
37.24 |
29.26 |
52.95 |
78.07 |
90.17 |
训练
背景
我们基于distilcamembert-base模型,使用9.3K个法语问答对进行微调。采用对比学习目标:给定简短法律问题,模型需从采样法律条款中预测真实匹配项。具体而言,我们计算批次内所有可能配对间的余弦相似度,然后通过交叉熵损失(温度参数0.05)与真实配对进行比较。
超参数
在32GB内存的Tesla V100 GPU上训练20个周期(即5.4k步),批次大小为32。使用AdamW优化器,初始学习率2e-05,权重衰减0.01,前50步学习率预热,之后线性衰减。序列长度限制为384个标记。
数据
使用长格式法律问答(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},
}