想象你是一家大型律所的新人律师,案头放着一份上百页的并购合同。合伙人要求你三天内找出所有“坑”:哪一句给了对方单方解约权?赔偿上限是否突破行业惯例?保密义务的覆盖范围够不够?你逐段翻读,眼睛看花了也未必找得全。倘若有一本“法律体检手册”,把合同中常见的510类风险条款都编好号、贴好标签,再让AI模型拿着手册逐条扫描合同,遇到可疑之处立刻高亮——这就是CUAD合同理解数据集要做的事。它像一位不知疲倦的助理,用标准化的方式教会AI“看”合同,也为律师、法务和法学院学生提供了一份可复用的知识基准。

岗位关联

掌握CUAD数据集的构建设计、条款分类体系与模型微调方法,是进入法律NLP领域最务实的一步——无论做合同审查、案例检索还是司法辅助,你都能借此快速搭建自己的智能法律工具。

目录
  1. 可视化演示
  2. 数据集概述
  3. 条款分类体系
  4. 构建流程
  5. 模型微调
  6. 评估指标
  7. 应用挑战
  8. 行业应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示合同文档条款分类与CUAD数据集510类条款体系,对比预训练模型在法律条款识别的F1表现。

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

合同条款分类 非竞争条款 终止条款 clause→label 逐条款识别法律语义

数据集概述

假设你第一次带家人去体检,护士递来一本《体检项目手册》,里面把血常规、肝功能、心电图都写得明明白白——正常值多少、异常怎么判读。CUAD(Contract Understanding Atticus Dataset)就是法律界的“体检项目手册”,不过它教的学生不是人,而是AI模型。手册要教会AI认识合同里常见的“风险体征”:哪句是解约条款、哪句是保密义务、哪句设置了赔偿上限。

这本“手册”由法律科技机构Atticus的研究者联合多家单位发布,数据来自美国上市公司在SEC披露的真实商业合同。它的任务形式非常像“阅读理解考试”:给定一份合同和一个问题(“采购方是否有排他购买权?”),模型要从合同原文中找出证据片段。CUAD把这种形式大规模化,涵盖510类法律条款的标注,每个样本都有一对“问题—答案片段”,答案直接指向合同原文的某个连续区间。

从建模角度看,可以把CUAD理解成一个三元组集合:

所以CUAD既是“体检手册”又是“考题集”。AI在它上面反复练习“哪里是风险点”,练得多了,再看新合同时就能像老护士一样,一眼扫过去就知道该查哪一项。

DCUAD={(ci,qi,ai)∣i=1,2,…,N}\mathcal{D}_{\text{CUAD}} = \{ (c_i, q_i, a_i) \mid i = 1, 2, \ldots, N \}
这个公式说明:数据集里每个样本都由三部分组成——合同文本 \(c\)、关于条款的问题 \(q\)、以及在合同中标注的答案片段 \(a\)。
  1. 数据集符号\mathcal{D}_{\text{CUAD}} 代表CUAD整个数据集,也就是所有训练和测试样本的集合。
    DCUAD\mathcal{D}_{\text{CUAD}}
  2. 样本三元组圆括号里的 (c_i, q_i, a_i) 表示第 i 个样本,包含合同、问题、答案三要素。
    (ci,qi,ai)(c_i, q_i, a_i)
  3. 合同文本c_i 是第 i 份合同的内容,来自真实商业合同文本。
    cic_i
  4. 问题与答案q_i 是律师针对条款提出的问题,a_i 是答案在合同原文中的位置片段。
    qi,aiq_i, \quad a_i
  5. 样本范围N 是标注样本总数,下标从 1 到 N 表示遍历整个数据集。
    i=1,2,…,Ni = 1, 2, \ldots, N

条款分类体系

体检手册不是把项目乱堆一气,而是分成内科、外科、五官科。CUAD同样把合同条款整理成体系——510类条款不是流水账,而是围着“合同风险”这个核心展开:哪些条款决定了一方能不能提前跑路(终止权),哪些条款规定了谁要对损失负责(违约责任),哪些条款锁住了商业秘密(保密义务)。

CUAD的条款分类体系覆盖商业合同中高频出现的风险条款,典型代表有:终止权、转让权、担保条款、赔偿上限、排他权、不竞争条款等。每一条标注都要求定位到合同中的具体句子或短语,而不是给整份合同贴一张“风险等级”标签。这种片段级粒度,让AI既能告诉律师“这里有解约风险”,又能直接引述原文位置。

从形式上看,条款分类可以视为一种映射关系:

就像体检报告每一项都有编号和参考值,CUAD的条款分类让“风险”变得可度量、可检索。模型输出的不再是一句“这里有问题”,而是“这是第几类风险,原文在哪一行”。

Category(t)=k,k∈{1,2,…,510}\text{Category}(t) = k, \quad k \in \{1, 2, \ldots, 510\}
这个公式表示:任意一条条款文本 \(t\),都会被映射到一个唯一的类别编号 \(k\),编号范围从 1 到 510。
  1. 条款文本t 表示从合同中切出的一句话或一个片段,是分类的对象。
    tt
  2. 分类函数\text{Category} 是完成映射的函数,负责判断条款属于哪一类。
    Category\text{Category}
  3. 映射结果k 是输出的类别编号,例如 1 可能代表终止权、2 代表担保。
    kk
  4. 类别空间k \in \{1, 2, \ldots, 510\} 说明类别编号只有510种可能。
    k∈{1,2,…,510}k \in \{1, 2, \ldots, 510\}
  5. 对应关系等号表示“条款文本 → 类别编号”的一一映射。
    ==

构建流程

编体检手册不能靠一个人拍脑袋,得请多位经验丰富的医生各自独立看同一批病例,再碰头核对结论,遇到分歧翻标准讨论。CUAD的构建就是这样一个“医生团”工程。

构建流程分四步走。第一步,从SEC EDGAR系统采集美国上市公司披露的真实合同,保证样本来自实际业务而非虚构。第二步,由专业律师与法律研究员起草问题,并在合同原文中标注答案片段,形成“问题—证据”对。第三步,由第二位标注员独立复核,计算标注一致性指标,剔除分歧过大的样本。第四步,通过质量校验的样本进入公开数据集,供研究者下载使用。

标注是否可靠,用Cohen's Kappa系数来衡量:

Kappa就像“医生们对同一份报告的共识度”。共识度越高,后面教AI时“标准答案”才不会互相打架,模型学到的规律才稳定。

κ=po−pe1−pe\kappa = \frac{p_o - p_e}{1 - p_e}
Kappa值越接近1,说明不同标注员对“该标哪一句、标成什么类型”越一致;一般认为0.8以上属于高度一致。
  1. 观察一致率p_o 表示两位标注员实际标注结果相同的比例。
    pop_o
  2. 期望一致率p_e 表示在随机情况下两人碰巧标注一致的概率。
    pep_e
  3. 真实一致程度p_o - p_e 是实际一致超出随机巧合的部分,代表“真本事”。
    po−pep_o - p_e
  4. 最大可能差距1 - p_e 是完全一致与随机水平之间的最大差距。
    1−pe1 - p_e
  5. 一致性系数\kappa 是两者之比,越接近1说明标注越可靠。
    κ=po−pe1−pe\kappa = \frac{p_o - p_e}{1 - p_e}

模型微调

手册编好了,接下来要校准“体检仪器”。预训练模型(如BERT)就像一台通用的显微镜,什么都看得见但不够专业;在CUAD上微调,相当于给显微镜装上“法律专用目镜”,让它盯着合同条款这类小目标对焦。

微调采用抽取式问答的设置:把问题和合同文本拼接成模型输入,输出预测答案片段在原文中的起止位置。常用的预训练模型包括BERT、RoBERTa、Longformer等,其中Longformer等长文本模型能处理更长的合同上下文。研究者通常在相同数据划分下对比多个模型的微调效果,观察哪一个在测试集上表现更优。

训练目标是最小化起止位置预测的负对数似然损失:

所谓微调,就是让“显微镜”在510类条款样本上来回对焦,直到它扫到“赔偿上限”字样时能熟练地圈出边界——起点在哪、终点在哪,分毫不差。

L=−log⁡P(ystart∣c,q)−log⁡P(yend∣c,q)\mathcal{L} = -\log P(y_{\text{start}} \mid c, q) - \log P(y_{\text{end}} \mid c, q)
这个公式说明:模型必须同时“猜对”答案从哪里开始、到哪里结束,两个位置都对了才算答对。
  1. 输入条件c 是合同文本,q 是问题,两者共同作为模型的输入。
    c,qc, q
  2. 起点位置y_{\text{start}} 是答案片段在合同中开始位置的索引。
    ystarty_{\text{start}}
  3. 终点位置y_{\text{end}} 是答案片段在合同中结束位置的索引。
    yendy_{\text{end}}
  4. 条件概率P(y \mid c, q) 表示输入合同和问题后,模型认为位置 y 是正确答案端点的概率。
    P(ystart∣c,q)P(y_{\text{start}} \mid c, q)
  5. 负对数似然对概率取负对数再求和,概率越大损失越小,训练就是让这个损失不断下降。
    −log⁡P(ystart∣c,q)−log⁡P(yend∣c,q)-\log P(y_{\text{start}} \mid c, q) - \log P(y_{\text{end}} \mid c, q)

评估指标

仪器校准完,要用“标准试纸”检验:既不能乱报警(把没病说成有病),也不能漏报危重指标。法律场景里尤其怕漏报——一份合同没标出单方解约权,可能让客户损失惨重。

CUAD最常用的评估指标是精确率、召回率和F1。精确率回答“模型标出的风险条款里,有多少是真的风险”;召回率回答“真实存在的风险条款里,模型找出了多少”。两者常常此消彼长,于是用F1做调和平均:

在真实部署中,工程师还会调整阈值:宁可精确率低一点,也要把召回率拉高,保证“该查的都查出来”,再由律师做最后复核。这就像体检中心先放宽临界值筛出所有疑似,再请专家逐一确认。

F1=2×P×RP+RF_1 = \frac{2 \times P \times R}{P + R}
F1是精确率和召回率的“和事佬”:P和R哪个变小了,F1都会被拉低,逼着模型两边都别太差。
  1. 精确率P 表示预测出的风险条款中真正属于风险的比例。
    P=TPTP+FPP = \frac{TP}{TP + FP}
  2. 召回率R 表示真实风险条款中被模型找出的比例。
    R=TPTP+FNR = \frac{TP}{TP + FN}
  3. 分子部分2 \times P \times R 是调和平均的分子,让两个指标互相制约。
    2×P×R2 \times P \times R
  4. 分母部分P + R 是两个指标之和,保证结果是两个数的平均值。
    P+RP + R
  5. 综合指标F_1 越接近1,说明模型在精确和完整之间平衡得越好。
    F1=2×P×RP+RF_1 = \frac{2 \times P \times R}{P + R}

应用挑战

再厚的体检手册,也怕“疑难杂症”。现实中一份并购合同几百页,远超普通模型的“视力范围”。这就好比视力表只做到第10行,你让医生看清20米外的第15行,仪器直接罢工。

第一个挑战是长文本。BERT等模型输入通常限制在512个token,而真实合同往往上万词,超出部分只能截断或滑窗,容易漏掉跨页条款。第二个挑战是少样本迁移:CUAD主要面向美国上市公司商业合同,遇到中国企业的增资协议或建筑工程合同,类别体系未必适配。第三个挑战是领域泛化:法律措辞千变万化,同一含义可能用不同句法表达。第四个挑战是可解释性:律师需要知道“为什么标这句”,不能只给一个答案。

长文本问题的根源在于自注意力机制的计算量随序列长度平方增长:

Longformer、BigBird等模型用稀疏注意力把复杂度降下来,相当于给体检仪器加了“广角镜头”——看长合同不再头晕。但这也提醒我们:把CUAD用到新场景前,必须做足适配,不能直接套用。

Attention(Q,K,V)=softmax(QK⊤dk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V
每个token都要和其他所有token计算相关度,n个token就要算n×n次,所以超长合同特别消耗内存和算力。
  1. 三个矩阵Q、K、V 分别代表查询、键、值矩阵,由输入向量变换而来。
    Q,K,VQ, K, V
  2. 相关度计算QK^{\top} 计算所有位置两两之间的相关度,结果是一个 n×n 的矩阵。
    QK⊤QK^{\top}
  3. 缩放因子除以 \sqrt{d_k} 防止内积过大导致softmax梯度消失。
    dk\sqrt{d_k}
  4. 归一化权重\text{softmax} 将相关度转换成概率权重,和为1。
    softmax\text{softmax}
  5. 加权聚合乘以 V 得到每个位置的输出,整个过程对每个token都要遍历全部token。
    Attention(Q,K,V)\text{Attention}(Q, K, V)

行业应用

手册有了,仪器校准了,体检中心就能开门营业。CUAD的价值不只在实验室排行榜上,它已经走进律所、法院和课堂。

行业应用大体有四类。合同审查:在投融资、并购场景中自动定位风险条款,输出高亮清单供律师复核;案例检索:按条款类型给历史合同和判例打标签,建立“条款级”索引;教学辅助:法学院用CUAD的真实标注训练学生的合同审查能力;司法辅助:法院或仲裁机构批量筛查合同类纠纷证据中的关键条款。

人机协作带来的效率提升,可以用一个简洁的比例表示:

就像体检中心用仪器初筛、医生复诊,AI先扫出可疑条款、律师再做专业判断——CUAD的价值,是把人从重复劳动中解放出来,去做真正需要经验和判断的事。

TmanualTassisted≈10\frac{T_{\text{manual}}}{T_{\text{assisted}}} \approx 10
意思是:有了AI辅助之后,完成同类合同审查的时间大约缩短到原来人工方式的十分之一。
  1. 人工耗时T_{\text{manual}} 表示完全靠律师逐条阅读所需的审查时间。
    TmanualT_{\text{manual}}
  2. 辅助耗时T_{\text{assisted}} 表示AI先扫描再人工复核所需的时间。
    TassistedT_{\text{assisted}}
  3. 效率倍数两者比值约为10,说明辅助方式快了一个数量级。
    TmanualTassisted\frac{T_{\text{manual}}}{T_{\text{assisted}}}
  4. 近似符号\approx 表示数量级估计,实际倍数因合同复杂度而异。
    ≈\approx
  5. 十倍关系= 10 表示大约缩短到十分之一,人把精力留给高价值判断。
    TmanualTassisted≈10\frac{T_{\text{manual}}}{T_{\text{assisted}}} \approx 10

AI 应用场景

律所合同审查

阶段:信息抽取与审查辅助

解决的问题:传统律师逐条审阅并购合同耗时数天且容易漏看条款。用CUAD微调后的模型可自动定位终止权、赔偿上限等关键条款并高亮,律师只需复核重点位置。

具体案例:某头部律所在尽调项目中使用微调后的问答模型扫描200页SPA合同,30分钟产出可疑条款清单,人工复核后发现关键问题准确率超过85%,整体审阅时间缩短60%。

企业法务案例检索

阶段:语义检索与知识管理

解决的问题:法务部历史合同和判例多,传统关键词检索命中率低。CUAD条款分类可给历史合同片段打标签,建立起“条款级”智能索引。

具体案例:一家跨国企业把三年来的供应商合同按CUAD条款体系标注索引,法务人员输入“排他权”即可召回所有相关条款及历史谈判结果,避免重复谈判同一风险点。

法学院智能教学

阶段:教学资源建设与实训

解决的问题:学生缺少真实合同样本,教师手动标注耗时费力。CUAD提供了现成的高质量标注样本,用于训练学生的条款识别能力。

具体案例:某高校法学院在《合同审查实务》课程中,用CUAD子集布置作业:学生先手写标注,再与数据集标注对比,学习标注一致性和审查要点,课堂效率显著提升。

Python 演示

python92 行
import re # 迷你合同语料(模拟CUAD中的真实合同样本)CONTRACT = """1. 本合同自签署之日起生效,有效期三年。2. 甲方有权在提前三十日书面通知后终止本协议。3. 双方应对对方披露的商业秘密负有保密义务。4. 如一方违约,应赔偿对方因此遭受的全部损失。5. 任何一方的赔偿责任总额不超过合同总金额的百分之二十。6. 乙方应于每月五日前交付上月销售数据报告。""" # 模拟CUAD的条款类别体系(真实为510类,这里取5类代表)CLAUSE_KEYWORDS = {    "终止权": ["终止", "解除"],    "担保": ["担保", "保证"],    "保密义务": ["保密"],    "违约责任": ["违约", "赔偿"],    "赔偿上限": ["不超过", "上限"],}  def sentence_tokenize(text):    """按句切分合同,返回(句子序号, 句子文本)列表。"""    result = []    parts = re.split(r"[。;\n]+", text)    for idx, sent in enumerate(parts):        sent = sent.strip()        if sent:            result.append((idx, sent))    return result  def predict_clauses(text):    """用关键词规则模拟模型预测,返回(序号, 句子, 标签列表)。"""    predictions = []    for idx, sent in sentence_tokenize(text):        labels = [name for name, kws in CLAUSE_KEYWORDS.items()                  if any(k in sent for k in kws)]        if labels:            predictions.append((idx, sent, labels))    return predictions  def evaluate(predictions, ground_truth):    """计算标签级别的精确率、召回率与F1。"""    pred_map = {idx: set(labels) for idx, _, labels in predictions}    true_map = {idx: set(labels) for idx, _, labels in ground_truth}    tp = fp = fn = 0    for idx, true_labels in true_map.items():        pred_labels = pred_map.get(idx, set())        tp += len(true_labels & pred_labels)        fn += len(true_labels - pred_labels)    for idx, pred_labels in pred_map.items():        fp += len(pred_labels - true_map.get(idx, set()))    precision = tp / (tp + fp) if tp + fp else 0.0    recall = tp / (tp + fn) if tp + fn else 0.0    f1 = 2 * precision * recall / (precision + recall) if precision + recall else 0.0    return precision, recall, f1  def token_f1(pred_sent, true_sent):    """计算两个句子的token级F1(CUAD边界评估的核心思想)。"""    pred_tokens = set(re.findall(r"[\w\u4e00-\u9fff]+", pred_sent))    true_tokens = set(re.findall(r"[\w\u4e00-\u9fff]+", true_sent))    if not pred_tokens or not true_tokens:        return 0.0    inter = pred_tokens & true_tokens    p = len(inter) / len(pred_tokens)    r = len(inter) / len(true_tokens)    return 2 * p * r / (p + r) if p + r else 0.0  if __name__ == "__main__":    pred = predict_clauses(CONTRACT)    gt = [        (1, "甲方有权在提前三十日书面通知后终止本协议。", ["终止权"]),        (2, "双方应对对方披露的商业秘密负有保密义务。", ["保密义务"]),        (3, "如一方违约,应赔偿对方因此遭受的全部损失。", ["违约责任"]),        (4, "任何一方的赔偿责任总额不超过合同总金额的百分之二十。", ["赔偿上限"]),    ]    print("=== 模型条款扫描结果 ===")    for idx, sent, labels in pred:        print(f"句子{idx + 1} → {labels}:{sent[:16]}...")    p, r, f = evaluate(pred, gt)    print(f"\n精确率={p:.2f} 召回率={r:.2f} F1={f:.2f}")    print("(模型多报了“违约责任”,导致精确率下降——CUAD场景里宁可多报也怕漏报。)")    sf1 = token_f1(        "赔偿责任总额不超过合同总金额的百分之二十",        "任何一方的赔偿责任总额不超过合同总金额的百分之二十",    )    print(f"token级F1示例(边界少了几字):{sf1:.2f}")
目的:用关键词规则模拟一个极简版CUAD条款识别与评估流程,展示从合同扫描到精确率/召回率/F1计算的完整闭环。
  1. labels = [name for name, kws in CLAUSE_KEYWORDS.items() if any(k in sent for k in kws)]逐个类别检查关键词是否出现在句中,模拟模型的条款分类预测。
  2. pred_map = {idx: set(labels) for idx, _, labels in predictions}把预测结果整理成“句子序号→标签集合”的映射,方便后续计算。
  3. tp += len(true_labels & pred_labels)统计预测与真实标签重合的数量,这是精确率和召回率的共同分子。
  4. fp += len(pred_labels - true_map.get(idx, set()))统计模型多报的标签,精确率因此下降。
  5. f1 = 2 * precision * recall / (precision + recall) if precision + recall else 0.0用调和平均综合两个指标,避免偏科。
  6. token_f1展示答案边界不精确时,逐词重叠计算会让分数下降,呼应CUAD的片段级评估。

常见误区

误区我以为CUAD是把每份合同整体打一个标签,比如“这是一份租赁合同”或“这是一份劳动合同”,类似文本分类任务。

正解CUAD是片段级抽取式标注,针对合同中的具体条款定位。就像体检不是给整个人贴“健康/生病”标签,而是具体测出哪项指标异常。每个标注是一个连续片段(起止位置)+ 条款类型,模型要在原文中找出证据。

为何常见:接触过文本分类的人容易套用“文档→标签”的惯性思维,忽略了CUAD的问答式任务设计。

误区我在调参时只看最高F1,认为F1到90%就是好模型,不用管其他参数。

正解CUAD实际使用中,律师宁可多标出几个假阳性风险条款,也不愿漏掉真正的风险。评估要结合精确率—召回率曲线选择阈值,没有一个“万能最优”指标,取决于应用场景是“宁错杀”还是“宁放过”。

为何常见:竞赛和排行榜文化让新手只盯单值指标,但工程落地必须考虑误报和漏报的实际代价。

误区BERT这么强,直接把合同文本丢进去,它应该就能找出关键条款。

正解通用语言模型对法律措辞很陌生,像“兹此”“承继方”“不竞争期间”这类表达,在通用语料中很少见。必须用CUAD微调后,模型才熟悉法律文本的句式与词汇,否则就像没学过医的人看体检报告,每个字都认识但不知道含义。

为何常见:预训练模型在通用任务上的惊艳表现,让人低估了领域差距的严重性。

误区CUAD有510个类别,是不是任何合同风险都能覆盖?我以后做业务直接抄这个清单就行。

正解510类来源于美国上市公司商业合同(SEC披露),侧重并购、雇佣、保密等条款,对工程合同、知识产权许可、诉讼和解协议等不一定适配。就像《体检项目手册》不会包含“飞行员的离心机测试”,不同领域需要定制化条款体系。

为何常见:被"510"这个大数字震撼,忽略了数据来源的领域边界。

误区模型只要把正确答案所在的那句话定位出来,就算满分,边界差几个字没关系。

正解CUAD评估采用token级F1,多一个词、少一个词都会降分。比如答案应该是“赔偿责任总额不超过合同总金额的百分之二十”,模型只输出“合同总金额的百分之二十”,虽然意思接近,但边界不精确照样扣分。这就像体检报告写“血压偏高”和“收缩压150mmHg”,量化精度完全不同。

为何常见:人眼觉得“差不多”,但机器评估是按词逐一对齐的,差值会被精确量化。

面试题

Q1. CUAD数据集中,模型的主要任务形式是什么?

单选题 · easy

  • A.抽取式问答定位条款← 正确答案
  • B.文本分类打标整篇合同
  • C.生成式摘要总结内容
  • D.关键词频率统计分析

答案:A。CUAD把合同理解建模为抽取式问答:给定合同和问题,模型输出原文中连续片段作为答案。选项B是文档级分类,C是生成式摘要,D是统计方法,都不符合CUAD的任务设定。

Q2. CUAD共覆盖多少类法律条款类别?

单选题 · easy

  • A.不到五十类
  • B.五百一十类← 正确答案
  • C.超过一千类
  • D.一百类左右

答案:B。CUAD数据集涵盖510类法律条款的标注,这是该数据集最核心的规模特征。其他选项的数量都与510相差甚远,属于干扰项。

Q3. 构建CUAD时,衡量标注员标注一致性常用什么指标?

单选题 · easy

  • A.精确率分数
  • B.Kappa系数← 正确答案
  • C.混淆矩阵值
  • D.准确率数值

答案:B。Cohen's Kappa系数用于衡量两位标注员标注结果的一致性,剔除了随机碰巧一致的影响。精确率和准确率是模型评估指标,混淆矩阵是结果展示工具,都不直接衡量标注一致性。

Q4. 如果模型预测出大量“风险条款”,但其中很多并非真实风险,会导致什么?

单选题 · mid

  • A.精确率会明显下降← 正确答案
  • B.召回率反而上涨
  • C.F1分数必然提高
  • D.数据规模会变大

答案:A。精确率 = 真正的风险数 / 模型预测的所有风险数。预测了很多假风险,分母变大而分子不变,精确率自然下降。召回率看的是漏报情况,与多报无关;F1受精确率拖累也不会提高。

Q5. 为什么直接用BERT处理上百页合同的效果往往不佳?

单选题 · mid

  • A.输入长度受窗口限制← 正确答案
  • B.模型训练速度太慢
  • C.法律文本不能编码
  • D.缺少中文分词器

答案:A。BERT通常限制输入在512个token内,而上百页合同远超这个窗口,截断或滑窗都会丢失跨页信息。训练速度是工程问题而非效果不佳的主因,法律文本完全可以被编码,分词器也不是BERT处理英文合同的瓶颈。

Q6. 微调抽取式问答模型时,输出层通常预测什么?

单选题 · hard

  • A.答案片段的起止位置← 正确答案
  • B.整个合同的摘要内容
  • C.条款类别的概率分布
  • D.下一句的语义关联

答案:A。抽取式问答的输出是两个位置索引:答案在原文中的起点和终点。训练损失也是对这两个位置的预测概率建模。摘要和类别分布属于生成式/分类式任务,下一句预测是预训练阶段的任务而非微调输出。

Q7. token级F1比句子级匹配更严格的原因是什么?

单选题 · hard

  • A.词汇重叠程度决定得分← 正确答案
  • B.分类标签数量更多
  • C.训练数据规模更大
  • D.推理速度要求更高

答案:A。token级F1按词级别的重叠计算分数,预测片段多一个词、少一个词都会直接影响分子分母,边界不精确就会被扣分。而句子级匹配只要整句对就满分,无法体现细微边界差异。标签数量、数据规模、推理速度都与评估严格性无关。

Q8. CUAD的典型应用场景包括哪些?

多选题 · mid

  • A.律师尽调合同审查← 正确答案
  • B.法律案例智能检索← 正确答案
  • C.菜谱营养信息分析
  • D.法学院实务教学← 正确答案

答案:ABD。CUAD的510类条款标注可用于律师合同审查(自动定位风险条款)、案例检索(条款级索引)和法学院教学(真实标注样本)。菜谱营养分析完全偏离法律领域,属于干扰项。

Q9. CUAD构建流程中包含哪些环节?

多选题 · mid

  • A.从公开文件采集合同← 正确答案
  • B.律师起草问答标注← 正确答案
  • C.计算标注一致性← 正确答案
  • D.直接替换法律条文

答案:ABC。CUAD从SEC公开文件采集真实合同,由律师起草问题并标注答案片段,再用Kappa系数校验标注一致性。“直接替换法律条文”既不符合流程,也违背数据真实性原则。

Q10. 关于CUAD及法律NLP应用,下列说法正确的是?

多选题 · hard

  • A.微调后可辅助审查合同← 正确答案
  • B.长文本是重要挑战之一← 正确答案
  • C.类别覆盖所有法律领域
  • D.评估指标需结合实际场景← 正确答案

答案:ABD。预训练模型经CUAD微调后可辅助合同审查;真实合同超长导致BERT窗口溢出,长文本确实是重要挑战;评估时应结合“宁错杀不放过”等场景偏好调整阈值。选项C错误,510类主要来自美国上市公司商业合同,并不覆盖所有法律领域。