https://github.com/GuidoPaul/CAIL2019
GitHub开源项目地址:中国法研杯司法人工智能挑战赛,Chinese AI & Law Challenge(CAIL),简称法研杯,是司法科技行业的最高比赛,参与者涵盖了司法科技行业内几乎所有重要单位与组织,例如最高人民法院、司法大数据研究院、司法科技公司、NLP研究领域顶尖学者等。
法律科技旨在借助科技的力量来协助司法行业提升工作效率、减少不一致性、辅助法理研究等,助力深化司法体制改革,不断完善和发展国家司法制度。近些年来,随着以裁判文书为代表的司法大数据不断公开,以及自然语言处理技术的不断突破,如何将人工智能技术应用在司法领域,来提高司法人员在案件处理环节的效率逐渐成为法律科技研究的热点。
本赛题共有711个队伍报名参加,参与总人数有1003人。参赛的队伍包括南京擎盾、北京华宇元典等司法科技公司,京东、平安科技等大厂,以及同济大学、南京大学等高校。
1 赛题介绍
大赛共有三个赛道,蚂蚁金服(队伍名为AlphaCourt)参加了其中的法律文书“相似案例匹配”赛道。相似案例匹配赛题是针对多篇法律文书进行相似度的计算和判断。数据集是“中国裁判文书网”公开的民间借贷相关法律文书,每组数据由三篇法律文书组成。文书主要为案件的事实描述部分,选手需要从两篇候选集文书中找到与询问文书案件性质更为相似的一篇文书。
比赛分三个阶段。第一阶段训练数据有500组三元文书,用(A, B, C)表示一条数据中的三篇文书。每条数据中A与B的相似度大于A与C的相似度。第二阶段有5102组训练数据,第三阶段为封闭式评测阶段。每个阶段如果预测正确,那么该测试数据可以得到1分,否则是0分。每个阶段成绩为在该阶段的平均准确率。最终成绩计算方式: 第二阶段的成绩 * 0.3 + 第三阶段的成绩 * 0.7。
2 整体思路
2.1 思路框架
2.1.1 二分类模型思路
由于赛题明确地保证文书数据A与B的相似度是大于A与C的相似度,这里AlphaCourt团队做了一个简单的假设,可以把该赛题转化为一个绝对相似问题。假定文书数据A和文书数据B之间是符合绝对的相似,同时文书数据A和文书数据C之间是符合绝对的不相似,即原先的三元组数据拆分成两两文书数据之间是否绝对相似的问题,此时可以使用二分类模型来解决此类问题。将文书数据A和文书数据B的相似度标签标为1,文书数据A和文书数据C的相似度标签标为0。
对于二分类模型的特征,可以从结构化特征和文本特征两部分来分别考虑提取文书对应的特征。其中包括文书A、B、C的结构化特征、文本特征,以及两两之间(AB与AC)的求和、差值、余弦相似度等相关性的结构化特征。模型可以是Wide and Deep的深度网络模型结合结构化特征的二分类网络模型。
但实际上在第二阶段检查数据时发现,之前的绝对相似假设有一定问题。虽然数据(A,B,C)保证了文书数据A与B的相似度是大于A与C的相似度,但是另一条数据中会出现(A,D,B)的情况,当把这两条三元组样例同时拆分成两两对比相似的数据时,会发现产生数据的标签会产生冲突,即(A,B)的标签既有1,也有0。因此,AlphaCourt在第一阶段使用二分类模型思路后,重新考虑三元组的相对相似问题。
2.1.2 Rank 模型思路
AlphaCourt考虑采用Rank的模型来解决此类相对相似的问题,从两两文本之间的相似距离来评估两两文本之间相似度。对于Rank模型,他们主要从模型的损失函数和模型特征入手。他们选取损失函数Triplet Loss,提取的模型特征主要保留文书A、B、C的结构化特征、文本特征,其中结构化特征包括正则表达式提取的结构化特征和TF-IDF提取的文本词频统计特征。
2.2 损失函数
Triplet Loss[1]它本身是一个用来训练人脸识别模型的标准方法之一,能够通过精细调参得到不错的模型效果。Triplet Loss的输入是一个三元组形式,刻画的是两个候选元与询问元之间的距离差。在模型训练时,通过最小化triplet loss使询问文书A和两篇候选集文书中相似的文书B越来越相似,而和不相似的文书C越来越不相似。
具体来说,Triplet Loss输入的参数是一个三元组向量,包括anchor锚点向量,positive正样本向量和negative负样本向量,具体的计算公式如下。
其中是锚点与正样本之间的距离,是锚点与负样本之间的距离,是计算得到的损失值,通过margin加大类间距离,并且保证损失值是一个大于等于0的值。
对于距离度量可以有多种方式,包括两两之间L1范式距离、L2范式距离、L3范式距离、杰卡德距离和余弦距离等。通过实验发现L2范式距离计算得到的Triplet Loss对本赛题提供的数据集产生最佳的结果。具体的计算公式如下:
其中a是锚点通过模型生成的向量,b是正样本通过模型生成的向量,C是负样本通过模型生成的向量。
2.3 模型特征
2.3.1结构化特征
AlphaCourt提取的特征包括两类:一类为文本统计类特征,如各种文本长度特征与词频统计特征,另一类为业务理解抽象特征,例如:原告被告特征、担保特征、利息特征以及其他的有业务含义的特征。
长度特征里包括文书第一部分单词长度、第二部分单词长度、两部分单词长度比率、第一部分字长度、第二部分字长度和两部分字长度比率等。长度特征如下图所示。
词频统计类特征使用TF-IDF提取文本数据的词频统计特征。由于TF-IDF提取的词频统计特征会比较稀疏,可以通过奇异值分解SVD对词频统计特征进行降维处理。通过分别计算两两文本生成特征的差值可以得到词频统计特征的差值和SVD降维特征的差值。以上生成的四种特征向量都可以计算其对应的总和值、平均值、大于0的个数以及L1范式和L2范式等计算特征值。 最后是业务理解抽象特征。业务理解抽象特征是很适合法律文书的特征。因为法律文书有固定结构且用词严谨语义唯一,再加上案件打标也是服从了一套标准制度,所以会比较重要,这也是AlphaCourt和其他参赛队伍最大的区别点。在构建业务理解抽象特征时他们主要参考了合同法、担保法、婚姻法及相关司法解释,总结出了原告/被告是否是自然人、担保类型(一般、连带)、借款用途、出借意图、计息方式、约定借期利率、约定逾期利率、借款交付形式、还款交付形式、借款合意凭据等十个特征。最终根据可行性以及数据表现,选用了原告被告特征、担保特征、利息特征等特征。原告被告特征包括原告是否属于公司、原告人数、被告是否属于公司和被告人数。担保特征包括文书中是否包含担保人、担保人个数、文书中是否包含抵押物和抵押物的个数。利息特征包括文书中是否包含利息和对利息金额的转换。其他业务特征包括文书中被告间是否存在夫妻关系和被告的死亡情况。具体提取的结构化特征如下图所示。
2.3.2深度学习模型特征
常见的深度学习模型特征包括Bert[2]、Bi-LSTM、Bi-GRU以及Text-CNN。由于Bert模型在很多NLP任务中都表现出较好的性能,因此本赛题直接考虑以Bert模型作为Baseline模型效果,并在此基础上进一步探索更好的模型结果。
2.4 整体网络模型
整体的网络模型结构如下图所示:
其中需要注意的两点:第一点,各网络层之间的权重是共享的,包括Bert网络层和全联接网络层的权重。第二点,由于文书的长度过长,并且文书中重要的信息包括法律案件的事实描述、法院判决结果等都在文书的后半部分,因此AlphaCourt从文书的后半部分开始截取文书的内容作为Bert网络层输入的信息。3 优化Trick
3.1 深度学习模型优化及多模型融合
AlphaCourt尝试将Bert模型作为Baseline模型,对Bert模型进行进一步优化。
方案一
对Bert模型内部的网络层输出进行提取,通过提取最后二层或三层中每层的第一个状态输出向量,尝试与原先的Bert模型的输出进行拼接,可以得到一个更加全面的特征向量,如下图二、三所示:
方案二:
结合上文提到的结构化特征,包括正则表达式提取的结构化特征和TF-IDF提取文本数据的词频统计特征,与Bert模型的输出进行拼接,结合结构化特征的特征合理性得到更加优化的特征向量,如下图四所示:
方案三:
Bert模型的除了输出特征向量外还提供了模型的状态信息,该模型状态信息可连接更深层的网络模型,如Bi-LSTM和Bi-GRU网络模型。通过更深层的网络模型可以提取文本的更高维度特征。通过池化和提取隐藏层状态等操作聚合Bi-GRU网络层的输出特征和隐藏层状态的特征。
如下图所示:
通过以上构造的五种网络模型,进行多模型离线的多模型融合可以进一步提高相似匹配的准确率,如下图所示:
3.2 过拟合解决方案
由于样本按照三元组形式输入,即默认询问文书数据A与文书数据B的相似度大于询问文书数据A与文书数据C的相似度。此时在训练过程中可能会出现一种极端的情况,即模型结果无脑输出B,就会出现过拟合问题。
AlphaCourt使用的解决方案是部分修改文本数据B和文本数据C的顺序,使一半的数据变成(A,C,B)形式的三元组数据,即可以同时存在B和C的标签。具体的操作流程如下所示。
在构建训练和验证数据集Datasets时,在第奇数个三元组样本附带一个变量op,值为1。将第偶数个三元组样本的文书数据B和文书数据C进行交换,并附带一个变量op,值为-1。构建的数据集经过数据加载器DataLoader会默认将数据集进行打乱,因此不会学习到数据的标签规律。最后学习到特征向量经过Triplet Loss计算时,只要计算过程中附带了变量op,调整两者欧式距离的正负结果,就可以保证Triplet Loss的计算结果保持正确。
4 相似案例匹配可视化
司法AI领域中,由于涉及到法律的公正透明性,一般对结果的可解释性要求较高,虽然此次赛题未对可解释性做硬性要求,但AlphaCourt还是从实际使用的角度对模型的可解释性通过可视化的方法做了一定探索。第一点是高亮案例文本,它可以提高人工查看案例文本的效率,第二点是两两相似案例的关键词筛选显示,它可以给出两两案例相似的合理解释。
4.1 高亮案例文本
4.2 相似案例可视化
5 讨论与展望
数据处理方面,文中讨论了二分类的数据标签和三元组形式的距离度量标签,但比赛中还没有使用到标签增广的方案,仍有待优化。损失函数方面,Triplet Loss在三元组的相似匹配方案中起到很重要的作用,但仍可能存在更优的损失函数,如Margin-based Loss[3],或者更佳的距离度量方式。网络模型方面,比赛中没有尝试ESIM[4],它可关注到两两文本之间交互的信息,可以对相似匹配模型会有更近一步的优化。
参考文献
[1] Schroff F, Kalenichenko D, Philbin J. Facenet: A unified embedding for face recognition and clustering[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 815-823.
[2] Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
[3] Wu C Y, Manmatha R, Smola A J, et al. Sampling matters in deep embedding learning[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 2840-2848.
[4] Chen Q, Zhu X, Ling Z, et al. Enhanced lstm for natural language inference[J]. arXiv preprint arXiv:1609.06038, 2016.