---
title: nlp_structbert_backbone_lite_law
canonical_url: "https://www.modelscope.cn/models/damo/nlp_structbert_backbone_lite_law"
md_url: "https://www.modelscope.cn/models/damo/nlp_structbert_backbone_lite_law.md"
repository: damo/nlp_structbert_backbone_lite_law
chinese_name: "StructBERT预训练模型-中文-法律领域-lite"
last_updated: 2023-05-16
license: "Apache License 2.0"
pipeline_tag: fill-mask
tasks:
  - fill-mask
model_type:
  - strutbert
architectures:
  - BertForMaskedLM
library_name:
  - pytorch
frameworks:
  - pytorch
language:
  - ch
domain:
  - nlp
downloads: 242
stars: 5
tags:
  - transformer
  - Alibaba
  - "arxiv:1908.04577"
  - LegalMind-NLU
  - "法律"
---

# nlp_structbert_backbone_lite_law

> nlp_structbert_backbone_lite_law - damo 在 ModelScope 开源的模型。在StructBERT预训练模型的基础上，使用了多种类型的大量法律文本进行预训练得到，使用的语料包含了裁判文书、法律法规、庭审笔录、法律问答与法律百科。

damo/nlp_structbert_backbone_lite_law 是 ModelScope 魔搭社区上的fill-mask模型，采用 Apache License 2.0 许可。

- **Repository**: damo/nlp_structbert_backbone_lite_law
- **License**: Apache License 2.0
- **Tasks**: fill-mask
- **Tags**: transformer, Alibaba, arxiv:1908.04577, LegalMind-NLU, 法律
- **Downloads**: 242
- **Stars**: 5
- **Last updated**: 2023-05-16

Source: https://www.modelscope.cn/models/damo/nlp_structbert_backbone_lite_law

---

# 基于StructBERT的司法预训练模型介绍

该模型在StructBERT预训练模型的基础上使用400GB司法语料进行预训练。训练语料涵盖了裁判文书、法律法规、庭审笔录、法律问答和法律百科等司法领域文本。

## 模型描述

本模型为Lite规模（Layer-6 / Hidden-512 / Head-8)，参数规模约为30M。

### 预训练语料
200GB通用语料和400GB司法语料，共计2150亿个tokens，涵盖了裁判文书、法律法规、庭审笔录、法律问答和法律百科等司法领域文本。
由于司法文书格式十分规范，为了防止模型过拟合，在处理预训练数据时，基于自建的司法文书结构化引擎标识出了司法文书各类段落（如诉情、辩称、事实认定、审理经过等等），接着针对不同的司法文本内容采取了不同的采样规则。

### 预训练任务
在预训练任务方面结合了token-level和sentence-level的任务。
token-level的预训练任务主要以MLM任务为主 ，shuffle任务和random任务的预测为辅。
句级别的预训练任务以simcse为主。

## 期望模型使用方式以及适用范围
本模型主要用于中文相关下游任务微调。用户可以基于自有训练数据进行微调。具体调用方式请参考代码示例。

### 如何使用
在安装完成ModelScope之后即可基于nlp_structbert_backbone_lite_law进行下游任务finetune。

#### 代码范例
```python
from modelscope.metainfo import Preprocessors
from modelscope.msdatasets import MsDataset
from modelscope.trainers import build_trainer
from modelscope.utils.constant import Tasks


# 通过这个方法修改cfg
def cfg_modify_fn(cfg):
    # 将backbone模型加载到句子相似度的模型类中
    cfg.task = Tasks.sentence_similarity
    # 使用句子相似度的预处理器
    cfg['preprocessor'] = {'type': Preprocessors.sen_sim_tokenizer}

    # 演示代码修改，正常使用不用修改
    cfg.train.dataloader.workers_per_gpu = 0
    cfg.evaluation.dataloader.workers_per_gpu = 0

    # 补充数据集的特性
    cfg['dataset'] = {
        'train': {
            # 实际label字段内容枚举，在训练backbone时需要传入
            'labels': ['0', '1'],
            # 第一个字段的key
            'first_sequence': 'sentence1',
            # 第二个字段的key
            'second_sequence': 'sentence2',
            # label的key
            'label': 'label',
        }
    }
    # lr_scheduler的配置
    cfg.train.lr_scheduler.total_iters = int(len(dataset['train']) / 32) * cfg.train.max_epochs
    return cfg

#使用clue的afqmc进行训练
dataset = MsDataset.load('clue', subset_name='afqmc')
kwargs = dict(
    model='damo/nlp_structbert_backbone_lite_law',
    train_dataset=dataset['train'],
    eval_dataset=dataset['validation'],
    work_dir='/tmp',
    cfg_modify_fn=cfg_modify_fn)

#使用nlp-base-trainer
trainer = build_trainer(name='nlp-base-trainer', default_args=kwargs)
trainer.train()
```

### 模型局限性以及可能的偏差

基于司法领域数据进行训练得到，在其他领域的表现存在一定的偏差。

## 模型评估及结果

![司法预训练模型评估及结果](benchmark.png)

### 相关论文以及引用信息
```BibTex
@article{wang2019structbert,
  title={Structbert: Incorporating language structures into pre-training for deep language understanding},
  author={Wang, Wei and Bi, Bin and Yan, Ming and Wu, Chen and Bao, Zuyi and Xia, Jiangnan and Peng, Liwei and Si, Luo},
  journal={arXiv preprint arXiv:1908.04577},
  year={2019}
}
```
