田杰文,楊 亮,張 琍,毛國慶,林鴻飛
1.大連海洋大學 信息工程學院,遼寧 大連 116023
2.大連理工大學 遼寧 大連 116024
3.北京計算機技術(shù)及應用研究所,北京 100854
4.北京國雙科技有限公司,北京 100083
在過去的幾年里,司法領(lǐng)域所產(chǎn)生的數(shù)據(jù)量增長迅速。自然語言處理是一個成熟的人工智能的子領(lǐng)域,其中利用人工智能進行法律判決預測[1-2]在司法領(lǐng)域的應用逐漸變得成熟,法律判決預測任務是計算機在閱讀案件的事實描述之后進行預測該法律案件的判決結(jié)果的過程,這一過程包括罪名預測、刑期預測、罰金預測等。利用人工智能進行法律判決預測一方面可以以更廉價方式為不熟悉法律的人提供更簡單高效的獲取高質(zhì)量法律資源的途徑,另一方面也可以為法律從業(yè)者提供一定程度的法律參考有助于提高其工作效率以及減少因人為因素而帶來的不必要的麻煩。從另一個角度來看,充分利用人工智能進行法律判決預測也有利于提升司法部門的工作效率,還能響應號召進一步推動司法系統(tǒng)的公平公正公開透明。
中國大陸是大陸法系的實行地區(qū),法院只利用案件的事件陳述和成文法進行法律判決,而不會參考判例的判決,法官會根據(jù)案件所涉及的相關(guān)法律條款以及該案件的事實陳述,結(jié)合現(xiàn)實具體情況綜合考量做出最終判決。
現(xiàn)有大多數(shù)的工作都是試圖將法律判決任務形式化為文本分類任務,這些工作一般采用現(xiàn)成的分類模型[3-5]從文本中提取淺層特征[6-7],或?qū)咐龤w檔[8],或通過手工注釋案例和設(shè)計具體特征來獲得對案例描述的更深層次的語義理解[9],或者采用機器學習和自然語言處理的神經(jīng)網(wǎng)絡(luò)方法,可以更好地對法律文本進行分析處理[10-12]。
本文旨在通過引入適當?shù)臋C制,利用神經(jīng)網(wǎng)絡(luò)模型將刑事案件的文本事實描述與法律條款相結(jié)合來解決罪名預測問題,為了更好地理解法律文書和更具體的表述,綜合分析了相關(guān)的法律條款和裁判文書,總結(jié)形成了分類模型,然后利用現(xiàn)有的神經(jīng)網(wǎng)絡(luò)模型結(jié)合自監(jiān)督學習方法學習文本特征,再將句子級特征合并為案例級特征后,通過神經(jīng)網(wǎng)絡(luò)模型來解決罪名預測問題。在實驗中,采用2018“中國法研杯”司法人工智能挑戰(zhàn)賽構(gòu)建的數(shù)據(jù)集[13]。實驗結(jié)果表明,本文的方法和模型與對比模型相比能夠有效地從數(shù)據(jù)文本中提取到特征,最大程度上確保預測的準確率,在2018“中國法研杯”司法人工智能挑戰(zhàn)賽構(gòu)建的數(shù)據(jù)集上精度達到了88.1%。
為了減少人工和提高相關(guān)的工作效率,人工智能與法律領(lǐng)域的聯(lián)系越來越緊密,法律判決預測的相關(guān)研究越來越受人關(guān)注。在早期研究中傾向使用統(tǒng)計學模型進行預測,Kort等[14]利用數(shù)學和統(tǒng)計學模型分析大量的歷史案例來預測美國聯(lián)邦最高法院的最終判決。Ulmer等[15]使用基于規(guī)則的方法分析法律文本數(shù)據(jù)來幫助法官對事實證據(jù)進行分析。Keown等[16]利用數(shù)學模型分析特定情況下的現(xiàn)有法律案件進行預測。然而這些方法都被限制在很少標簽的小數(shù)據(jù)集下。后來,隨著計算機算力的提高,一些基于機器學習[6,9]的方法被提出,他們都是將一些手工設(shè)計的特征與線性分類器相結(jié)合,用來提高模型的性能。這樣做的缺點就是這些方法嚴重依賴手工設(shè)計的特征,使得設(shè)計出的模型不能更好地解決其他問題。
近年來,隨著神經(jīng)網(wǎng)絡(luò)的應用越來越廣泛,研究人員更傾向于使用神經(jīng)網(wǎng)絡(luò)來解決法律相關(guān)問題。Luo等[11]提出了一個分層注意力網(wǎng)絡(luò)來識別處理事實描述與相關(guān)法律條款之間的關(guān)系來提高預測性能。Zhong等[12]將法律判決預測任務的子任務的依賴關(guān)系形式化為一個有向無環(huán)圖來建模,從而提出了一個基于神經(jīng)網(wǎng)絡(luò)的多任務學習框架,用于有效地共同解決這些子任務。Hu等[10]人工定義了10個判別屬性,并通過模型學習這些屬性來對易混淆的罪名進行分類。Long等[17]利用閱讀理解對判決流程進行法律判決預測。Wu等[18]利用自監(jiān)督學習的方法解決對話系統(tǒng)中的問題。
上述基于統(tǒng)計學模型和機器學習的方法,都需要花費大量的數(shù)據(jù)和人工來保證對判決預測的準確性,再加上有的模型需要利用人工設(shè)計特征提取,模型在泛化問題上存在嚴重不足?;谏疃葘W習的方法使用神經(jīng)網(wǎng)絡(luò)來解決法律判決預測問題才是當下研究的熱點。但是訓練時長增長,亦或是因使用自監(jiān)督學習而產(chǎn)生大量的參數(shù),而導致所需的硬件代價過大以及模型預測的準確率低,是當前利用深度學習進行預測無法繞開的問題。本文設(shè)計提出了結(jié)合ALBERT和TextCNN的罪名預測模型ALBT,利用輕量級BERT進行預訓練能夠大幅減少訓練時長,并且確保能夠提取到足夠的語義表示,然后通過拼接結(jié)構(gòu)簡單的TextCNN模型進行分類預測,在保證分類準確性的前提下進一步節(jié)省時間,大幅減少訓練時長。實驗結(jié)果表明模型能夠高水平地完成罪名預測任務。
BERT[19]全稱為Bidirectional Encoder Representation from Transformers,Devlin等2018年于Google提出的預訓練模型,其結(jié)構(gòu)圖如圖1所示,BERT模型使用雙向Transformer編碼器進行文本處理,利用大規(guī)模無標注的語料訓練來獲得文本中包含的豐富的語義表示。BERT主要包含了2個預訓練任務,第一個是Masked LM即給定一句話,隨機抹去這句話中的一個或幾個詞,要求根據(jù)剩余詞或句來預測被抹去的詞是什么。第二個就是下一句話預測(next sentence prediction,NSP),即給定一篇文章中的兩句話,判斷第二句話在文本中是否緊跟在第一句話之后。BERT的核心的模塊是Transformer編碼器,Transformer模型為Encoder-Decoder[20-21]結(jié)構(gòu),而ALBERT只使用其中的Encoder結(jié)構(gòu)作為特征提取器,具體結(jié)構(gòu)如圖2所示。Encoder包括自注意力機制(self-attention)用于探索發(fā)現(xiàn)上下文中詞語之間的關(guān)系和前饋神經(jīng)網(wǎng)絡(luò)(feed forward neural network)兩部分組成。并且每層之間都加入了一個求和歸一化層(Add&Norm),用來把本層的輸入和輸出相加然后歸一化處理[22]。最后再把兩層網(wǎng)絡(luò)進行殘差連接[23]。
圖1 BERT模型結(jié)構(gòu)Fig.1 BERT model structure
圖2 Transformer Encoder結(jié)構(gòu)Fig.2 Transformer Encoder structure
由于BERT模型使用了12層Transformer編碼器,從而產(chǎn)生了數(shù)以億計的參數(shù),使訓練速度變慢,然而一味地堆疊參數(shù)并不能使模型性能變得更加優(yōu)越,甚至可能導致模型性能的下降。Lan等[24]基于BERT提出ALBERT對BERT加以改進用以精簡由于使用多層Transformer編碼器而產(chǎn)生的大量的參數(shù)量,并且能夠適當提升模型的性能。
Kim等[25]提出了TextCNN,使用卷積神經(jīng)網(wǎng)絡(luò)來進行文本分類的模型,模型為了能夠更好地捕捉文本中局部的相關(guān)性,使用了多個大小不同的卷積核來提取句子中的關(guān)鍵信息。TextCNN模型結(jié)構(gòu)如圖3所示。
圖3 TextCNN模型結(jié)構(gòu)Fig.3 TextCNN model structure
模型的第一層嵌入層(embedding layer)首先接受由ALBERT訓練好的向量,預先訓練的詞嵌入可以利用其他語料庫得到更多的先驗知識,由預先訓練好的向量構(gòu)成一個由N×K的嵌入矩陣M,N代表句子的長度,K代表詞向量的長度。然后進入到模型的第二層卷積層(convolution layer)提取句子的特征,卷積核的大小為w∈Rhk,其中h代表卷積核的高度,k代表卷積核的寬度,卷積核只在高度上從上到下滑動進行卷積操作,在寬度上和詞向量的維度保持一致,最后得到的列為1,行為(n-k+1)的特征映射(feature mapping)如式(1)所示:
模型的第三層是一個1-max pooling層,最大池化層,即為從每個滑動窗口產(chǎn)生的特征向量中篩選出一個最大的特征,然后將這些特征拼接起來構(gòu)成向量表示。經(jīng)過這層之后不同長度的句子在經(jīng)過池化層之后都能變成定長表示。
經(jīng)池化操作后,獲得一維向量,再通過ReLU激活函數(shù)輸出,添加Dropout層,防止過擬合,經(jīng)過全連接層輸出并在全連接層添加正則化參數(shù)。最后全連接層的所有輸出值都連接到softmax層,最后輸出預測罪名的結(jié)果。
自監(jiān)督學習的卷積神經(jīng)網(wǎng)絡(luò)ALBT結(jié)構(gòu)如圖4所示,主要由輸入層、ALBERT層、TextCNN層、輸出層組成。
圖4 ALBT模型結(jié)構(gòu)Fig.4 ALBT model structure
將事實描述從輸入層輸入到ALBERT層中,經(jīng)過編碼后將文本數(shù)據(jù)處理成序列化數(shù)據(jù),再輸入到Transformer編碼器,經(jīng)過自監(jiān)督的多層雙向Transformer編碼器的訓練最終輸出文本的特征向量表示,之后進入到TextCNN層中,卷積層再提取特征表示,池化層防止過擬合,減少參數(shù),加速計算,最終經(jīng)過softmax分類器進行分類,完成罪名預測過程。
由于BERT的局限性,故ALBERT做出以下幾點改進:
參數(shù)因式分解(factorized embedding parameterization)也叫矩陣分解,本質(zhì)上是一個低秩分解的操作,通過對詞嵌入(embedding)部分的降維來達到減少參數(shù)的目的,經(jīng)過參數(shù)因式分解之后的時間復雜度變化如式(2)、(3)所示,其中V代表詞表大小,H代表隱藏層維度大小,E代表詞向量維度大小,當H?E時,模型的參數(shù)量可以大大減少。
跨層參數(shù)共享技術(shù)(cross-layer parameter sharing),顧名思義就是可以在不同的層之間共享參數(shù),可共享的分為全連接層、注意力層。通過跨層參數(shù)共享技術(shù)可將大量的參數(shù)減低到一個較低水平。
通過使用參數(shù)因式分解技術(shù)和跨層參數(shù)共享技術(shù)可以大大地減少模型所產(chǎn)生的參數(shù)量,加快模型的運算速度,減少硬件上的內(nèi)存開銷,加快模型的訓練速度。
句子間順序預測(sentence-order prediction,SOP),不同于BERT的下一句話預測(NSP),ALBERT使用句間順序預測,給定模型兩個句子,讓模型預測兩個句子的前后順序,相比原先的NSP、SOP技術(shù)更加復雜,能夠使模型學習到更多的上下文之間豐富的語義關(guān)系。
模型通過引入自監(jiān)督學習機制在和簡單的卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合構(gòu)成整體模型ALBT,并且經(jīng)過上述改進技術(shù),使得模型大大減少了自監(jiān)督學習過程中所產(chǎn)生的大量的參數(shù),大幅加快了模型的訓練速度,而且在經(jīng)過大量實驗之后發(fā)現(xiàn)上述改進能夠有效提高模型預測的準確率,這說明相關(guān)改進是十分必要的。
本文采用2018“中國法研杯”司法人工智能挑戰(zhàn)賽(CAIL2018)構(gòu)建的數(shù)據(jù)集CAIL2018-small,其中數(shù)據(jù)來自“中國裁判文書網(wǎng)(http://wenshu.court.gov.cn/)”公開的刑事法律文書,考慮到數(shù)據(jù)集中包含一些無事實描述的無用文書案例,在實驗中將無效數(shù)據(jù)剔除后,有訓練集數(shù)據(jù)154 177條、驗證集數(shù)據(jù)17 088條和測試數(shù)據(jù)32 433條,涉及202個罪名和183個法律條款。
為了檢驗實驗模型的預測能力,選擇了5種主流的對照模型與本文的模型進行預測效果對比,所涉及的模型包括基于RNN的網(wǎng)絡(luò)模型、基于CNN的網(wǎng)絡(luò)模型、基于注意力機制的網(wǎng)絡(luò)模型、基于拓撲的多任務學習框架模型。具體分別是:
(1)BiLSTM[26]:使用雙向的LSTM來獲取上下文的信息,最后用全連接層和sigmod激活函數(shù)作為輸出層。
(2)CNN[27]:使用多卷積核的CNN作為案情描述的編碼器,使用最大池化層對卷積后的特征進行篩選。
(3)DPCNN[28]:提出一個深層金字塔卷積網(wǎng),是第一個廣泛有效的深層文本分類卷積神經(jīng)網(wǎng)絡(luò)。
(4)Fact-Law[29]:利用SVM分類器從案情描述文本中抽取法條特征,將法條信息融入基于注意力機制的神經(jīng)網(wǎng)絡(luò)模型。
(5)TopJudge[11]:將子任務之間的依賴視為有向無環(huán)圖,并提出一個拓撲的多任務學習框架,該框架將多任務學習和有向無環(huán)圖依賴融入到判決預測中。
根據(jù)對所使用的數(shù)據(jù)集中所涉及罪名的統(tǒng)計可以看出司法領(lǐng)域的實際數(shù)據(jù)分布不平衡,訓練數(shù)據(jù)中同一罪名的數(shù)據(jù)量相差太大,有一半的相同罪名的數(shù)據(jù)不足500條,同一罪名的數(shù)據(jù)最多的有8 000條以上,而最少的僅有12條。故本文采用微平均F值Fmicro、宏平均F值Fmacro作為模型的評價指標。計算公式如式(4)、(5)所示:
表1展示了基線模型和本文提出的模型在2018“中國法研杯”司法人工智能挑戰(zhàn)賽構(gòu)建的數(shù)據(jù)集CAIL2018-small上進行罪名預測的實驗結(jié)果。
表1 各模型的實驗結(jié)果對比Table 1 Comparison of experimental results of each model 單位:%
通過表1的對比實驗結(jié)果可以看出,本文提出的模型在相同數(shù)據(jù)集的情況下在罪名預測任務上的實驗結(jié)果要明顯優(yōu)于其他所有對比實驗模型。與對比實驗中最好的模型相比微平均和宏平均分值高出3.5和14.6個百分點。
模型通過引入自監(jiān)督學習的方法,并且對其加以優(yōu)化改進,在技術(shù)層面上利用參數(shù)因式分解和參數(shù)共享兩種技術(shù)相結(jié)合的方式,而后在原先NSP的基礎(chǔ)上通過改進,利用SOP技術(shù),盡可能多地學習到文本中的語義信息,在保證模型預測準確率的前提下大大減少了因自監(jiān)督學習所帶來的參數(shù)量暴增的問題。
但是由于法律條款的嚴謹性,相似的犯罪行為就會導致出現(xiàn)一些名稱相似的罪名,這些罪名的事實描述也十分相似,但是卻又存在著不同點,這導致模型可能無法正確地區(qū)分它們,所以模型在區(qū)分混淆罪名時表現(xiàn)不理想。
針對現(xiàn)有的罪名預測模型方法上,本文提出了ALBT模型來解決罪名預測問題,結(jié)合ALBERT和TextCNN模型進行罪名預測,用ALBERT模型進行模型預訓練來獲得更加豐富的上下文文本表示,利用ALBERT相比于基礎(chǔ)BERT來說參數(shù)量大大減少的優(yōu)勢,使模型更加輕量,訓練速度也更加快,再結(jié)合結(jié)構(gòu)簡單的卷積神經(jīng)網(wǎng)絡(luò)TextCNN模型進行罪名預測,從結(jié)果上看取得了不錯的效果,結(jié)果要優(yōu)于基線模型。
本文仍存在一些不足之處:對于一些易混淆罪名的分類效果不理想,比如“騙取貸款罪”與“貸款詐騙罪”,兩項罪名相同點都是實施了集資行為,但是不同點是前者具有非法占有目的,而后者不具有非法占有目的,如何能更加細粒度的從案件事實描述中提取出有效的信息來區(qū)分易混淆的罪名,目前模型在對這一問題的表現(xiàn)上欠佳,將來需要更加深入的研究和探索。