想象你是律所主任,招了一名“AI实习生”。它毕业于“通用预训练大学”——在互联网新闻、维基百科、社交媒体上读了几十亿句话,文学素养、时事常识样样精通。可真把一份合同递给它,它却一脸茫然:把“不可抗力”理解成电影《不可抗力》,把“留置权”当成停车场里的权利。问题不在智商,而在它从未上过一天“法律课”。 领域预训练,就是给AI补这门法律专业课:拿海量判决书、法条、合同书当教材,让模型在专业语料上继续修炼,学会法律世界的遣词造句。本文的主角是两位“法律实习生”——LegalBERT,一位熟读短文书、精于语义理解的专才;Lawformer,一位能一口气读完几千词长卷宗的“卷王”。它们各有什么绝活?怎么选、怎么用、怎么部署?读完这篇,你会得到一张完整的“法律AI选型地图”。

岗位关联

掌握领域预训练模型的原理与选型逻辑,你就能在法律NLP、司法智能化、教育数字化转型项目中做出正确的技术决策,让“AI+法律”真正落地。

目录
  1. 可视化演示
  2. 初识领域预训练
  3. LegalBERT:法律BERT精训
  4. Lawformer:长文模型破局
  5. 双雄对比与选型
  6. 法律任务应用
  7. 部署优化落地
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

LegalBERT与Lawformer面向法律文本进行领域预训练。演示法律语料预训练、Lawformer长文本建模(512 vs 4096 token)以及下游任务微调三个环节。

本节配有交互动效(进入视口后自动加载,约 3KB)。

法律语料预训练:领域语义 法律条文/合同/判决书构建语料 掩码语言模型学习专业术语 通用模型未充分学习的低频语义 损失=掩码token预测 让模型掌握hereby等领域术语含义

初识领域预训练

我叫老周,科技公司的法务AI负责人。为了让律师团队少加班,我招了个AI实习生“大通”——一个通用BERT模型。大通是“通识教育”的优等生,读得懂新闻、接得上梗,可一到合同审查就翻车:把“甲方可行使留置权”理解成“甲方拥有一个停车位”。我哭笑不得:它缺的不是智商,是法律常识。

大通的“通识教育”来自海量通用语料——新闻、百科、社交媒体。这类语料让它掌握了语法和世界常识,却撑不起法律文本的“专业方言”:法律文书术语密度高、句子超长、结构严谨且互相引用。通用模型面对这类文本时,预测“下一个词是什么”的难度显著上升,这就形成了所谓的“语义鸿沟”。

领域预训练就是填平鸿沟的办法:在通用模型基础上,用大量法律语料继续训练,让模型把法律文本的词汇、句式、表达习惯“内化”进参数。衡量这段修炼效果的核心指标叫困惑度(PPL)——它告诉我们模型对某类文本有多“吃力”。

PPL=exp⁡(−1N∑i=1Nlog⁡Pθ(wi∣w<i))\displaystyle PPL = \exp\left(-\frac{1}{N}\sum_{i=1}^{N}\log P_\theta(w_i \mid w_{<i})\right)

1. 预测概率:模型看到第 i 个词之前的所有单词后,对第 i 个词给出一个预测概率。预测得越准,这个值越接近 1。

Pθ(wi∣w<i)P_\theta(w_i \mid w_{<i})

2. 取对数:对每个位置的预测概率求自然对数。概率为 1 时对数为 0,概率越小对数值越负,便于数学上累加。

log⁡Pθ(wi∣w<i)\log P_\theta(w_i \mid w_{<i})

3. 取平均:把整个文档 N 个位置的对数概率加起来再除以 N,得到“平均对数概率”,消除文档长度的影响。

1N∑i=1Nlog⁡Pθ(wi∣w<i)\frac{1}{N}\sum_{i=1}^{N}\log P_\theta(w_i \mid w_{<i})

4. 加负号:平均对数概率是负数,加负号变成正数,让“越小越好”这个方向变得直观。

−1N∑i=1Nlog⁡Pθ(wi∣w<i)-\frac{1}{N}\sum_{i=1}^{N}\log P_\theta(w_i \mid w_{<i})

5. 指数映射:用指数把结果映射回原始尺度,得到“平均候选词数量”。法律语料训练后,PPL 会明显下降。

exp⁡(−1N∑i=1Nlog⁡Pθ(wi∣w<i))\exp\left(-\frac{1}{N}\sum_{i=1}^{N}\log P_\theta(w_i \mid w_{<i})\right)

把大通送去法学院回炉,就是“领域预训练”。上课用判例、法条当教材,学会了“法言法语”再回来上班。下节课,我们看看它整个学期练的“填空题”到底怎样改变了它的脑回路——这就是LegalBERT。

LegalBERT:法律BERT精训

回到法学院的大通,被起了个新名字:LegalBERT。这一学期的“精训”课程安排得很科学——最重要的日常训练是“填空练习”(Masked Language Modeling,MLM)和“前后句配对判断”(Next Sentence Prediction,NSP)。老师把教材中的一部分词涂黑,让大通根据上下文猜原词。

LegalBERT 由研究团队在2020年提出:它以 BERT 架构为底座,在欧盟立法文本、英国成文法、欧洲人权法院判决书等数十万份法律文档上继续预训练。它的优势很明显——模型不需要从零开始学说话,只需要把通用语言能力“迁移”到法律场景。

训练时随机遮住15%的token,模型要根据两侧上下文猜回原词。法律文本术语重复度高、句式模板化,填空练习的反馈信号特别强。反复训练后,“履行”“违约金”“乙方”这些词在模型的语义空间里彼此靠近,法律语义日渐精准。小L终于明白:“合同”不是一纸约定,而是一整套权利义务的承诺网络。

LMLM=−1∣M∣∑i∈Mlog⁡Pθ(wi∣x~)\displaystyle \mathcal{L}_{MLM} = -\frac{1}{|M|}\sum_{i \in M}\log P_\theta(w_i \mid \tilde{x})

1. 遮罩集合 M:被随机涂黑的词位置集合。LegalBERT 每句随机遮住15%的token,迫使模型靠上下文猜词。

M⊆{1,2,…,n}M \subseteq \{1, 2, \dots, n\}

2. 条件概率:模型根据被涂黑后的句子 $\tilde{x}$,还原第 i 个原始词的概率。猜得越准,数值越大。

Pθ(wi∣x~)P_\theta(w_i \mid \tilde{x})

3. 平均与负号:对所有被遮罩位置取平均并加负号,猜得越准损失越小。这是整个预训练阶段要最小化的“作业分数”。

−1∣M∣∑i∈Mlog⁡Pθ(wi∣x~)-\frac{1}{|M|}\sum_{i \in M}\log P_\theta(w_i \mid \tilde{x})

当大通毕业回岗时,它接到一份房屋租赁合同,一眼就看出“逾期交付超过15日视为根本违约”中“根本违约”的分量。这就是MLM练习的力量——“法言法语”,终于入脑入心。

Lawformer:长文模型破局

小L很快暴露了新短板:它一次只能读512个token。英语里512个token大约相当于300多个英文单词,一份像样的合同动辄几千词。让小L读完整份合同,它只能看到前几页,如同让实习生只读第一页就下结论——这不靠谱。

法务部又来了一位新实习生——Lawformer。它在2021年登场,基于Longformer架构改造,把输入长度一口气拉到4096 token以上,专门解决“长卷宗阅读”难题。长文档处理最大的拦路虎是计算量:标准注意力机制下,文本长度翻倍,计算量翻四倍。

Lawformer 的破局之道有两条。第一,相对位置编码:不再死记每个词排在第几位,而是感知“这个词离我多远”,长距离信息也能优雅编码。第二,稀疏注意力:每个词只和滑动窗口内的邻居以及少数全局监测点交互,注意力计算量从 O(n²) 降为 O(n)。

Attn(Q,K,V)=softmax(QK⊤dk+M)V\displaystyle Attn(Q,K,V) = \mathrm{softmax}\left(\frac{QK^{\top}}{\sqrt{d_k}} + M\right)V

1. 查询与键点积:计算“当前词”与“上下文每个词”的相关度,得到一张注意力分数表。

QK⊤QK^{\top}

2. 除以根号维度:用键向量维度的平方根缩放分数,防止内积过大导致softmax梯度消失。

QK⊤dk\frac{QK^{\top}}{\sqrt{d_k}}

3. 叠加掩码矩阵:窗口外的位置填上负无穷。经过softmax后,这些位置的权重归零,模型只关注窗口内与全局监测点。

Mij={0窗口内−∞窗口外M_{ij} = \begin{cases} 0 & \text{窗口内} \\ -\infty & \text{窗口外} \end{cases}

4. 概率化与加权求和:对每行分数取softmax得到注意力权重,再与值向量 V 加权求和,输出融合上下文的表示。

softmax(QK⊤dk+M)V\mathrm{softmax}\left(\frac{QK^{\top}}{\sqrt{d_k}} + M\right)V

小F像一位能一目十行的速读高手,一份上万字的判决书从头翻到尾,句句在脑中留下线索。不过本领大,饭量也大——它更吃显存。下节我们来权衡:两位实习生到底该派谁上什么项目。

双雄对比与选型

现在工作室里有两位实习生:小L短小精悍、反应快;小F博闻强记、看得远但更重。业务团队找上门来,问该用小L还是小F。选型不是“谁强用谁”,而是按任务特性匹配。

三个关键维度需要对比。输入长度:LegalBERT约512 token,Lawformer约4096+ token;预训练重点:LegalBERT侧重短文本内的语义理解,Lawformer侧重长文档的全局关系建模;推理开销:LegalBERT轻量易部署,Lawformer需要更大显存。此外,两者的语料偏好也不同——LegalBERT更偏西方法律语料,Lawformer则面向中文法律长文档。

实践中的经验法则:法条分类、短句级合同要素抽取、法律问答等短文本任务,选LegalBERT——快而准;合同全文扫描、判例全文理解、类案检索等长文任务,选Lawformer——读得全。评估时不能只看准确率,要看 F1 分数——它同时惩罚“漏报”和“误报”,对法律场景特别重要。

F1=2×P×RP+R\displaystyle F1 = \frac{2 \times P \times R}{P + R}

1. 精确率 P:模型预测为“风险条款”的结果中,真正是风险条款的比例。惩罚“报错了”。

P=TPTP+FPP = \frac{TP}{TP + FP}

2. 召回率 R:所有真实风险条款中,被模型找回来的比例。惩罚“漏掉了”。

R=TPTP+FNR = \frac{TP}{TP + FN}

3. 调和平均:把 P 和 R 都代入公式。任何一个指标偏低,F1都会被明显拉低,倒逼模型在“不漏”和“不错”之间找平衡。

2×P×RP+R\frac{2 \times P \times R}{P + R}

给小L派短文书,给小F派长卷宗,各得其所,效率翻倍。这就是“双雄”的最佳用法——不是竞争,而是互补。

法律任务应用

选型完成,两位实习生正式上岗,坐上法务部三大关键岗位:合同审查、法条分类、案例检索。

合同审查,本质是让模型给条款打标签——找出风险条款、抽取当事人、金额、期限等要素;法条分类,是让模型根据案情预测案由并推荐相关法条;案例检索,则是把判例编码成向量,用语义相似度召回“最像的案件”。

三个任务共用同一套原理:把输入文本喂给预训练模型,取出语义向量,再接一层softmax分类头或相似度计算。以合同审查为例,模型对每个条款输出“风险/正常”两类概率,概率超过阈值即报警。预训练阶段积累的法律语义,让分类边界更符合司法实践,而不是停留于表面的关键词匹配。

P(y=c∣x)=ezc∑j=1Cezj\displaystyle P(y=c \mid x) = \frac{e^{z_c}}{\sum_{j=1}^{C} e^{z_j}}

1. 原始分数 z:模型最后一层为每个类别(如“风险条款”“正常条款”)打出的logit值,分数越高代表越倾向该类。

zcz_c

2. 指数放大:对每个分数取指数,让大分数更大、小分数更小,拉开类别之间的差距。

ezce^{z_c}

3. 归一化分母:把所有类别的指数值加起来,使输出成为合法概率分布。

∑j=1Cezj\sum_{j=1}^{C} e^{z_j}

4. 输出类别概率:对每个类别都计算一次,取概率最大者作为预测结果,阈值可调以控制“宁可多报”还是“宁缺毋滥”。

ezc∑j=1Cezj\frac{e^{z_c}}{\sum_{j=1}^{C} e^{z_j}}

上岗三个月,小L和小F的成绩单比通用模型漂亮一大截:合同风险条款识别的F1从0.72提升到0.90以上,案例检索的Top-5命中率也大幅领先。法学老师看了都说好——但此刻,运维同事敲响了门:“这两个模型,内存装不下。”

部署优化落地

两位实习生“胃口”不小:BERT-base有1.1亿参数,Lawformer则更重。律所只有一台普通服务器,老板发话:要么瘦身,要么走人。

部署优化有三板斧:知识蒸馏、模型量化、推理加速。前三者负责“减重”,后者负责“提速”。知识蒸馏是最优雅的一招:让大模型当“老师”,把判断经验浓缩成“软标签”传授给小模型。

蒸馏时,老师输出的概率分布要用温度T软化——温度越高,低概率类别的微弱信号越清晰,学生模型能偷学到“第2类虽然输给第1类但其实很相近”这类暗知识。配合INT8量化,模型体积可缩小到原来的四分之一,推理速度提升数倍。

pi=exp⁡(zi/T)∑j=1Cexp⁡(zj/T)\displaystyle p_i = \frac{\exp(z_i / T)}{\sum_{j=1}^{C} \exp(z_j / T)}

1. 温度参数 T:控制概率分布的“平滑程度”。T=1 时是普通softmax;T>1 时分布变平坦,暴露低概率类别的“暗知识”。

T>1T > 1

2. 分数软化:把老师的原始分数除以温度,再取指数。温度让原本排名第二、第三的类别也有可见的概率。

exp⁡(zi/T)\exp(z_i / T)

3. 归一化:对所有类别求和归一化,得到软标签分布。这个分布保留了类间的相对关系。

exp⁡(zi/T)∑j=1Cexp⁡(zj/T)\frac{\exp(z_i / T)}{\sum_{j=1}^{C} \exp(z_j / T)}

4. 学生拟合:让学生模型的输出分布去拟合老师的软标签分布,常用KL散度度量差异,从而“继承”老师的判断经验。

DKL(pteacher∥pstudent)D_{KL}(p_{teacher} \parallel p_{student})

瘦身后的LegalBERT-mini只有原来的四分之一大小,跑在普通CPU上也不喘气。律所和法学院都装上了,老周的项目终于顺利落地。至此,从“送去法学院进修”到“瘦身上岗”,两位法律AI实习生的完整成长路线图就铺开了。

AI 应用场景

场景一:司法智能辅助审判

阶段:模型微调与应用

解决的问题:传统方式中法官检索类案靠关键词和人工翻阅,速度慢且容易遗漏。AI 将案情摘要编码为语义向量,用相似度计算在一秒内找出相似判例与相关法条,显著降低法官的检索负担。

具体案例:某省法院部署了基于 Lawformer 的“智能审判辅助系统”。法官输入一份 3000 字的起诉状,系统先自动推荐可能适用的三条法条,再召回 Top5 相似判例,整个过程不到 2 秒,撰写判决书的准备时间减少了约 30%。

场景二:高校法学教学数字化转型

阶段:数据准备与模型微调

解决的问题:法学课程中合同审查实训是刚需,但教师逐份批改作业中的风险条款,耗时且标准不一。用领域预训练模型统一标注并生成解释,把批改时间从小时级降到分钟级。

具体案例:某大学法学院用 LegalBERT 微调了“合同实训批改助手”。学生提交合同修改作业后,系统自动标出“未识别到的违约金条款风险”“付款期限表述不清”等遗漏点,生成点评清单,教师只需复核关键位置即可。

场景三:企业法务合同预审

阶段:推理部署与优化

解决的问题:初创公司法务人手有限,商务合同积压严重;直接调用大模型 API 成本高且有数据合规风险。用知识蒸馏后的轻量模型做本地部署,是兼顾成本与安全的选择。

具体案例:一家SaaS企业将蒸馏后的 LegalBERT-mini 部署在内网服务器,每天自动预审 30+ 份合作合同,优先标记付款周期、违约责任、保密期限三类高风险条款,命中率达 85% 以上,法务只需复审高亮部分。

Python 演示

python25 行
import torchfrom transformers import AutoTokenizer, AutoModelForMaskedLM  def predict_masked(model_name, sentence):    tokenizer = AutoTokenizer.from_pretrained(model_name)    model = AutoModelForMaskedLM.from_pretrained(model_name)    inputs = tokenizer(sentence, return_tensors="pt")    with torch.no_grad():        logits = model(**inputs).logits    mask_pos = torch.where(inputs["input_ids"][0] == tokenizer.mask_token_id)[0]    probs = torch.softmax(logits[0, mask_pos], dim=-1)    topk = torch.topk(probs, k=5)    return [(tokenizer.decode([idx]).strip(), float(p))            for p, idx in zip(topk.values[0], topk.indices[0])]  if __name__ == "__main__":    law_text = "The tenant shall [MASK] the rent on the first day of each month."    print("通用BERT 预测:")    for word, prob in predict_masked("bert-base-uncased", law_text):        print(f"  {word}: {prob:.2%}")    print("LegalBERT 预测:")    for word, prob in predict_masked("nlpaueb/legal-bert-base-uncased", law_text):        print(f"  {word}: {prob:.2%}")
目的:加载通用 BERT 与法律领域预训练模型 LegalBERT,对比它们在法律句子的掩码词预测上的表现——看领域预训练如何让模型读懂“法言法语”。
  1. tokenizer = AutoTokenizer.from_pretrained(model_name)加载与模型配套的分词器,负责把句子切成 token 并编号。
  2. inputs = tokenizer(sentence, return_tensors="pt")把文本转成 PyTorch 张量,得到 input_ids 和 attention_mask。
  3. logits = model(**inputs).logits模型前向推理,返回每个位置对词表中每个词打的原始分数。
  4. mask_pos = torch.where(inputs["input_ids"][0] == tokenizer.mask_token_id)[0]定位句子中被挖掉的那个 [MASK] 的位置。
  5. probs = torch.softmax(logits[0, mask_pos], dim=-1)把分数变成所有候选词的概率分布。
  6. tokenizer.decode([idx]).strip()把 token id 还原成英文单词,便于人眼判断模型学得怎么样。

常见误区

误区领域预训练不就是在法律文本上把模型重新训练一遍吗?那我直接用 BERT 的架构从头开始训练不就行了?

正解领域预训练通常是在通用模型权重基础上“继续训练”(Continue-Pretraining),保留模型已有的通用语言能力,只迁移领域知识。从头训练需要海量语料与高昂算力,一般几十万条法律文本根本不够喂饱一个全新模型。

为何常见:直觉上觉得“专业模型=专用模型从头训练”,忽略了迁移学习的价值。

误区LegalBERT 已经读过那么多法律书了,直接拿去做合同审查肯定很准!

正解预训练模型像“通晓语言的实习生”,微调(Fine-tuning)才是“正式上岗培训”。合同审查、法条分类都是具体任务,仍然需要少量标注数据对模型做微调,预训练只是为微调打好了地基。

为何常见:搞混了“通识教育”和“岗位实训”两个阶段,把预训练能力误当成现成的任务能力。

误区Lawformer 能读 4096 个 token,肯定比只能读 512 个的 LegalBERT 强,干脆全部用 Lawformer。

正解长文本模型在长文档任务上确实更强,但在短文本分类、句对匹配等任务上与 LegalBERT 相当甚至更慢更耗资源。长模型推理开销更大,选型必须结合输入长度和硬件成本。

为何常见:把“能力上限”当成“全面优势”,忽略了性能与资源的权衡。

误区LegalBERT 一次只能看 512 个字,我这段合同超过 512 字它就废了。

正解token 不是字符。英文中一个常见单词约 1-2 个 token,中文 BERT 中一个汉字约等于 1 个 token。LegalBERT 的 512 token 大约对应 300-500 个汉字,要看具体分词器的词表设计。

为何常见:把编程里的“字符”概念直接套到 NLP 的"token"上,忽略了 BPE 子词分词的机制。

面试题

Q1. 领域预训练的主要目的是什么?

单选题 · easy

  • A.从零训练一个更大的模型
  • B.让模型掌握通用世界的常识
  • C.让模型学习特定领域的词汇与语义← 正确答案
  • D.减少模型整体的参数量

答案:C。领域预训练是在通用模型基础上,用专业语料继续训练,让模型吸收法律术语和行文特征。它解决的是“语义鸿沟”,而非从头训练或压缩模型。

Q2. LegalBERT 的架构基础是哪一个?

单选题 · easy

  • A.双向编码模型 BERT← 正确答案
  • B.生成式模型 GPT
  • C.长短期记忆网络 LSTM
  • D.超长文本模型 XLNet

答案:A。LegalBERT 就是“BERT 架构 + 法律语料继续预训练”的产物,属于编码器模型,擅长理解类任务。GPT 是生成式结构,LSTM 是循环网络,都不是它的底座。

Q3. LegalBERT 在预训练阶段主要使用哪种训练任务?

单选题 · mid

  • A.掩码语言建模任务← 正确答案
  • B.因果语言建模任务
  • C.自回归文本生成
  • D.图像对比学习

答案:A。LegalBERT 使用 BERT 的标志性任务 MLM(掩码语言建模):随机遮住部分词让模型猜回,从而学习双向上下文表示。因果语言建模和自回归生成是 GPT 系的思路。

Q4. Lawformer 相比 LegalBERT 的核心优势是什么?

单选题 · mid

  • A.模型参数量明显更小
  • B.支持更长的输入序列← 正确答案
  • C.完全不需要预训练
  • D.输出结果更易解释

答案:B。Lawformer 基于 Longformer 改造,最大序列长度可达 4096+ token,远高于 LegalBERT 的 512。长文档任务上这是决定性优势,但参数量与资源占用也更大。

Q5. 知识蒸馏中,通常把什么模型当作“老师”?

单选题 · mid

  • A.训练速度更快的模型
  • B.数据质量更高的模型
  • C.参数量更小的新模型
  • D.参量更大能力更强的模型← 正确答案

答案:D。教师模型通常是参数量更大、能力更强的模型,负责输出“软标签”;学生模型学习软标签来继承其判断经验。这好比老律师带新人,经验比死记结论更有价值。

Q6. 若模型在合同审查中的精确率 P=0.8、召回率 R=0.5,那么 F1 分数是多少?

单选题 · hard

  • A.0.60
  • B.0.615← 正确答案
  • C.0.65
  • D.0.575

答案:B。F1 = 2PR/(P+R) = 2×0.8×0.5/(0.8+0.5) = 0.8/1.3 ≈ 0.615。精确率和召回率任意一个偏低,F1都会被显著拉低,这正是调和平均的特性。

Q7. Lawformer 的稀疏注意力中,掩码矩阵 M 的作用是什么?

单选题 · hard

  • A.增加模型的参数量
  • B.对输入文本进行加密
  • C.让窗口外注意力变负无穷← 正确答案
  • D.提高训练语料的质量

答案:C。掩码矩阵把滑动窗口外的位置设为负无穷,经过 softmax 后这些位置的注意力权重归零,使模型只关注局部窗口与全局监测点,从而把长文本注意力计算量从 O(n²) 降为 O(n)。

Q8. 以下哪些属于 LegalBERT/Lawformer 的典型下游任务?

多选题 · mid

  • A.合同风险条款识别← 正确答案
  • B.法条案由分类判断← 正确答案
  • C.相似案例语义检索← 正确答案
  • D.图像证据自动识别

答案:ABC。合同审查、法条分类、案例检索是法律 NLP 的三大典型任务。图像证据识别属于多模态视觉任务,不在文本预训练模型的能力范围内。

Q9. 部署法律 NLP 模型时,常用的优化手段有哪些?

多选题 · extreme

  • A.知识蒸馏压缩模型← 正确答案
  • B.模型量化降低精度← 正确答案
  • C.增加训练集样本量
  • D.推理框架加速优化← 正确答案

答案:ABD。知识蒸馏、INT8/FP16 量化和 ONNX/TensorRT 等推理加速是部署侧常用手段。增加训练集样本量属于训练阶段的工作,不属于部署优化。

Q10. 法律文本相比通用文本的特点有哪些?

多选题 · easy

  • A.法律术语密度高← 正确答案
  • B.句式长且结构严谨← 正确答案
  • C.语言表达偏口语化
  • D.条款之间经常引用← 正确答案

答案:ABD。法律文本术语密度高、句子超长、结构严谨且频繁互引条文。口语化表达是通用文本的特征,法律文书恰恰相反,追求精确与正式。