点击上方,选择星标置顶,每天给你送干货

阅读大概需要9分钟

跟随小博主,每天进步一丢丢

上周末参加了在云南昆明举办的“第十八届中国计算语言学大会”(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


方便交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐阅读:

【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文

【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency  Parsing

【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译

【一分钟论文】Semi-supervised Sequence Learning半监督序列学习

【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing

详解Transition-based Dependency parser基于转移的依存句法解析器

经验 | 初入NLP领域的一些小建议

学术 | 如何写一篇合格的NLP论文

干货 | 那些高产的学者都是怎样工作的?

一个简单有效的联合模型

近年来NLP在法律领域的相关研究工作


让更多的人知道你“在看”

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

  1. 第三届“中国法研杯”司法人工智能挑赛(CAIL2020)即将启动

    中国法研杯 聚焦人工智能技术在司法领域的应用,中国电科X+AI系列挑战赛之"中国法研杯"司法人工智能挑战赛(CAIL2020)将于2020年5月15日放注册报名.本次技术竞赛面向全 ...

  2. 活动报名 | 第三届中国法研杯司法人工智能挑战赛颁奖会日程出炉

    官网:http://cail.cipsc.org.cn/ 法律智能研究旨在赋予机器理解法律文本的能力.近些年来,随着以裁判文书为代表的司法大数据不断公开,以及自然语言处理技术的不断突破,如何将人工智能 ...

  3. 【论文阅读】2021中国法研杯司法考试数据集研究(CAIL2021)

    英文标题:JEC-QA: A Legal-Domain Question Answering Dataset 中文标题:法律领域问答数据集 论文下载:arxiv@1911.12011 项目地址:Git ...

  4. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略

    Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介.案例应用(python中的编码格式及常见编码问题详解)之详细攻略 目录 符串编码(ASCII编码/GB ...

  5. Auto CAD:CAD绘图设计以项目为导向,实战案例中图层、图块运用技巧经验总结之详细攻略

    Auto CAD:CAD绘图设计以项目为导向,实战案例中图层.图块运用技巧经验总结之详细攻略 目录 CAD绘图设计以项目为导向,实战案例中图层运用技巧经验总结

  6. DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的简介、原理、案例应用(相关配图)之详细攻略

    DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的简介.原理.案例应用(相关配图)之详细攻略 目录 Perceptron的简介.原理 多层感知机 实现代码 案例 ...

  7. Python之pandas:对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略

    Python之pandas:对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 目录 对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 知识点学习 输 ...

  8. Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略 目录 sklearn.preprocessing中的Stand ...

  9. Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略 目录 sklearn中的train_test_split函数的简介 train_tes ...

  10. Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略 目录 sklearn中的RobustScaler 函数的简介及使用方法 sklearn中的R ...

最新文章

  1. 32 多线程同步值Semaphore(信号量)
  2. 【转载】计算机视觉~VGG网络
  3. 为对象分配内存TLAB
  4. .NET Core Community 首个千星项目诞生:CAP
  5. G List it all
  6. 将Gatling集成到Gradle构建中–了解SourceSet和配置
  7. c++ queue学习
  8. Oracle之自治事务
  9. Bootstrap3 滚动监听的使用方法
  10. 软考中级信息安全工程师开编
  11. 联想高校AI精英挑战赛中大收官,“人工智能眼科机器人”获全国总决赛最后入场券
  12. Mac Crack路欧词典(所有版本)
  13. rest framework 权限
  14. 全国计算机软考中级试题,计算机软考中级(网络工程师)历年真题汇总
  15. 「面向对象程序设计-C++」学习笔记(下半部分)
  16. [iOS]判断ipa是否脱壳
  17. 哪些浏览器支持html5?
  18. 两个和尚的故事【摘】
  19. 朋友圈里这3种人,一定要远离
  20. Postman安装流程自用

热门文章

  1. AndroidTv开发中常用的adb命令
  2. 常见网络命令之traceroute命令一起其他常用命令
  3. 读后感——《构建之法》第1.2.3章
  4. Asp.net页面之间传递参数的几种方法荟萃
  5. sql server 2005 使用Log Explorer查看和恢复数据
  6. 中国大数据市场规模分析及预测
  7. Visual Studio 编辑R语言环境搭建
  8. linux回到上次目录与历史命令查找快捷方式
  9. Google推荐的15条军规:HTML5代码规范
  10. ASP.NET加密解密