language:
- pt
thumbnail: "葡萄牙语法律领域BERT模型"
pipeline_tag: 句子相似度
tags:
- sentence-transformers
- 句子相似度
- transformers
datasets:
- assin
- assin2
- stsb_multi_mt
- rufimelo/PortugueseLegalSentences-v0
widget:
- source_sentence: "律师向法官提交了证据。"
sentences:
- "法官阅读了证据。"
- "法官阅读了上诉书。"
- "法官扔了一块石头。"
example_title: "示例1"
model-index:
- name: BERTimbau
results:
- task:
name: STS
type: STS
metrics:
- name: 皮尔逊相关系数 - assin数据集
type: 皮尔逊相关系数
value: 0.7749
- name: 皮尔逊相关系数 - assin2数据集
type: 皮尔逊相关系数
value: 0.8470
- name: 皮尔逊相关系数 - stsb_multi_mt pt数据集
type: 皮尔逊相关系数
value: 0.8364
rufimelo/Legal-BERTimbau-sts-large-ma-v3
这是一个sentence-transformers模型:它能将句子和段落映射到1024维的密集向量空间,可用于聚类或语义搜索等任务。
rufimelo/Legal-BERTimbau-sts-large-ma-v3基于Legal-BERTimbau-large模型,后者源自BERTimbau大模型。
该模型针对葡萄牙语法律领域进行了适配,并在葡萄牙语数据集上进行了句子相似度训练。
使用方法(Sentence-Transformers)
安装sentence-transformers后即可轻松使用:
pip install -U sentence-transformers
使用示例:
from sentence_transformers import SentenceTransformer
sentences = ["这是一个示例", "这是另一个示例"]
model = SentenceTransformer('rufimelo/Legal-BERTimbau-sts-large-ma-v3')
embeddings = model.encode(sentences)
print(embeddings)
使用方法(HuggingFace 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('rufimelo/Legal-BERTimbau-sts-large-ma-v3')
model = AutoModel.from_pretrained('rufimelo/Legal-BERTimbau-sts-large-ma-v3')
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("句子嵌入:")
print(sentence_embeddings)
STS评估结果
模型 |
Assin |
Assin2 |
stsb_multi_mt pt |
平均 |
Legal-BERTimbau-sts-base |
0.71457 |
0.73545 |
0.72383 |
0.72462 |
Legal-BERTimbau-sts-large-ma-v3 |
0.7749 |
0.8470 |
0.8364 |
0.81943 |
...(其他模型数据保持不变)... |
|
|
|
|
训练过程
本模型基于Legal-BERTimbau-large开发,后者源自BERTimbau大模型。
由于缺乏葡萄牙语数据集,首先采用多语言知识蒸馏进行训练,教师模型为'sentence-transformers/stsb-roberta-large'。
随后在assin、assin2和stsb_multi_mt pt数据集上进行微调(批量大小8,5个epoch,学习率1e-5)。
模型架构
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
)
引用与作者
若使用本作品,请引用:
@inproceedings{souza2020bertimbau,
author = {F{\'a}bio Souza and Rodrigo Nogueira and Roberto Lotufo},
title = {{BERT}imbau: pretrained {BERT} models for {B}razilian {P}ortuguese},
booktitle = {9th Brazilian Conference on Intelligent Systems, {BRACIS}},
year = {2020}
}
(其他引用条目保持不变...)