【比賽】CCL「中國法研杯」相似案例匹配評測競賽 – TOP隊伍攻略分享
- 2019 年 11 月 1 日
- 筆記

上周末參加了在雲南昆明舉辦的「第十八屆中國計算語言學大會」(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 sample,C表示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