李 銳, 游景揚, 劉 穩(wěn), 王 錦, 陳建峽
(湖北工業(yè)大學(xué)計算機學(xué)院, 湖北 武漢 430068)
基于SimHash算法的案件輔助判決系統(tǒng)研究
李 銳, 游景揚, 劉 穩(wěn), 王 錦, 陳建峽
(湖北工業(yè)大學(xué)計算機學(xué)院, 湖北 武漢 430068)
為提高法院工作效率和判案的公正性,開發(fā)了案件輔助判決系統(tǒng)。將裁判文書分為刑事、民事、執(zhí)行、賠償、行政5大案件類型,便于對判決書的處理,存儲和查詢。系統(tǒng)采用SimHash算法,對用戶提交的判決書提取關(guān)鍵信息,查找出數(shù)據(jù)庫中同類型判決書中相似度最高的判決書推薦給用戶。
裁判文書; SimHash算法; 輔助判決系統(tǒng)
法院判決書,是指法院根據(jù)案件的判決寫成的文書。判決書具有既判力、確定力和執(zhí)行力。從2014年1月1日起,最高人民法院發(fā)布新規(guī)定:法院生效的判決書在互聯(lián)網(wǎng)全面公布,除涉及國家機密、個人隱私、未成年犯罪以及其他四類判決書外,公眾均可隨時查閱。因此,案件的審判結(jié)果越來越受關(guān)注。然而,即使對于同類型的案件,不同的法官也會有不同的衡量標準。在判決案件之前,法官往往想知道以往同類案件的判決如何,曾經(jīng)引起了社會怎樣的反應(yīng),從而對當(dāng)前的案件判決起到重要的參考作用。
本文研究的案件輔助判決系統(tǒng),對于已有的判決書文中關(guān)鍵信息進行機器記錄學(xué)習(xí),并為使用者提供有用的信息查詢,能夠讓法官快速得到類似案件的裁決文書。這樣不僅能夠減少法院工作人員對于新的案件的審判時間,極大地提高實際工作的效率,而且便于查看到該案件的判決引發(fā)的社會效應(yīng)與輿論,避免同案不同判。
本文所研究的案件輔助判決系統(tǒng),是基于文本相似度模型的中文裁判文書推薦系統(tǒng)。在文本相似度模型中,采用了SimHash算法實現(xiàn)法院輔助判決系統(tǒng),該算法早期運用在Google的網(wǎng)頁去重技術(shù),用以提高網(wǎng)頁的查詢效率。目前國內(nèi)SimHash算法應(yīng)用也比較廣泛,主要應(yīng)用在海量文檔的反作弊系統(tǒng),搜索引擎的爬蟲系統(tǒng),相似指紋檢索,相似人臉檢索等方面。其中,應(yīng)用SimHash算法開發(fā)出的GroupLens[1]系統(tǒng)通過社會信息過濾系統(tǒng)的使用歷史的相關(guān)信息,計算出用戶之間的相似度并對于相似信息進行推薦。這一系統(tǒng)早期也是國外開發(fā)的,如今國內(nèi)應(yīng)用也十分普遍,豆瓣網(wǎng)通過記錄下用戶閱讀過的文章、購買過的商品、聽過的音樂等瀏覽歷史痕跡,以協(xié)同過濾的方式猜測用戶職業(yè)類型,喜好方向及圈子,建立用戶的行為向量模型,為用戶推薦可能符合需求的網(wǎng)頁內(nèi)容。
目前,國內(nèi)沒有出現(xiàn)過運用SimHash算法來檢索相似度較高的裁判文書,僅有的是將裁判文書[2]做一個結(jié)構(gòu)化信息的存儲,然后在數(shù)據(jù)庫中建立全文索引,給用戶提供捜索功能。比如中國裁判文書網(wǎng)的搜索裁判文書功能。
本系統(tǒng)采用了B/S架構(gòu),采用分層的設(shè)計思想,運用了SSI框架搭建整個web系統(tǒng)。借鑒中國裁判文書網(wǎng)的分類方式,本系統(tǒng)將裁判文書分為刑事、民事、執(zhí)行、賠償、行政5大案件類型,在這5種類型的基礎(chǔ)上細分為幾十種小類型,便于對判決書的處理、存儲和查詢。系統(tǒng)對用戶提交的判決書提取關(guān)鍵信息,采用SimHash算法查找出數(shù)據(jù)庫中同類型判決書中相似度最高的判決書推薦給用戶。
1.1SimHash算法原理
文本相似度的研究主要是從提高查準率、查找速度等方面進行,目前已有諸如布 爾模型、概率模型、向量空間模型等文本表示模型,相似度度量及距離度量等相似度計算方法,也有關(guān)于文本分詞及語義等方面的研究[3]。本系統(tǒng)中采用的文本相似度算法是SimHash算法,是Google工程師Charikar提出的一種計算文本相似度的算法,它將一篇文檔轉(zhuǎn)化為一個t位2進制的簽名,如需比較兩篇文檔,只需要將這兩篇文檔生成的t位2進制簽名進行比較[4]。SimHash算法對一篇文檔產(chǎn)生一個長度為t位的二進制簽名的偽代碼(表1)。每篇文檔產(chǎn)生了一個二進制簽名,比較兩篇文檔的相似度,假如現(xiàn)在有兩個8位二進制簽名00101101,01101001。這兩個八位簽名中有兩位不相同,則這兩篇文檔的海明距離為2。兩篇文檔的海明距離越小,則相似度越高。SimHash 算法發(fā)明人 Charikar在論文中闡述,64位簽名的SimHash算法,海明距離在 3 以內(nèi)的文本都可以認為是近重復(fù)文本[5].所以采用64位簽名的SimHash算法。然后根據(jù)其相似度矩陣,得到兩篇文檔的相似度。
SimHash算法的偽代碼如下:
Begin
Class SimHash{
Input String container;
Input BigInteger intSimHash;
Input String strSimHash;
Input int Bit<-32;
SimHash(){
Input int v[];
Input ArrayList
String Word;
while(t.hasNext()){
Word<-t.next();
BigInteger w<-this.hash();
for(int I<-0 To Bit){
BigInteger bitmask<-
newBigInteger("1").shiftLeft(i);
if(t.amd(bitmask).signum()!=0){
v[i]<-v[i] add 1;
}else{
v[i]<-v[i] substract 1;
}}}
StringBuffer tb;
for(int i<-0 To B it){
if(v[i]>=0){
tb.append(1);
}else{
tb.append(0);
}}}
Hash(String source){
if(source==null || source.length==0){
return new BigInteger("0");
}else{
char[] sourceArray<-source.toCharArray();
BigInteger hash<-new BigInteger(sourceArray[0])<<7;
BigInteger m <- new BigInteger("10000030");
BigInteger mask<- new BigInteger(2^(-32));
for(char item<-sourceArray[0] To sourceArray[source.length-1]){
BigInteger temp = new BigInteger(item);
hash<-((x multiply m)^temp)&mask;
}
if(hash == BigInteger("-1")){
hash<-BigInteger("-2");
}}
return hash;
}
GetDistance(String str1,String str2){
Input int distance;
if(str1.length()!=str2.length()){
distance<-(-1);
}else{
Distance <- 0;
for(int i<-0 To Bit){
distance++;
}}
return distance;
}}
End
1.2SimHash算法實驗分析
1.2.1實驗環(huán)境及配置說明測試計算機的硬件配置是第六代Inter Core i5處理器,8GB內(nèi)存,1T 5400轉(zhuǎn)硬盤的PC;軟件配置采用了基于Windows10操作系統(tǒng),Java Development Kit配置運行時環(huán)境,同時安裝了Myeclipse編譯器作為單個案例測試文本運行工具。Tomcat7.0作為B/S架構(gòu)中的服務(wù)器,F(xiàn)irefox作為測試中訪問的瀏覽器。
衡量一個相似度算法的優(yōu)劣是該算法是否能從海量文本中找出最有價值的文檔亦即與當(dāng)前文檔相似度匹配最高的一批文檔。本文將測試分為單個案例測試和實際應(yīng)用測試。
1.2.2SimHash算法單個案例實驗本文采用了四個測試文本(表1),實驗結(jié)果見表2。從表2可以看出,文本1和文本2的海明距離為2,在這四篇文本中相似度最高。文本2和文本4海明距離為11,在這四篇文本中相似度最低。
表1 測試文本
表2 SimHash算法實驗結(jié)果
從表1的文本結(jié)構(gòu)分析,文本1,文本2,文本3結(jié)構(gòu)大體上相似,內(nèi)容上也有很多相同,理論上來說相似度最高的兩篇應(yīng)該從這三篇中產(chǎn)生;而文本4和上面3篇文本結(jié)構(gòu)并不相似,內(nèi)容也相去甚遠,所以相似度最低的應(yīng)該從文本4和另外3篇文本比較中產(chǎn)生,與代碼運行的結(jié)果一致。
1.3.3法院判決書測試結(jié)果及分析在實際測試中,本文預(yù)先標記部分文檔作為測試中的目標文檔。然后將本文的目標文檔和待測試文檔混合在一起。通過該文本相似度推薦后,得到推薦的文檔列表衡量該算法的性能[6]。
表2中第一行表示推薦的文檔排名,第二行為推薦的文檔名,第三行為推薦文本效果值。如果推薦文本屬于本文預(yù)先給出的目標文檔,則推薦效果值為該相似值,如果屬于背景噪聲文檔,則定義推薦效果值為0,如果屬于強噪聲文檔,則定義為相似度的相反數(shù)。本文使用DCGp指標衡量算法的推薦性能。
式中p表示排名,rel表示推薦效果值。因為裁判文書分為5大類型,故而本文將實驗分為5組,分別為刑事案件、民事案件、賠償案件、行政案件、執(zhí)行案件;將文檔分為3種類型:目標文檔、強噪聲文檔、背景噪聲文檔。目標文檔是本文預(yù)先處理的和原文檔相似度極高的文檔;強噪聲文檔即本文在網(wǎng)上爬取的和本文裁判文書完全不相關(guān)的文檔;背景噪聲文檔是某法院3年的裁判文書集,總共是16 542篇,其中行政案件705篇,民事案件12 457篇,賠償案件8篇,刑事案件1493篇,執(zhí)行案件1879篇(表4)。
表3 推薦結(jié)果列表
表4 測試數(shù)據(jù)信息
表5 測試結(jié)果
最后得到測試結(jié)果見表5。在5種案件類型的測試中,行政案件推薦的5篇文檔都屬于目標文檔,民事案件中前3篇文檔屬于目標文檔,后2篇屬于背景噪聲文檔,賠償案件中5篇文檔全部屬于目標文檔,刑事案件中推薦的第5篇文檔屬于背景噪聲文檔,其余是目標文檔,執(zhí)行案件中推薦的第4篇文檔為背景噪聲文檔。其余4篇是目標文檔。在這5次實驗中系統(tǒng)沒有向本文推薦強噪聲文檔。本文通過DCGp公式,求出了這5種類型案件的DCGp的值(表6)。
表6 最終DCGp結(jié)果
從DCGp結(jié)果來看,行政案件的DCGp值最大,系統(tǒng)推薦的結(jié)果是最佳的;賠償案件其次,但是賠償案件的背景噪聲文檔的量相對于其他的類型嚴重偏少??赡軐?dǎo)致此類型案件測試結(jié)果可信度低。民事案件DCGp值最小,這個和背景噪聲文檔的量太大有關(guān)系,因為在背景噪聲文檔中可能有和提交的原文檔相似度很高的文檔,所以推薦結(jié)果中出現(xiàn)了較多的背景噪聲文檔。本文可以看到所有的測試結(jié)果中系統(tǒng)沒有給本文推薦強噪聲文檔,綜上分析這個推薦結(jié)果有一定可靠性,這種情況差錯率幾乎為零。以上數(shù)據(jù)表示,根據(jù)SimHash算法設(shè)計出來的文本內(nèi)容推薦系統(tǒng)是成功的。
2.1系統(tǒng)總體設(shè)計
該系統(tǒng)主要包含三個功能模塊:系統(tǒng)管理、案件查詢、同案同判(圖1)。前端頁面開發(fā)運用Html CSS JavaScript技術(shù),后臺使用Java語言,為了提高開發(fā)效率且易于維護,采用了SSI框架,MVC模式使系統(tǒng)開發(fā)過程更加清晰。
圖 1 系統(tǒng)總體架構(gòu)圖
2.2系統(tǒng)功能模塊設(shè)計
2.2.1系統(tǒng)總體功能模塊系統(tǒng)總體功能模塊見圖2。
圖 2 系統(tǒng)總體功能模塊圖
2.2.2系統(tǒng)功能子模塊設(shè)計系統(tǒng)管理模塊分為兩個部分,新聞中心和案件信息。新聞中心工作流程見圖3。案件查詢子模塊可以分為根據(jù)案件類型查詢根據(jù)法院層級和案件審判時間查詢。其模塊工作流程見圖4。
圖 3 系統(tǒng)管理子模塊流程圖
圖 4 案件查詢子模塊流程圖
圖 5 同案同判流程圖
同案同判子模塊是從數(shù)據(jù)庫中查找相同類型的案件,并從中選出三個與此案件相似程度最高的案件,然后查看三個案件的信息,根據(jù)三個案件的審判結(jié)果來裁決此案件。其模塊工作流程見圖5。
2.3系統(tǒng)數(shù)據(jù)庫設(shè)計
系統(tǒng)數(shù)據(jù)庫設(shè)計見表7~表10。
表7 案件信息表
表8 案件人員表
表9 案件人員關(guān)聯(lián)表
表10 特征值表
2.4系統(tǒng)實現(xiàn)
系統(tǒng)界面實現(xiàn)見圖6,案件查詢子模塊實現(xiàn)見圖7,同案同判子模塊實現(xiàn)見圖8。
圖 6 系統(tǒng)首頁
圖 7 案件查詢
圖 8 案件文本推薦
中文的文本相似度計算處理非常復(fù)雜,在具體應(yīng)用中還有很多不確定性,無法統(tǒng)一給出解決方案。有很多難點、問題需要不斷地去發(fā)現(xiàn)、探討和改進。
1)對中文分詞技術(shù)的研究和實現(xiàn)
由于時間和條件有限,考慮到中文分詞在本文中只是文本預(yù)處理的一個步驟,本文使用了中文分詞器來完成分詞的工作。但中文分詞技術(shù)是文本挖掘、信息處理的關(guān)鍵基礎(chǔ)工作,它的有效計算也是非常重要的。因此,下一步可以研究建立自己的分詞系統(tǒng)。
2)對于相似度的考慮
在實際的應(yīng)用過程中,很多地方需要用到相似度,在本文的方法中,段落數(shù)比較多的情況下,會根據(jù)預(yù)先設(shè)置的關(guān)鍵字,把較低相似度的語句舍棄,從而減少計算量。目前關(guān)鍵字的設(shè)置大多是按照經(jīng)驗人工設(shè)置的,今后可以從這方面入手,研究自動設(shè)置關(guān)鍵字方法,使得系統(tǒng)效率得到提高。
3)文本相似度計算方法的進一步研究
本文僅對文本相似度的計算作了初步研究。未來對于文本理解的相似度計算必然成為中文文本處理的主流,因為這種方法更適合漢語語言的特點和習(xí)慣。建立一個更好的文本理解模型,并把它應(yīng)用到更多的領(lǐng)域進行事件處理,將是進一步研究的主要目標。
[1] Sohn J S, Bae U B, Chung I J. Contents recommendation method using social network analysis[J]. Wireless Personal Communications, 2013, 73(4):1529-1546.
[2] 向李興. 基于自然語言處理的裁判文書推薦系統(tǒng)設(shè)計與實現(xiàn)[D]. 南京:南京大學(xué),2015.
[3] 譚靜.基于向量空間模型的文本相似度研究[D]. 成都:西南石油大學(xué),2015.
[4] 董博,鄭慶華,宋凱磊,等. 基于多 SimHash指紋的近似文本檢測[J]. 小型微型計算機系統(tǒng), 2017,17(5):129-132.
[5] Scherbina A, Kuznetsov S. Clustering of Web sessions using levenshtein metric[C]//International Conference on Advances in Data Mining: Applications in Image Mining, Medicine and Biotechnology, Management and Environmental Control, and Telecommunications. Springer-Verlag, 2004:127-133.
[6] 伍盛. 基于詞義相似度的文本推薦系統(tǒng)的研究與實現(xiàn)[D]. 成都:電子科技大學(xué),2012.
[責(zé)任編校:張巖芳]
TheLegalDecisionSupportSystemBasedonSimHashAlgorithm
LI Rui, YOU Jingyang, LIU Wen, WANG Jin, CHEN Jianxia
(SchoolofComputerScience,HubeiUniv.ofTech.,Wuhan430068,China)
The paper proposes an decision support system for the legal case judgements, in which the system divides the cases into five categories: criminal, civil, execution, compensation, and administrative ones in order to process, preserve and query the cases easily. In particular, the system, using the SimHash algorithm, extracts the key information from the judgements that users submit, and finds the similar decision in the database with the highest similarity and then recommends it to the users. The experimental results show that the system can not only greatly improve the efficiency of the actual work, but also help to improve the impartiality of judgements.
judgements; SimHash algorithm; the decision support system
2016-12-10
湖北省教育廳青年基金(Q20141420)
李 銳(1994-), 男, 湖北嘉魚人,湖北工業(yè)大學(xué)本科生,研究方向為機器學(xué)習(xí)
游景揚(1996-),男,河南信陽人,湖北工業(yè)大學(xué)本科生, 研究方向機器學(xué)習(xí)
1003-4684(2017)05-0067-06
TP391
A