专栏首页深度学习自然语言处理【比赛】CCL“中国法研杯”相似案例匹配评测竞赛 - TOP队伍攻略分享

【比赛】CCL“中国法研杯”相似案例匹配评测竞赛 - TOP队伍攻略分享

上周末参加了在云南昆明举办的“第十八届中国计算语言学大会”(The Eighteenth China National Conference on Computational Linguistics, CCL 2019)。CCL作为国内最好的NLP会议之一,笔者收获满满,感触颇深。于是写下这篇文章,和大家分享之所见所闻。

中国计算语言学大会作为国内自然语言处理领域权威性最高、规模和影响最大的学术会,聚焦于中国境内各类语言的智能计算和信息处理,为研讨和传播计算语言学最新学术和技术成果提供了最广泛的高层次交流平台。

笔者主要参加了CCL会议中的评测研讨会,我们队伍(何从庆朱翔宇(DOTA)乐雨泉)在CCL“中国法研杯”相似案例匹配评测竞赛取得了三等奖。

作者:何从庆、朱翔宇(DOTA)、乐雨泉

来自:AI算法之心(关注后,后台回复CAIL2019即可获得比赛数据)

知乎链接:

https://zhuanlan.zhihu.com/p/88207736

代码链接:

https://github.com/hecongqing/CAIL2019

比赛简介

CCL“中国法研杯”相似案例匹配评测竞赛主要是针对多篇法律文本进行相似度的计算和判断。具体地,对于每份文书提供文本的标题以及事实描述,需要从两篇候选集文书中找到与询问文书更为相似的一篇文书

一般地,三元组相似任务:三元组相似任务是输入一个三元组<a, p ,n >,a表示anchor sample;p表示positive sample,与a是同一类样本;n表示negative sample,与a是不同类别的样本。代表网络有Triplet Network

二元组相似任务:二元组相似任务是输入一个二元组<X,Y>,判断X与Y是否为同一类样本。代表网络有Siamese network,ESIM,InferSent

数据集介绍

本任务使用的数据集是来自“中国裁判文书网”公开的法律文本,其中每份数据由三篇法律文本组成。数据总共涉及一万组文书三元对,所有的文书三元组对都一定属于民间借贷案由。对于每篇法律文本,提供该文书的事实描述部分。具体地,文件的每一行对应一组数据,且每行的格式都为一个json数据。

对于每份数据,用(A,B,C)来代表改组数据,其中(A,B,C)均对应某一篇文书。在训练数据中,文书数据A与B的相似度是大于A与C的相似度,即sim(A,B)>sim(A,C)

任务转化

很明显,这是一个三元组相似任务,即A表示anchor sample, B表示positive sampleC表示negative sample。因此直接可以使用Triplet Network的结构去尝试。但是,在任务中,训练集仅有5000样本,训练集很少;同时,句子长度很长。因此,我们将其转化为二元组相似任务。即假设sim(A,B)>sim(A,C),A与B相似度的标签为1,A与C相似度的标签为0。

难点痛点

1) 法律文本本身在一定程度上具有结构相似性,且事实描述部分存在很多通用词语,如何对法律文本进行预处理是非常重要,这里我没有详细说明如何对法律文本进行预测。

2) 法律文本长度很长,使得任务变得更难处理。机器很难解析一篇很长的事实描述语义表征也是很复杂。这是法律文本不同于传统的NLP任务之一。

模型方案

本次比赛,各个队伍大放光彩,使用的方法也是各有千秋。常用的优化方法主要分为以下几种方法:

一种是在encoder部分对于案件文档进行编码优化,如BERT,CNN,attention等,前几名基本都是使用了这几种方法。还有的是,对于案件之间的交互进行优化,如对pair案件计算余弦相似度(Ref [1]);计算句子之间的向量差,点集等(Ref [2])。

还有的是对损失函数进行优化,如使用triplet loss,margin loss等。同时,还有队伍针对三元组相似问题,进行数据增强。由于训练集sim(A,B)>sim(A,C),即(A,B,C)=1,可以这样数据增强,如(C,C,A)=0,(B,A,C)=0等,这样变换进行数据增强。最有创新的当属于第一名,他们采用了要素提取方法,由于案件均为民间借贷,引入民间借贷纠纷中重要的法律构成要件信息,帮助模型判断。

二元组相似任务现有的方案很多,如Siamese network,ESIM,InferSent。我们队伍主要结合最新的BERT模型来改进encoder部分,然后用Siamese network以及InferSent来计算向量的相似度

1) Siamese network

简单来说,Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的。如下图所示,通过两层的双向LSTM作为encoder,左右两边的encoder通过共享权值,然后通过余弦相似度衡量两个Sentence的相似情况

在本次任务中,训练集较少,很难训练出一个泛化能力强的模型,那么是否可以结合BERT、XLNET等网络作为encoder,来fine tune网络呢?因此我们尝试了BERT作为encoder,然后余弦相似度计算相似性。线上分数可以达到63.93左右的acc。效果不是很理想,我们觉得法律文本很长,且存在着很多通用相似词语,直接通过余弦相似度计算是否相似,并不是很有效的评估两篇文书的相似度。

2) InferSent

Facebook提出了一种InferSent相似度模型,论文中通过不同的encoder得到句子的表征,然后通过两个句子的向量差值,以及两个向量点乘,得到交互向量,最后区分两者的不同。同样地,这里我们也使用BERT作为encoder,然后通过pooling,然后计算Sent A和Sent B的|u-v|以及u*v,得到两者的交互向量,线上分数可以达到64.5左右的acc。这个比计算余弦相似度的效果好,这说明长度文本利用InferSent模型可以更好的计算两者的向量相似程度

这里和Digsci比赛的思路也是比较相似,大家也可以看看这篇文章:

DigSci科学数据挖掘大赛-亚军方案分享

https://zhuanlan.zhihu.com/p/88257675

3) 原始BERT模型

原始的BERT模型同样可以解决相似度匹配任务,同样地,我们在原始的BERT模型上也可以取得不错的成绩。这里就不详细说了。

最后,我们用几个模型做加权融合,然后取得了线上第七的成绩。由于时间工作原因,没有更深度的挖掘法律案情的细节信息。

写在最后

法律领域作为NLP应用最为成功的领域之一,已在学术上和工业上产生了非常巨大的影响。近年来,也有不少paper和工业产品落地实施。这些paper抑或产品均旨在通过AI技术来解决法官判案难、群众查案难等问题。

笔者研究法律智能领域已经两年多了,法律领域不仅仅是简单的NLP问题,比如之前提到的,法律文本本身在一定程度上具有结构相似性,如何挖掘法律文本结构等。其实可以结合法律文本本身的性质来理解,或许能更好的解决法律领域的相关问题。

参考文献

[1] Learning Text Similarity with Siamese Recurrent Networks

[2] Supervised learning of universal sentence representations from natural language inference data

[3] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

本文分享自微信公众号 - 深度学习自然语言处理(zenRRan)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学界 | NLP年度盛宴EMNLP/CoNLL 2018最精彩论文精选(摘要+评论)

    每年,全球最顶尖的NLP研究者们会在这两个大会上展示最前沿的NLP科研成果。然而,动辄上千篇的论文却令很多关注NLP领域最新动态的小伙伴望而却步。

    zenRRan
  • 如何到top5%?NLP文本分类和情感分析竞赛总结

    笔者主要方向是KBQA,深深体会到竞赛是学习一个新领域最好的方式,这些比赛总的来说都属于文本分类领域,因此最近打算一起总结一下。

    zenRRan
  • 在茫茫决策树入门帖里,我强推这篇(附可视化图)

    决策树是我最喜欢的模型之一,它们非常简单但是很强大。事实上,Kaggle中大多数表现优秀的项目都是XGBoost和一些非常绝妙的特征工程的结合,XGBoost是...

    zenRRan
  • 什么是文本挖掘?大数据该挖掘什么?

    什么是文本挖掘 文本挖掘是一门交叉性学科,涉及数据挖掘、机器学习、模式识别、人工智能、统计学、计算机语言学、计算机网络技术、信息学等多个领域。文本挖掘就是...

    机器学习AI算法工程
  • 【数据挖掘】用文本挖掘和机器学习洞悉数据

    文本挖掘是对包含于自然语言文本中数据的分析。它可以帮组一个组织从基于文本的内容中获得潜在的有价值的业务洞察力,比如Word文档,邮件和社交媒体流中发布的帖子,如...

    陆勤_数据人网
  • C++ STL学习之容器set和multiset (补充材料)

    一、set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 ? 需要包含头文件:...

    Angel_Kitty
  • 干货|十分钟快速get蚁群算法(附代码)

    之前分享了TSP的动态规划解法,本期来介绍它的另一种解法——蚁群算法。 什么?不知道?次元壁?高大上? 小编接下来这套 素质三连 攻略三连...

    用户1621951
  • 干货 | 十分钟快速搞懂什么是蚁群算法(Ant Colony Algorithm, ACA)(附代码)

         小编接下来这套 素质三连 攻略三连 会帮你十分钟快速搞定蚁群算法是什么、怎么用、注意啥,从零开始突破次元壁!!!

    短短的路走走停停
  • 关于NLP和机器学习之文本处理

    https://github.com/kavgan/nlp-text-mining-working-examples/tree/master/text-pre-...

    数据派THU
  • 1010 过河卒

    1010 过河卒 2002年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果...

    attack

扫码关注云+社区

领取腾讯云代金券