王加偉,張 虎,譚紅葉,王元龍,趙紅燕,2,李 茹,3
(1. 山西大學 計算機與信息技術(shù)學院,山西 太原 030006;2. 太原科技大學 計算機科學與技術(shù)學院, 山西 太原 030024;3. 山西大學 計算智能與中文信息處理教育部重點實驗室,山西 太原 030006)
隨著人工智能技術(shù)在多個領域的成功應用,智慧司法也受到了相關(guān)領域研究者的廣泛關(guān)注。智慧司法的實現(xiàn),不僅能提升司法部門的工作效率,同時也能有效降低法律服務的門檻,這有利于促進司法公正公開透明。為了促進智慧司法的研究進展,推動自然語言處理技術(shù)在智能判決等實際問題上的應用,國內(nèi)舉辦了2018“中國法研杯”司法人工智能挑戰(zhàn)賽(CAIL2018)(http://cail.cipsc.org.cn/)。
罪名預測是智能判決的核心任務之一,目的是在給定犯罪事實的條件下自動預測犯罪主體觸犯的罪名。其中,犯罪事實是影響定罪量刑的最重要的客觀真實情況。主要包括犯罪的基本事實、犯罪情節(jié)、性質(zhì)和對社會的危害程度等要素;罪名是對犯罪特征的高度概括。包括盜竊、故意傷害、故意殺人等。
早期的罪名預測主張使用統(tǒng)計學方法,試圖分析大量歷史案例找出共性規(guī)律并使用統(tǒng)計學模型模擬判決流程。典型工作如Kort等[1]提出的量化分析法和Nagel等[2]提出的關(guān)聯(lián)分析法。此類方法僅在限定規(guī)模和特定領域的數(shù)據(jù)上有效,較難推廣到一般性案件中。現(xiàn)階段多基于文本分類框架構(gòu)建預測模型,即以大量歷史法律文書作為訓練文本,以罪名為類別標簽,訓練機器學習分類模型。代表性工作如Liu等[3]基于文書淺層文本特征的K近鄰算法分類預測模型、Luo等[4]和Hu等[5]基于深度神經(jīng)網(wǎng)絡的罪名分類模型等。此類方法在預測效果上取得了一定進步,但忽略了犯罪事實中詞語語義差異性的影響,且沒有解決數(shù)罪并罰情形下多標簽罪名預測問題。因此,本文嘗試從這兩方面改進以提升罪名預測的效果:
(1) 詞語語義差異性建模。犯罪事實中各詞語的語義重要性在不同罪名的判決中不同,下面通過“盜竊罪”和“搶劫罪”案例解釋這種差異性。
依據(jù)圖1中法條規(guī)定: “盜竊罪”與“搶劫罪”的犯罪目的均為“非法占有公私財物”。但“盜竊罪”的犯罪手段為“秘密竊取”,對應案例中的“不備之機、扒竊”等詞;而“搶劫罪”的犯罪手段為“使用暴力、脅迫或其他方法強行搶奪”,對應案例中的“言語威脅、劫得”等詞。因此,在這兩種罪名區(qū)分中,用于描述犯罪手段的詞語起主要作用,而用于描述犯罪目的的詞語起次要作用。而在侵財類罪名與非侵財類罪名的區(qū)分中,犯罪目的詞則起到關(guān)鍵作用,如“盜竊罪”與“故意傷害罪”的區(qū)分等。注意力機制可在文本建模過程依據(jù)詞語語義的重要程度自動賦予相應的權(quán)重,從而使得整體語義的表達更為準確。因此,本文使用注意力機制實現(xiàn)犯罪事實的差異性語義建模。
圖1 “盜竊罪”與“搶劫罪”案例對比
(2) 數(shù)罪并罰預測。犯罪主體在實施犯罪行為的過程中可能會觸犯多種罪行,如搶劫與故意殺人、貪污與受賄等。數(shù)據(jù)統(tǒng)計發(fā)現(xiàn),數(shù)罪并罰案件約占全部的9.1%,因此在罪名預測中須考慮到數(shù)罪并罰情形。下面給出數(shù)罪并罰案例,如圖2所示。
圖2 數(shù)罪并罰犯罪事實
該案件中被告人實施了兩類犯罪行為(酒后駕駛和毆打他人),同時觸犯了“危險駕駛罪”與“故意傷害罪”的法條規(guī)定,且罪名之間不存在交集。故而,其屬于數(shù)罪并罰案件。由于本文是基于文本分類框架構(gòu)建罪名預測模型,則數(shù)罪并罰預測可轉(zhuǎn)換文本分類中的多標簽分類問題。而數(shù)罪并罰中的各罪名相對較為獨立,因此,我們便使用分解策略將多標簽罪名分解為多個獨立的單標簽罪名,并對每個罪名進行二元分類。這種策略使得模型既適用于單標簽罪名預測也適用于多標簽罪名預測,有效地提升了罪名預測的通用性。
判決自動預測在很早以前就展開了研究。早在1957年,Kort等[1]就試圖分析大量歷史案例,并使用統(tǒng)計學模型分析預測美國聯(lián)邦最高法院對于案例的判罰決策。1963年,Nagel等[2]試圖使用關(guān)聯(lián)分析的方法解決判決預測問題。1980年,Keown R等[6]驗證了一系列線性模型在法律領域相關(guān)任務上預測的可行性。1987年,斯坦福大學Gardner[7]探討了在合同法領域上研究法律推理模型的思路。1991年,Deedman[8]嘗試在加拿大的法律體系下構(gòu)建人工智能專家斷案系統(tǒng)??墒?,上述模型僅在某些特定的情況下才適用,其通用性較差,且預測能力還處于一個較低的層次。
隨著機器學習方法的流行,人們開始將機器學習模型用于罪名預測中。Thompson等[9]使用最近鄰算法、重復增量剪枝算法、決策樹算法等實現(xiàn)裁判文書的分類;臺灣國立大學Liu等[10]針對罪名預測中的多標簽問題,將部分多標簽的共現(xiàn)視作固定組合,但因罪名共現(xiàn)并非一般性規(guī)律,所以其方法通用性較差。Liu等[11]基于之前工作進一步改進,將判決預測分成三個階段并使用支持向量機模型(Support Vector Machine,SVM)分類,預測結(jié)果得到有效提升。2017年,Sulea等[12]則以犯罪事實、犯罪時間和法律規(guī)定作為特征,同樣使用SVM分類并取得了較好效果。
上述方法大多基于淺層文書特征,訓練數(shù)據(jù)規(guī)模也較小,難以應對案情復雜冗長或數(shù)據(jù)規(guī)模較大的情形。隨著神經(jīng)網(wǎng)絡在NLP各子任務紛紛取得突破性的成果,如Kim Y[13]、Hochreiter S[14]、Zichao Y[15]及Vaswani A[16]等,研究者也開始嘗試將上述神經(jīng)網(wǎng)絡模型融入判決預測中。典型工作有Luo等[4]使用注意力機制將法律條文信息融入文本建模部分以輔助罪名預測;Hu[5]針對低頻和易混淆罪名,列出了十個有區(qū)分性的屬性,并使用注意力機制和多任務學習的方法將這些屬性用到預測任務中,取得了較好的效果;Ye H等[17]針對罪名預測可解釋性差的問題,從自然語言生成(Natural Language Generation,NLG)的角度,使用了基于編碼端罪名標簽的Seq2Seq模型,自動生成法院判決觀點。
本文的罪名預測模型主要包括兩個部分: 第一部分是對犯罪事實的語義差異性建模,第二部分是針對數(shù)罪并罰情形改進的罪名預測模型。該模型的優(yōu)勢是可以較為準確地表示犯罪事實語義且能同時實現(xiàn)單罪名與數(shù)罪并罰罪名預測。模型結(jié)構(gòu)如圖3所示,2.2節(jié)和2.3節(jié)將分別介紹其中文本建模層和罪名預測層的工作機制。
犯罪事實可被視作長度為n的詞序列S={w1,w2,…,wn},本文將每個詞映射為一個多維連續(xù)值的詞向量xi∈Rd,則犯罪事實可以表示為矩陣E=x1⊕x2⊕…⊕xn,E∈Rn×d。 罪名標簽{盜竊,搶劫,…,故意殺人}表示為集合L={l1,l2,…,lm},其中m為罪名數(shù)目,集合元素li在{0,1}上取值,li=1時表示案件涉及罪名i,等于0則相反。罪名預測是基于犯罪事實S的矩陣表示E,使用預測模型f(E)預測出罪名標簽集合L。
圖3 基于詞語語義差異性的多標簽罪名預測模型
2.2.1 Bi-GRU層
2.2.2 注意力層
對于犯罪事實文本,除了需要考慮各詞語之間的語義依賴關(guān)系,還要體現(xiàn)出各詞語在罪名的預測中的語義重要性差異。對于包含犯罪信息較為豐富的詞語,在進行高級向量表示時,需要賦予較高的權(quán)重。Bi-GRU層有效地融入了上下文信息,使得注意力值的計算更依賴于整體語義,因此本文在Bi-GRU編碼后引入注意力機制,從而使得整體語義的表達更為準確。這種結(jié)構(gòu)也符合定罪的邏輯,法官會首先了解案件的整體情況,然后重點關(guān)注犯罪過程、犯罪方法、犯罪性質(zhì)的等細節(jié)特征。
本文注意力機制的實現(xiàn)方式如下: 式(4)表示使用多層感知機對Bi-GRU層輸出hi進行非線性變換,輸出中間向量ui;式(5)用于度量詞語語義的重要程度(注意力值)αi,通過計算ui和上下文向量uc的余弦相似度并歸一化得到。其中,上下文向量uc可視作當前犯罪事實的抽象語義表示。其本質(zhì)上是一個可動態(tài)更新的模型參數(shù),作用是為各詞語語義重要性的計算提供參照。訓練過程中隨機賦予uc初始值,通過式(5)初步計算各詞的注意力權(quán)重。然后,通過分類器預測得到屬于各類罪名的概率,計算當前時刻的預測概率與實際概率的loss。若loss較大,則代表當前參數(shù)不能準確表達犯罪事實的語義。因此,使用反向傳播算法繼續(xù)迭代更新uc參數(shù)直到loss值最小,此時的uc可認為是準確表示出了犯罪事實全文信息。關(guān)于loss的詳細計算將在3.3節(jié)給出。
(7)
2.2.3 特征提取層
Bi-GRU編碼層與注意力機制實現(xiàn)了上下文信息與詞義權(quán)重的融入,輸出犯罪事實的抽象矩陣表示Satt。 由于Satt維度較高且包含部分噪聲,故引入多核卷積神經(jīng)網(wǎng)絡對其進行優(yōu)化表示。而且卷積神經(jīng)網(wǎng)絡可通過滑動窗口機制對同一區(qū)域內(nèi)的所有特征進行卷積變換從而有效保留詞語的局部特征。以Satt作為卷積層輸入,使用大小為h的卷積核W∈Rh×d對其進行局部特征提取,如式(8)所示:
其中f(·)為卷積操作,Satt(i,i+h-1)表示Satt第i行到i+h-1行的局部特征。上下滑動卷積窗口得到特征圖Mi,如式(9)所示:
下采樣使用Max Pooling,目的是選取局部最優(yōu)特征,計算如下,如式(10)所示:
經(jīng)過上述操作,完成了犯罪事實的建模與特征抽取,其經(jīng)全連接層變換后即可輸入分類器進行罪名預測。
為了適應數(shù)罪并罰情形的罪名預測,本文將其對應的多標簽罪名分類問題分解為多個獨立單罪名的0-1分類問題。這種預測方式相當于對每一個罪名標簽都訓練了一個獨立的分類器。下面詳細介紹這種預測方式的工作機制:
首先將每個案件的罪名標簽映射為列表[l1,l2,…,ln],n為罪名總數(shù),li∈{0,1},li=1代表涉及罪名i,li=0相反。這種標簽轉(zhuǎn)化策略可將復雜的多標簽分類轉(zhuǎn)化成相對簡單的0-1分類?;谶@種轉(zhuǎn)換,我們使用Sigmoid交叉熵損失函數(shù)[18]計算每個標簽上的loss,其輸入為真實概率分布p(xi)和預測概率分布(置信值)q(xi)。p(xi)使用one-hot映射方式得到,p(xi)∈{0,1};q(xi)由Sigmoid函數(shù)對logitsi激活得到,q(xi)∈(0,1),q(xi)計算方式,如式(11)所示:
其中,logitsi為未經(jīng)歸一化的預測“概率”,logitsi∈(-,+), Sigmoid的作用是歸一化logitsi,使其值域限定在(0,1)區(qū)間,以便與p(xi)計算。下面是loss的具體計算過程。
單案件單罪名的交叉熵loss計算如公式(12)所示:
由于同一案件各罪名之間相互獨立,則上式lossi的計算可簡化如式(13)所示:
一個案件的所有罪名loss和如式(14)所示:
以p(xji)表示批次訓練樣本中案件j的第i個罪名的實際概率分布,q(xji)表示其預測概率分布,則一個batch中所有樣本的損失總和如式(15)所示:
使用Adam優(yōu)化函數(shù)優(yōu)化lossbatch,反向傳播迭代更新卷積核W、上下文向量uc等模型參數(shù)。預測時基于最優(yōu)參數(shù)計算得到預測概率q(xi),比較每個罪名的q(xi)與閾值γ的大小,取q(xi)>γ的所有罪名作為最終預測結(jié)果。
實驗數(shù)據(jù)來源于2018“中國法研杯”司法人工智能挑戰(zhàn)賽,該數(shù)據(jù)集基于中國裁判文書網(wǎng)上的公開文書構(gòu)建,本文依據(jù)規(guī)模將其劃分為Charge-S和Charge-L,表1給出兩個數(shù)據(jù)集的分布情況。對全體數(shù)據(jù)統(tǒng)計分析得出: 單標簽罪名約占90%,多標簽罪名約占10%。預處理過程中將出現(xiàn)次數(shù)小于80的罪名刪除,原因是其對應樣本較少,難以支撐深度學習模型訓練。此外,由于原始數(shù)據(jù)集中金錢、年齡、重量等為離散數(shù)字表示。如盜竊金額1 000元和10 000元、年齡16歲和30歲等。為提升整體語義表示準確性,減少該類特征的多元化離散分布對判罰的影響,本文依據(jù)刑法法條和司法解釋對其進行規(guī)范化處理,將金額劃分為一級金額、二級金額等十個級別;并按是否成年將年齡分為成年和未成年兩個級別等。
表1 數(shù)據(jù)集的分布
評價指標使用微平均F1值F1micro、宏平均F1值F1macro及綜合F1值F1union,其計算公式分別如式(16)~式(18)所示:
參數(shù)設置上,使用skip-gram模型[19]訓練字向量和詞向量,維度均設置為256。對犯罪事實長度統(tǒng)計,發(fā)現(xiàn)以字符作為最小語義單元時輸入序列的長度總數(shù)為450,以詞語作為最小語義單元時的長度總數(shù)為200。因此,本文將輸入序列長度分別固定為450和200,對于長度不符的樣例進行padding或者cut處理。卷積核尺寸分別為2,3,4,5。設定學習率隨著訓練的進行逐漸衰減,初始學習率為0.001,衰減率為0.8,使用批正則化的方式降低過擬合的影響。優(yōu)化器使用AdamOptimizer[20]。
為了驗證本文方法的有效性,分別設定傳統(tǒng)機器學習模型和深度學習模型作為基線對比。傳統(tǒng)機器模型分別使用詞頻-逆文檔頻率算法(TF-IDF)和卡方檢驗(CHI)構(gòu)建特征詞典,使用支持向量機SVM作為分類器。深度學習方法主要包括Bi-GRU、CNN、未融合注意力機制的級聯(lián)模型Bi-GRU-CNN及本文模型GAC(Bi-GRU-Attention-CNN)。為了檢驗模型對于數(shù)罪并罰情形下多標簽罪名的預測效果,修改GAC模型得到其單標簽罪名預測模型S-GAC。方法是使用Softmax作為分類器,歸一化logits后取置信值最大的類別作為預測的罪名。此外,為了研究語義單元粒度對預測性能的影響,以170萬篇法律文書作為訓練數(shù)據(jù)訓練字向量和詞向量,并分別作為深度學習模型的輸入。
表2、表3列出了基線模型和本文模型的預測結(jié)果對比,圖4使用了灰度熱力圖對注意力層進行可視化,表4給出了分別以字向量和詞向量作為輸入的實驗結(jié)果。
表2 Charge-S上的實驗結(jié)果
續(xù)表
表3 Charge-L上的實驗結(jié)果
從表2~3的結(jié)果可以看出,本文提出的罪名預測模型GAC在兩個數(shù)據(jù)集上均取得較好的預測效果。其F1union值相較于最優(yōu)基線模型Bi-GRU-CNN,在Charge-S和Charge-L上分別提升了1.2%和 1.4%。Bi-GRU-CNN模型未考慮詞語語義之間的差異性,其粗略認為犯罪事實中所有詞語的重要性一致或接近,而GAC模型使用注意力機制實現(xiàn)了各詞語語義差異表示,該方式的語義表示更為準確。這表明了該模型可以在訓練過程中準確捕獲各罪名的類別關(guān)聯(lián)性,并有利于提升罪名分類的準確率。
為了檢驗本文方法對相似、相關(guān)罪名的區(qū)分能力,以及進一步分析文本建模過程中注意力機制的作用機理,本文選取相似罪名“容留他人吸毒罪”與“販賣毒品罪”中的兩個案例。在預測過程中,分別對其犯罪事實中各詞語對應隱層向量的注意力權(quán)值αi進行可視化。結(jié)果如下圖4所示,可以看出,盡管“容留他人吸毒罪”與“販賣毒品罪”均為毒品犯罪類罪名,但其犯罪事實整體語義側(cè)重仍有所差異。依據(jù)司法解釋,“容留他人吸毒罪”客觀方面表現(xiàn)為容留他人吸食、注射毒品,重點強調(diào)主觀容留性,忽略其是否存在有償交易。而“販賣毒品罪”更多強調(diào)毒品的交易行為,毒品種類、交易數(shù)量、毒資金額是其關(guān)鍵特征。因此,在“容留他人吸毒罪”案件的可視化圖中,“容留”“吸食”等強調(diào)容留吸食行為詞語的顏色較深;“販賣毒品罪”中描述毒品交易特征的詞語則顏色較深,如“購買”“交易”“出售”“毒資”。這種注意力分布的差異是區(qū)分兩類相似罪名的關(guān)鍵。通用性詞語如“被告人”“李某”“路邊”等,其罪名區(qū)分能力較弱,對應注意力值也較低。我們同時發(fā)現(xiàn),“海洛因”“冰毒”等毒品名稱的權(quán)重也較高。原因是其所指語義為“毒品”,而該語義在毒品犯罪與非毒品犯罪(如盜竊、搶劫等罪名)的區(qū)分中較為關(guān)鍵。值得注意的是,“在毒品販賣罪”中出現(xiàn)了標簽“money_1”,其是預處理過程中對金錢類數(shù)字規(guī)范化替換的結(jié)果,因為毒資金額在“毒品販賣罪”相似罪名(如走私、運輸毒品罪等)區(qū)分過程中較為關(guān)鍵,所以其權(quán)重也相應較高。上述分析說明本文注意力機制的使用的確能有效關(guān)注到犯罪事實中詞語的語義重要性差異,而這種差異性對于同類案件或非同類案件的罪名區(qū)分十分關(guān)鍵。
圖4 可視化注意力層
從表2、3中還可看出,F(xiàn)1micro值與F1macro值相差較大。在Charge-S數(shù)據(jù)集中,GAC模型預測結(jié)果的F1micro與F1macro相差高達16.8%,Charge-L中也相差15.2%。其主要原因是不同罪名的樣本數(shù)目占比傾斜嚴重,從而導致了模型訓練的偏置。
圖5給出了Charge-S數(shù)據(jù)集上部分罪名的訓練樣本數(shù)目對比,可以發(fā)現(xiàn)不同罪名的樣本數(shù)量分布很不均衡。其中,“盜竊”與 “倒賣文物”的樣本數(shù)目比300:1。分類器是以總體分類精度為學習目標,在這種情況下,訓練算法勢必會導致分類器過多關(guān)注多數(shù)樣本,從而使少數(shù)樣本分類精度下降。本文也嘗試使用采樣算法改進模型,但該類方法對性能的提升極為有限,本文將在后續(xù)工作中研究更有效的改進思路。
圖5 Charge-S上部分罪名的訓練樣例數(shù)目
為了驗證模型在數(shù)罪并罰類案件的有效性,本文設置了對應的單標簽預測模型S-GAC作為對比模型。觀察表3發(fā)現(xiàn),在Charge-L數(shù)據(jù)集上通用GAC模型相比于單罪預測模型S-GAC,F(xiàn)1union提升4.2%。數(shù)據(jù)集中全部多標簽案件約占9%,這表明本文使用的基于Sigmoid的方法確實能有效解決數(shù)罪并罰情形下的多罪名預測問題。
為了研究不同粒度的語義單元對于犯罪事實建模的影響,本文還分別對比了預訓練字向量和詞向量作為輸入時的預測結(jié)果。表4給出了結(jié)果對比。從表4中可以看出,以詞向量作為語義表示時的效果在各項指標上均顯著優(yōu)于字向量。在Charge-L數(shù)據(jù)集上,Word-GRU 與Word-CNN相比于Char-GRU 和Char-CNN,F(xiàn)1union分別提升了1.2%和0.6%,本文使用的GAC模型也提升了1.1%。這一方面,是由于法律文書的撰寫用詞較為規(guī)范,使得分詞錯誤率較低,但使用字向量優(yōu)勢并不明顯。另一方面,以詞作為語義單元時,便于對犯罪事實中時間、地點、數(shù)字這類語義整體性較強的詞語編碼。而字向量以單字作為語義單元,編碼過程中會將整體語義信息拆分成零散信息,影響了語義表示的準確性。由于字典規(guī)模遠小于詞典(本文實驗中分別為4 786 和170 827),故基于字向量的模型效率要明顯優(yōu)于基于詞向量的模型。
表4 字向量和詞向量對比實驗結(jié)果
本文針對性地研究了罪名自動預測中詞語的差異性建模以及數(shù)罪并罰情形下的罪名預測問題。首先,使用Bi-GRU融入上下文信息以生成犯罪事實總體語義表示。然后,使用注意力機制刻畫不同詞語的語義重要性差異,再使用多核卷積池化對特征向量降維。最后,經(jīng)過全連接層和Sigmoid分類器預測得到罪名預測結(jié)果。針對數(shù)罪并罰情形改進的罪名預測模型也有效解決了其對應的多標簽罪名預測。由于法官定罪時的影響因素不僅只有犯罪事實,證據(jù)是否完備充足、犯罪情形嚴重與否、法律條文與司法解釋的符合程度等因素對判決的走向也有較大影響。因此,在接下來的工作中,本文將嘗試將證據(jù)信息、法律條文,司法解釋等外部信息融入以輔助罪名預測,改進模型并提升其預測性能。
在此,感謝中譯語通科技股份有限公司對于本工作提供的幫助和建議!