目录

本项目是对2021年中国法律智能技术评测信息抽取赛题第二名方案的总结复盘,本次比赛使用了新的模型和训练方法,出乎意料地取得了较好的结果,值得回顾一下。在调参、模型集成等方面尚有较大进步空间,再接再厉。

赛题介绍

赛题背景

信息抽取是自然语言处理中一类基础任务,涉及命名实体识别与关联抽取等多类子任务。在法律文本中主要体现为对于案件关键信息如嫌疑人、涉案物品、犯罪事实等关键信息的精确抽取。信息抽取对于实现“智慧司法”建设具有现实意义,其结果将辅助司法办案人员快速阅卷、厘清案件信息,也是知识图谱构建、相似案例推荐、自动量刑建议等一系列任务的重要基础。该任务需要参赛队伍从包含案件情节描述的陈述文本中识别出关键信息实体,并按照规定格式返回结果进行评测。

赛题描述

赛题数据

本次任务所使用的数据集主要来自于网络公开的若干罪名法律文书,总计近7500条数据,10类相关业务相关实体,分别为犯罪嫌疑人、受害人、作案工具、被盗物品、被盗货币、物品价值、盗窃获利、时间、地点、组织机构。考虑到多类罪名案件交叉的复杂性,本次任务仅涉及盗窃罪名的相关信息抽取。

第一阶段共公布2277条训练集样本,第二阶段共公布5247条训练集样本,第二阶段的样本包含了第一阶段的样本,也即新加入2970条样本。每条样本以json格式存储,包含idcontextentities三个字段,其中entities为实体列表,包含10类实体在句中出现的位置,每类实体以{"label": <实体类型>, "span": [<起始位置>;<结束位置>, ...]}标记,实体位置区间为左开右闭。样例如下:

1
2
3
4
5
{"id": "88d1d6e93ec6f7803ec83c991277cfd5", "context": "破案后,公安机关将查获手机依法返还给了被害人严某某、肖某某。", "entities": [{"label": "NHCS", "span": []}, {"label": "NHVI", "span": ["22;25", "26;29"]}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": []}, {"label": "NASI", "span": ["9;13"]}, {"label": "NT", "span": []}, {"label": "NS", "span": []}, {"label": "NO", "span": ["4;8"]}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}
{"id": "afa97d0bd66bb68965d076a785bb4dd4", "context": "1、2017年6月底的一天13时许,被告人黄某某在嵊州市剡溪小学斜对面的花木田,扳开坐垫后,窃得戚某某电动自行车上的电瓶4只,计价值人民币352元。", "entities": [{"label": "NHCS", "span": ["21;24"]}, {"label": "NHVI", "span": ["48;51"]}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": ["66;73"]}, {"label": "NASI", "span": ["58;62"]}, {"label": "NT", "span": ["2;17"]}, {"label": "NS", "span": ["25;39"]}, {"label": "NO", "span": []}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}
{"id": "6cd975a14643eafaba73c086994cf6ea", "context": "案发后,被告人家属退赔戚某某损失,获谅解。", "entities": [{"label": "NHCS", "span": []}, {"label": "NHVI", "span": ["11;14"]}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": []}, {"label": "NASI", "span": []}, {"label": "NT", "span": []}, {"label": "NS", "span": []}, {"label": "NO", "span": []}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}
{"id": "558add8edf84e631ba28c0500c12384d", "context": "2、2017年7月初的一天19时许,被告人黄某某在嵊州市鹿山街道李西村李家路口花木田,用车主遗留钥匙打开一辆红色电动自行车的坐垫,窃得绿派电瓶5只,计价值人民币600元。", "entities": [{"label": "NHCS", "span": ["21;24"]}, {"label": "NHVI", "span": []}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": ["77;84"]}, {"label": "NASI", "span": ["67;73"]}, {"label": "NT", "span": ["2;17"]}, {"label": "NS", "span": ["25;42"]}, {"label": "NO", "span": []}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}
{"id": "b20d072f287210640f27b0c49961c5b2", "context": "案发后,绿派电瓶5只被嵊州市公安机关追回。", "entities": [{"label": "NHCS", "span": []}, {"label": "NHVI", "span": []}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": []}, {"label": "NASI", "span": ["4;10"]}, {"label": "NT", "span": []}, {"label": "NS", "span": []}, {"label": "NO", "span": ["11;18"]}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}

实体标签与实际含义的映射关系为

标签 NHCS NHVI NCSM NCGV NCSP NASI NATS NT NS NO
含义 犯罪嫌疑人 受害人 被盗货币 物品价值 盗窃获利 被盗物品 作案工具 时间 地点 组织机构
  • 人名是指出现在案例文本中的自然人的姓名、昵称、社交媒体账号,该实体进一步细分为两种类型的实体,即“犯罪嫌疑犯”、“受害者”。
  • 物品是指《中华人民共和国刑法》第九十一条、第九十二条规定的案件中的公私财产。为了准确区分项目,物品中还包括物品的属性(数量、颜色、品牌和编号等)。该实体进一步细分为“被盗物品”、“作案工具”。
  • 货币是指国家法律认可的法定货币,包括贵金属货币、纸币、电子货币等。货币属性(人民币、美元等)也需要标注,以区分货币类型。该实体细分为“被盗货币”、“物品价值”和“盗窃获利”
  • 案发时间是指案件发生期间的时间表达,包括日历时间(年、月、日等)和非日历时间(上午、下午、晚上、清晨等)。
  • 案发地点是指案例中涉及的地理位置信息,应尽可能详细标注。它包括行政区名称、街道名称、社区名称、建筑编号、楼层编号、地标地址或自然景观等。此外,它还应包含位置指示,例如:“在房子前面”或“在建筑物后面”。
  • 组织是指涉案的行政组织、企业组织或者非政府组织。

两阶段均未公布测试集,需在线提交,线上测试集不包含entities字段,样本其余格式一致。

提交要求

将所有的代码压缩为一个.zip文件进行提交,文件大小限制在2G内,内部顶层必须包含main.py作为运行的入口程序,评测时会在该目录下使用python3 main.py来运行程序。具体地,模型预测时需要从/input/input.json中读取数据进行预测,该数据格式与下发数据格式完全一致,隐去entities字段信息。选手需要将预测的结果输出到/output/output.json中,预测结果文件为一个.json格式的文件,包含两个字段,分别为identities,具体格式如

1
2
3
{"id": "cfcd208495d565ef66e7dff9f98764da", "entities": [{"label": "NHCS", "span": ["3;6"]}, {"label": "NHVI", "span": ["103;106", "107;110", "111;114"]}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": []}, {"label": "NASI", "span": ["103;124"]}, {"label": "NT", "span": ["7;25"]}, {"label": "NS", "span": ["29;51", "52;69", "70;89"]}, {"label": "NO", "span": []}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}
{"id": "d3d9446802a44259755d38e6d163e820", "entities": [{"label": "NHCS", "span": []}, {"label": "NHVI", "span": []}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": ["22;30"]}, {"label": "NASI", "span": ["14;18"]}, {"label": "NT", "span": []}, {"label": "NS", "span": []}, {"label": "NO", "span": ["1;9"]}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}
{"id": "98f13708210194c475687be6106a3b84", "entities": [{"label": "NHCS", "span": ["14;17"]}, {"label": "NHVI", "span": ["70;73"]}, {"label": "NCSM", "span": []}, {"label": "NCGV", "span": []}, {"label": "NASI", "span": ["70;84"]}, {"label": "NT", "span": ["18;29"]}, {"label": "NS", "span": ["31;53"]}, {"label": "NO", "span": []}, {"label": "NATS", "span": []}, {"label": "NCSP", "span": []}]}

评估标准

本任务将采用多标签分类任务中的微平均F1值(Micro-F1-measure)作为评价指标,最终结果以总榜结果为准。共分为四个阶段:

  • 第一阶段(2021.08.01-2021.09.15):
    开启本任务比赛报名,发放CAIL2021-IE1.0小规模训练集,用于编写模型进行训练和测试。每周限提交3次,开放排行榜。
  • 第二阶段(2021.09.01-2021.10.15):
    开放第二阶段测试。对于高于任务预设基准算法成绩的队伍,我们将开放第二阶段的测试提交,第二阶段的最终成绩以各参赛队伍在第二阶段结束之前选择的三个模型中的在第二阶段测试集上的最高分数作为最终成绩。
  • 第三阶段(2021.10.16-2021.11.08):
    封闭评测,第二阶段结束时,所有参赛者需要选择三个在第二阶段提交成功的模型作为最终模型,三个模型取最高值。挑战赛的最终成绩计算方式:最终成绩 = 第二阶段的成绩 * 0.3 + 第三阶段的成绩 * 0.7
  • 第四阶段(2021.11.09-2021.12.31):
    公布最终成绩,并开展技术交流和颁奖活动。

数据分析

对第二阶段给定训练样本集进行分析,总体数据信息如下:

分析项 样本数目 最小文本长度 最大文本长度
/ 5247 5 439

下图是文本长度分布(横坐标为文本长度,纵坐标是该长度的文本数目),长度主要集中在200内:

eda_text_length

下图是实体长度分布(横坐标为实体长度,纵坐标是该长度的实体数目),主要集中在30以内:

eda_entity_length

各类别实体个数如下,相比较而言,样本数目较少的几类是被盗货币、盗窃获利、作案工具和组织机构

类别 犯罪嫌疑人 受害人 被盗货币 物品价值 盗窃获利 被盗物品 作案工具 时间 地点 组织机构 总计
数目 6463 3108 915 2090 481 5781 735 2765 3517 806 26661
占比 24.24% 11.66% 3.43% 7.84% 1.80% 21.68% 2.76% 10.37% 13.19% 3.02% 100%

对各类别的实体长度进行统计可以发现,长实体主要集中在被盗物品中,且很明显是长尾分布:

类别 犯罪嫌疑人 受害人 被盗货币 物品价值 盗窃获利 被盗物品 作案工具 时间 地点 组织机构
最小长度 1 1 2 2 3 1 1 2 2 2
上四分位数 3 3 6 5 4 4 2 11 8 4
中位数 3 3 8 7 5 6 3 12 14 9
下四分位数 3 3 9 8 7 10 5 14 19 10
最大长度 18 18 35 20 15 68 26 34 41 25

下表是实体重叠的统计,表中第i行第j列元素表示第i类实体与第j类实体发生重叠、第i类实体起始位置靠前的计数,如('NHVI', 53, 55, '张某甲')('NASI', 53, 70, '张某甲黑色联想G470笔记本电脑一台')发生重叠,那么(受害人, 被盗物品)计数加1,又如('NS', 21, 44, '靖州县**路许某某、董某某经营的“缺一色”服装店')('NHVI', 27, 29, '许某某')('NHVI', 31, 33, '董某某')发生重叠,则(地点, 受害人)计数加2,空表示计数为0。

类别 犯罪嫌疑人 受害人 被盗货币 物品价值 盗窃获利 被盗物品 作案工具 时间 地点 组织机构
犯罪嫌疑人 / 2 11 13 1
受害人 / 51 1 392 1 1 177
被盗货币 /
物品价值 / 1
盗窃获利 /
被盗物品 25 79 / 3
作案工具 /
时间 /
地点 2 302 2 1 3 1 / 7
组织机构 12 8 /

数据处理

数据划分

进行随机K折划分得到多折数据,多折训练得模型可用于调整超参数、模型集成等,提高预测性能。经划分后,每折训练集共1821条,验证集456条。由于是随机划分,每折内各类实体分布并不一致。

数据增强

尝试了几种数据增强方法,但效果都不太理想:

  1. 跨句语义:指定上下文窗口尺寸,在输入文本前后用相邻样例的文本填充上下文,增大语义范围,动机是数据集内相邻样本可能来自统一篇判决文书,可通过扩大语义范围涵盖更多信息;
  2. 实体替换:实体以一定概率替换为相同形式的其他实体(例如,受害者和犯罪嫌疑人,物品价值、被盗货币和盗窃获利之间相互替换),动机是降低模型对实体文本内容的过拟合风险,例如若受害者中常出现张某某,模型在推测阶段可能更倾向于将其预测为受害者;

    效果不好的原因,初步猜测是因为:1) 模型泛化性能较好;2) 文本已做脱敏处理,如姓名脱敏为X某某、数字脱敏为*,对模型而言特征已足够明显。

  3. 上下文感知:随机[MASK]替换实体文本,[MASK]的数量与实体长度相同,如此可以在形式上尽量与预训练任务保持一致,经MLM预训练的模型应有能力推断出该实体内容。动机是增强模型从上下文推测出实体类型的能力,同样希望能降低模型对实体文本内容的过拟合风险。

模型训练

模型结构

模型结构如图所示,具体可以分为主体编码器和解码器两个部分:

  • 编码器:由于提交文件容量限制,五折交叉验证下只能选用base规模的预训练模型,尝试了hfl/chinese-roberta-wwm-exthfl/chinese-electra-180g-base-discriminatornezha-cn-base,最终采用的是nezha-cn-base。NeZha[3]在结构上与BERT最大的不同在于其采用了相对位置编码,经多次亲测发现该模型确实有效。个人比较吃惊的是用司法领域文本预训练的ELECTRA模型hfl/chinese-electra-180g-base-discriminator在线下表现就很差,甚至存在几折数据训练时难以收敛。
  • 解码器:采用的是基于片段枚举的方法[4,5],将信息抽取转换为多分类问题。具体地,依次以文本序列中每个位置为起始,截取长度为1,2,3,1, 2, 3, \cdots的文本片段,将文本片段首尾token的嵌入向量、文本长度嵌入向量进行拼接得到片段的嵌入表征,即(<片段首词嵌入>, <片段尾词嵌入>, <片段长度嵌入>),最后对该嵌入表征进行多分类,计算各实体类别或者非实体的概率。与常用的条件随机场、基于指针的方法相比,该方法能更好地处理实体重叠问题,缺点是:1)计算复杂、所占计算资源多;2)由于实体在枚举片段中十分稀疏,会产生大量负样本。为了一定程度上缓解正负样本比例失衡的问题,在实际处理样本时设定最大片段长度,仅对长度在该范围内的片段计算分类损失。

model

训练策略

目前「大规模语料预训练-下游任务微调」已经成为自然语言处理基本范式,常见的做法是在已有的预训练模型基础上添加任务相关的网络层,用下游任务数据进行有监督训练,这样的方法虽然粗暴,但是非常有效。本次比赛中尝试了继续预训练(further-pretrain),即「大规模语料预训练-领域内语料预训练-下游任务微调」的训练范式,这种方式训练在排行榜上的提升非常明显。

不要停止预训练

文献[6]研究探讨了用下游任务所属领域文本集对预训练模型继续预训练,是否能有效提升模型在下游任务的表现。作者提出了适应领域的预训练(domain-adaptive pretrainig, DAPT)、适应任务的预训练(task-adaptive pretraining, TAPT),DAPT是指在预训练模型基础上,用领域内语料文本继续预训练语言模型;TAPT是指用下游任务语料文本继续预训练语言模型。目的都是使预训练模型从通用性向领域性迁移,使模型学习到的知识更适用于目标领域。

另外,文中还针对TAPT探讨了预训练语料规模的影响,针对以下两种场景改进了方法:1) Human Curated-TAPT,适用于有大量无标注的任务语料场景,用这些语料进行TAPT预训练;2) Automated Data Selection for TAPT,适用于只有大量无标注的领域语料的场景,用VAMPIRE方法筛选得到任务相关的语料集,具体又可分为最近邻(kNN-TAPT)和随机选取(RAND-TAPT)方法。

文中用RoBERTa在四个领域(biomedical (BIOMED) papers, computer science (CS) papers, newstext from REALNEWS, and AMAZON reviews)八项任务(每个领域两项任务)进行了实验,发现:

  1. DAPT在高资源、低资源情况下都提升了模型下游任务的性能;
  2. 不管是否经DAPT训练,TAPT都会给模型带来较大提升;
  3. 几种不同的训练策略下,在下游任务上的性能由低到高依次为为:TAPT < 50NN-TAPT < 100NN-TAPT < 150NN-TAPT < 500NN-TAPT < Curated-TAPT < DAPT < DAPT < TAPT。

dont_stop_pretraining

基于该文章发现,本次比赛尝试了用司法领域文本语料对NeZha继续预训练。从往届比赛官网CAIL2018CAIL2019CAIL2020下载整理得到各任务文本数据(2019年数据未给出),从中对比筛选了与本赛道较相似的文本作为预训练语料。具体地,构建语料选用了2018年全部文本、2021年案类检索、阅读理解和信息抽取赛道的文本。考虑到本次信息抽取赛道仅包含盗窃类案件,设置简单的过滤条件筛选保留包含“盗窃”一词的司法文本,并设置最短文本长度30、最长文本长度256,仅保留文本长度在该范围内的语料,总计1159258条。对这些文本用jieba分词工具分词,用于在预训练时进行全词掩盖(whole-word-mask)。注意到,该方案选用的预训练语料集中包含了信息提取赛道的文本数据,接近Human Curated-TAPT。预训练任务采用掩词预测(Masked Language Modeling, MLM),超参数设置如下,经30k步训练的NeZha最终MLM损失值为0.7877,尝试过进行100k步训练使MLM损失更低(0.4732)但效果不理想。对比经预训练前后的NeZha在微调阶段的性能,发现其有非常大的提升(具体查看消融对比),相比之下hfl/chinese-electra-180g-base-discriminator在微调阶段都难以收敛,属实令人费解。

参数 最大文本长度 掩词概率 优化器 学习率调整策略 初始学习率 权重衰减 训练步数 warmup步数 批次大小 梯度累积
/ 256 0.15 AdamW Linear 5e-5 0.01 30k 1.5k 48 4

信息抽取任务微调

微调阶段,用司法文本预训练得到的模型权重(nezha-legal-cn-base-wwm)作为初始化,模型词向量维度为768,包含12层编码层,每层内部包含12个注意力头,其相对位置编码最大截断位置取64。解码器部分,长度嵌入表征维度为128,最大枚举片段长度控制在40,即对长度在40以内的片段计算分类损失。损失函数采用Label Smoothing,减少模型过拟合,即

Llsr=1Ni=1Nk=1Cpk(i)logp^k(i)pk={1ϵk=yϵ/(C1)ky\begin{aligned} L_{lsr} &= \frac{1}{N} \sum_{i=1}^{N} \sum_{k=1}^{C} p^{(i)}_k \log \hat{p}^{(i)}_k \\ p_k &= \begin{cases} 1 - \epsilon & k = y \\ \epsilon / (C - 1) & k \neq y \end{cases} \end{aligned}

其中ϵ\epsilon是一个极小的浮点数,一般取典型值0.1,NN是训练样本数,CC是类别数。另外,采用FGM对抗训练[7],即

p^k(i)=p(yx+radv,θ)radv=arg maxr,r2ϵp(yx+r,θ)=ϵg/g2g=xL(x,y,θ)\begin{aligned} \hat{p}^{(i)}_k &= p(y | x + r_{adv}, \theta) \\ r_{adv} &= \argmax_{r, ||r||_2 \le \epsilon} p(y | x + r, \theta) \\ &= \epsilon \cdot g/||g||_2 \\ g &= \nabla_x L(x, y, \theta) \end{aligned}

训练参数汇总如下

参数 最大文本长度 最大片段长度 长度嵌入维度 优化器 学习率调整策略 初始学习率 权重衰减 迭代周期 warmup步数 批次大小 梯度累积 对抗参数 标签平滑
/ 512 40 128 AdamW Linear 5e-5/1e-3 0.01 8 10% 8 2 1.0 0.1

模型集成

由于提交文件大小限制(2G),本次比赛在模型集成方面没有做过多尝试,仅对5折模型输出简单平均进行集成。具体地,NN条测试样本经KK折模型计算得到的logits输出zk,k=1,,Kz_k, k = 1, \cdots, K,张量维度为K×N×M×CK \times N \times M \times C,其中MM是枚举片段数、CC是类别数目。对KK折输出取平均后得到集成后的logits,N×M×CN \times M \times C,每个片段取logits最大元素对应的类别作为预测类别。

后处理

由于深度模型缺少良好的可解释性,在不进行限制的情况下,输出结果可能不能完全满足预期。此时需要做的是对输出结果进行分析,针对bad case设计相应解决方案。

引用一位博主机智的叉烧总结的bad case总结:

本次比赛对提升效果帮助较大的是设计后处理规则,矫正模型输出,可分为实体过滤实体合并两种。
实体过滤是指滤除满足以下条件的实体:

  1. 包含[",", "。", "、", ",", "."]等特殊字符,这类输出可能存在跨句、跨实体问题(指提取的片段包含多个实体,如张三、李四);
  2. 长度过长,这类输出主要是跨实体问题,针对不同类型的实体可以设置不同的长度阈值;
  3. 同类型实体片段重叠,如张三法外狂徒张三,两种解决方法:
    • 设置长度优先级,优先保留长的(或短的)实体,针对不同类型的实体可以设置不同的长度优先级;
    • 根据分类置信度,保留置信度更高的实体。
  4. 实体过滤
    • 时间地址:这两类实体,

实体合并是指将相邻的、不同类型的实体片段进行合并,用合并后的实体片段代替其中一个。由数据分析一节可知,数据标注中存在大量实体重叠,且规律性较强,如受害人与被盗货币、被盗物品、地点,如例句...被告人黄某某在嵊州市剡溪小学斜对面的花木田,扳开坐垫后,窃得戚某某电动自行车上的电瓶4只...中,被盗物品被标注为戚某某电动自行车上的电瓶,而模型可能输出戚某某(受害人)、电动自行车上的电瓶(被盗物品),这时需要将两个实体片段合并作为被盗物品。

最终对各类实体进行的后处理规则如下:

  1. 时间、地址
    • 删除包含特殊字符的实体;
    • 当同类实体重叠时,保留较长的实体;
  2. 被盗物品:
    • 删除包含特殊字符的实体;
    • 当同类实体重叠时,保留较短的实体;
    • 当被盗物品前出现受害人时,将两者合并;
  3. 被盗货币
    • 删除包含特殊字符的实体;
    • 当同类实体重叠时,保留较长的实体;
  4. 受害人、犯罪嫌疑人
    • 删除包含特殊字符的实体;
    • 删除长度大于10的实体片段;

消融对比

版本号 预训练权重 最大片段长度 初始学习率
(bert/span)
迭代周期 批次大小
(xn表示梯度累积)
损失函数 数据增强 R-Drop FGM EMA 后处理 置信度
阈值
Recall
(Local CV)
Precision
(Local CV)
F1-Micro
(Local CV)
Recall
(Online)
Precision
(Online)
F1-Micro
(Online)
baseline hfl/chinese-roberta-wwm 50 2e-5/1e-4 8 12x2 ce / / / / / 0.9188 0.9142 0.9165 0.8143 0.7743 0.7938
baseline hfl/chinese-roberta-wwm 50 2e-5/1e-4 8 12x2 ce / / / / v1 / / / 0.7988 0.817 0.8078
rdrop0.1-fgm1.0 hfl/chinese-roberta-wwm 40 5e-5/1e-3 4 8x2 ce / 0.1 1.0 / v1 0.8901 0.8833 0.8901 0.8962 0.7404 0.8109
nezha-rdrop0.1-fgm1.0 nezha-cn-base 40 5e-5/1e-3 4 8x2 ce / 0.1 1.0 / v1 0.8917 0.8898 0.8907 0.8977 0.7455 0.8146
nezha-fgm1.0 nezha-cn-base 40 5e-5/1e-3 4 8x2 ce / / 1.0 / v1 0.8906 0.8903 0.89 0.897 0.7459 0.8145
nezha-fgm1.0 nezha-cn-base 40 5e-5/1e-3 4 8x2 ce / / 1.0 / v2 / / / 0.8998 0.7482 0.8171
nezha-rdrop0.1-fgm1.0-focalg2.0a0.25 nezha-cn-base 40 5e-5/1e-3 4 8x2 facal / 0.1 1.0 / v2 0.8725 0.8764 0.8745 / / /
nezha-rdrop0.1-fgm1.0-aug_ctx0.15 nezha-cn-base 40 5e-5/1e-3 4 8x2 ce context-aware 0.1 1.0 / v2 0.8851 0.8898 0.8945 0.895 0.7513 0.8169
nezha-fgm1.0-lsr0.1 nezha-cn-base 40 5e-5/1e-3 8 8x2 lsr / / 1.0 / v2 0.8867 0.8929 0.8993 0.9006 0.7558 0.8219
nezha-legal-fgm1.0-lsr0.1 nezha-legal-cn-base-wwm 40 5e-5/1e-3 8 8x2 lsr / / 1.0 / v2 0.8946 0.9033 0.8989 0.9066 0.7604 0.8271
nezha-legal-fgm1.0-lsr0.1 nezha-legal-cn-base-wwm 40 5e-5/1e-3 8 8x2 lsr / / 1.0 / v3 / / / 0.9059 0.7625 0.828
nezha-legal-fgm1.0-lsr0.1 nezha-legal-cn-base-wwm 40 5e-5/1e-3 8 8x2 lsr / / 1.0 / v4 / / / 0.9023 0.7594 0.8247
nezha-legal-fgm1.0-lsr0.1 nezha-legal-cn-base-wwm 40 5e-5/1e-3 8 8x2 lsr / / 1.0 / v3 0.3 / / / 0.8988 0.7586 0.8228
nezha-legal-fgm1.0-lsr0.1-ema3 nezha-legal-cn-base-wwm 40 5e-5/1e-3 8 8x2 lsr / / 1.0 Y v3 nan nan nan 0.9054 0.761 0.8269
nezha-legal-fgm2.0-lsr0.1 nezha-legal-cn-base-wwm 40 5e-5/1e-3 8 8x2 lsr / / 2.0 / v3 0.8917 0.9047 0.8981 0.9049 0.7619 0.8273
nezha-legal-100k-fgm1.0-lsr0.1 nezha-legal-cn-base-wwm 40 5e-5/1e-3 8 8x2 lsr / / 1.0 / v3 nan nan nan 0.9034 0.7623 0.8269

注:

  1. 后处理各版本在前一版本基础上增加新规则,详细查看后处理
    • v1:重叠的时间、地点实体片段保留长的,重叠的被盗物品实体片段保留短的、滤除长度超过10的受害人、犯罪嫌疑人实体片段,等;
    • v2:新增受害人、被盗物品实体片段合并;
    • v3:新增重叠的被盗货币实体片段保留长的;
    • v4:新增地点、被盗物品实体片段组合;
  2. /表示实验数据与上组一致,nan 表示实验数据缺失

大赛结果

A榜(第二阶段)结果:
a

B榜(第三阶段)结果:
b

不足与展望

  1. 未能找到一种有效的数据增强方式;
  2. 由于实体长度是偏态分布的,是否可设计一定方法使其趋于正态分布,再从长度嵌入矩阵获取相应嵌入表征;
  3. 基于片段枚举的方法会产生大量的负样本,是否能添加二分类器判断文本片段是否为实体。具体地,训练阶段损失计算分为定位损失和类别损失,定位损失通过二分类器计算得到,类别损失对实体片段进行多分类计算得到,在预测阶段优先判断是否为实体再进行解码。(已尝试,效果不佳);
  4. 未对数据进行清洗,减少错误标注;
  5. 由于时间关系,在数据调参方面没有做太多实验。

引用

[1] 2021年中国法律智能技术评测 - cail.cipsc.org.cn
[2] china-ai-law-challenge/CAIL2021 - github.com
[3] Wei J , Ren X , Li X , et al. NEZHA: Neural Contextualized Representation for Chinese Language Understanding[J]. 2019.
[4] Wadden D , Wennberg U , Luan Y , et al. Entity, Relation, and Event Extraction with Contextualized Span Representations[J]. 2019.
[5] Zhong Z , Chen D . A Frustratingly Easy Approach for Joint Entity and Relation Extraction[J]. 2020.
[6] Gururangan S , A Marasović, Swayamdipta S , et al. Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks[J]. 2020.
[7] Miyato T , Dai A M , Goodfellow I . Adversarial Training Methods for Semi-Supervised Text Classification[C]// International Conference on Learning Representations. 2016.

附录