高冠東
(中央司法警官學(xué)院信息管理系,河北保定 071000)
隨著科學(xué)技術(shù)的發(fā)展,人工智能技術(shù)在不同領(lǐng)域取得較好的發(fā)展,在司法領(lǐng)域中引入人工智能技術(shù)成為必然趨勢(shì)。2018年司法部發(fā)布的《“數(shù)字法治、智慧司法”信息化體系建設(shè)指導(dǎo)意見》中,對(duì)“數(shù)字法治,智慧司法”的信息化體系建設(shè)提出指導(dǎo)性意見。同時(shí)“智慧司法”[1]“智慧法院”[2]等以人工智能為支撐,取得較好的發(fā)展,促進(jìn)司法信息化和智能化[3-5]。自然語(yǔ)言處理技術(shù)作為人工智能中的重要組成部分,為在海量的司法文本數(shù)據(jù)中挖掘具有重要價(jià)值信息提供支持。文本分類作為自然語(yǔ)言處理中一項(xiàng)基本任務(wù),在司法領(lǐng)域中得到廣泛應(yīng)用,例如類案推送[6]、爭(zhēng)議焦點(diǎn)[7]、法條預(yù)測(cè)[8]等。
文本數(shù)據(jù)是非結(jié)構(gòu)化的,并且噪聲很大。在執(zhí)行文本分類時(shí),用戶獲得了標(biāo)記良好的訓(xùn)練數(shù)據(jù)和監(jiān)督學(xué)習(xí)的益處。然而,文檔聚類是一個(gè)無監(jiān)督的學(xué)習(xí)過程,用戶借以通過讓機(jī)器了解各種文本及其特征、相似度和差異性,嘗試將文檔分割和分類為不同的類別。這使得文檔聚類更有挑戰(zhàn)性,也更有趣。本研究考慮擁有一個(gè)犯罪文檔語(yǔ)料庫(kù),以期討論各種不同的概念和想法。人類以一種方式將文本鏈接,文本使得人類能使用從過去所學(xué)到的知識(shí),并可以將其應(yīng)用于區(qū)分概念。例如,與句子“2016 年11 月份,被告人溫某某與被告人蔡某某合謀走私柴油?!毕啾龋渥印?012 年6 月初,郭某與汪某聯(lián)系購(gòu)買10 000 克毒品氯胺酮?!备愃朴凇?016年春節(jié)后的一天,董某某、嚴(yán)某某(另案處理)密謀生產(chǎn)毒品甲卡西酮。”這句話。用戶可以輕松并直觀地確定特定的關(guān)鍵短語(yǔ),例如:走私、毒品、氯胺酮、甲卡西酮等,這有助于其確定哪些句子或文本更為相似。
在司法實(shí)踐中,判決案例是一項(xiàng)非常重要的資料。通過分析判決案例,法官可以了解類似案例的判決結(jié)果,并參考其理由和邏輯進(jìn)行判斷。然而,由于案例數(shù)量龐大,法官往往需要花費(fèi)大量的時(shí)間和精力來尋找類似案例。因此,構(gòu)建一種基于相似性聚類的智能推薦系統(tǒng),可以幫助法官快速準(zhǔn)確地找到與當(dāng)前案件類似的案例,提高司法效率和判決質(zhì)量。
推薦系統(tǒng)是機(jī)器學(xué)習(xí)中最流行、最常用的應(yīng)用之一。通常,它們用于向用戶推薦實(shí)體。這些實(shí)體可以是任何東西,例如產(chǎn)品、案例、電影、服務(wù)等。常見的推薦例子包括:
1)司法案例庫(kù)推薦相似案例。
2) Amazon Prime、Netflix 和Hotstar 推 薦 電 影/節(jié)目。
3)YouTube推薦觀看的視頻。
推薦系統(tǒng)通常可以通過三種方式實(shí)現(xiàn):
1)簡(jiǎn)單的基于規(guī)則的推薦系統(tǒng):基于特定的全局指標(biāo)和閾值。
2)基于內(nèi)容的推薦系統(tǒng):基于特定的感興趣實(shí)體提供相似的實(shí)體。
3)協(xié)同過濾推薦系統(tǒng):不需要元數(shù)據(jù),但用戶會(huì)嘗試根據(jù)不同用戶和特定項(xiàng)的過去評(píng)分來預(yù)測(cè)推薦和評(píng)分。
本研究構(gòu)建了一個(gè)司法案例推薦系統(tǒng),借此基于與不同案例有關(guān)的數(shù)據(jù)/元數(shù)據(jù),嘗試推薦類似的司法案例,推斷未來案情結(jié)果。
本研究以中國(guó)裁判文書網(wǎng)為語(yǔ)料源,收集并選取了詐騙、行賄、走私、制造毒品、危險(xiǎn)駕駛、搶劫、綁架、故意傷害、故意殺人、強(qiáng)奸等指控的典型案件判決書共123 條。數(shù)據(jù)集樣式如圖1 所示,由姓名、年齡、民族、戶籍所在地、文化程度、職業(yè)、案件類型、案由、罪名、犯案事實(shí)、刑期等多個(gè)短語(yǔ)組成。
圖1 司法案例數(shù)據(jù)集
本研究構(gòu)建司法案例推薦系統(tǒng),具體流程如圖2所示:
圖2 司法案例推薦系統(tǒng)技術(shù)路線圖
推薦都是關(guān)于了解基本特性的,它使我們傾向于一種選擇而不是另一種選擇。項(xiàng)目之間的相似性(在本例中是司法案例)是了解為什么用戶選擇一個(gè)司法案例而不是另一個(gè)司法案例的一種方式。有不同的方法可以計(jì)算兩個(gè)項(xiàng)目之間的相似度。
司法案例語(yǔ)料在計(jì)算相似度之前一般需要一系列的預(yù)處理工作,才能輸入得符合要求。首先需將用戶預(yù)定義詞典載入,防止一些重要的短語(yǔ)被分詞器所分開。其次,載入停用詞典,減少噪聲。然后,讀入語(yǔ)料文件對(duì)整個(gè)語(yǔ)料庫(kù)進(jìn)行分詞操作。最終將整個(gè)語(yǔ)料庫(kù)制作成向量形式,才能進(jìn)行相似度計(jì)算。
相似性度量,即綜合評(píng)定兩個(gè)事物之間相近程度的一種度量。兩個(gè)事物越接近,它們的相似性度量也就越大,而兩個(gè)事物越疏遠(yuǎn),它們的相似性度量也就越小。相似性度量的給算種類繁多,一般根據(jù)實(shí)際問題進(jìn)行選用。相似度度量用于文本相似度分析和聚類。任何相似度度量或距離度量都可測(cè)量?jī)蓚€(gè)實(shí)體之間的緊密程度,該實(shí)體可以是任何文本格式,例如文檔、句子甚至側(cè)向。這種相似度度量有助于識(shí)別相似實(shí)體和區(qū)分彼此差異明顯的實(shí)體。相似度度量非常有效,有時(shí)選擇正確的度量可能會(huì)對(duì)最終分析系統(tǒng)的性能產(chǎn)生很大的影響。
文本相似度的主要目標(biāo)是分析和度量文本兩個(gè)實(shí)體之間的緊密程度。文本的這些實(shí)體可以是簡(jiǎn)單的標(biāo)識(shí)符或詞項(xiàng),例如單詞或包含句子或文本段落的整個(gè)文檔。分析文本相似度的方法有很多種,可以將分析文本相似度的意圖大致分為以下兩個(gè)方面:
1)詞匯相似度:這涉及觀察文本文檔的語(yǔ)法、結(jié)構(gòu)和內(nèi)容方面的內(nèi)容,并根據(jù)這些參數(shù)度量它們的相似度。
2)語(yǔ)義相似度:這涉及確定文檔的語(yǔ)義、含義和上下文,然后確定它們彼此間的緊密程度。在此方面,依存語(yǔ)法和實(shí)體識(shí)別是可以提供幫助的便捷工具。
文本分詞后,如何將其送入一個(gè)計(jì)算文本相似度的過程中呢?答案是文本向量化,即用向量或矩陣的形式表示文本,也可以理解為對(duì)文本的數(shù)值化處理。文本向量化從數(shù)學(xué)角度可以解釋為映射,即將單詞映射到另一個(gè)空間。本研究將把語(yǔ)料庫(kù)制作成詞袋模型+TF-IDF的向量化表示形式。結(jié)果如圖3所示。
圖3 文本向量化函數(shù)測(cè)試結(jié)果
目標(biāo)案例預(yù)處理與司法案例數(shù)據(jù)集預(yù)處理類似,也是通過加載用戶預(yù)定義詞典、刪除停用詞、分詞、向量化4步組成。唯一區(qū)別是由整個(gè)語(yǔ)料庫(kù)案例變?yōu)榱藛蝹€(gè)案例預(yù)處理。目標(biāo)案例預(yù)處理一共分為載入用戶預(yù)定義詞典、停用詞刪除以及分詞操作、文本向量化(將單一目標(biāo)案例制作成詞袋模型+TF-IDF的向量化表示形式)3個(gè)步驟:
現(xiàn)在已經(jīng)使用基于TF-IDF的向量表示對(duì)整個(gè)語(yǔ)料庫(kù)和目標(biāo)案例進(jìn)行了規(guī)范化和向量化處理,接下來看看如何計(jì)算具有余弦相似度和文檔相似度。
本研究重復(fù)使用計(jì)算余弦相似度的概念來計(jì)算文檔而不是詞項(xiàng)的余弦相似度分?jǐn)?shù)。文檔向量將是基于詞袋模型的向量,其具有TF-IDF值而不是詞頻。
基于Numpy的余弦相似度代碼如下所示:
def Cos_Distance(vector1,vector2):
vec1=np.array(vector1)
vec2=np.array(vector2)
return float(np.sum(vec1 * vec2))/ (np.linalg.norm(vec1) * np.linalg.norm(vec2)) # 此處可以更換成任意的相似度計(jì)算公式
實(shí)現(xiàn)余弦相似度的代碼之后,便要計(jì)算目標(biāo)案例與整個(gè)司法案例語(yǔ)料庫(kù)的相似度,代碼如下所示:
def similarity_words(vec,vecs_list): # 傳進(jìn)目標(biāo)語(yǔ)句的向量形式和整個(gè)語(yǔ)料庫(kù)的向量形式
Similarity_list=[]
for vec_i in vecs_list:#拿出整個(gè)語(yǔ)料庫(kù)中語(yǔ)句Similarity=Cos_Distance(vec,vec_i)#計(jì)算目標(biāo)語(yǔ)句與整個(gè)語(yǔ)料庫(kù)中語(yǔ)句的余弦相似度
Similarity_list.append(Similarity)return Similarity_list
將目標(biāo)案例與整個(gè)語(yǔ)料庫(kù)中的司法案例進(jìn)行對(duì)比,以計(jì)算其與整個(gè)語(yǔ)料庫(kù)中的案例的相似度,并返回前十條相似度較高的樣本,借此可以推斷目標(biāo)案例未來的案情結(jié)果,可以成為法律咨詢方面的一個(gè)有價(jià)值的補(bǔ)充。代碼如下所示:
def main(words,token2id,idf_dict,tfidf_library):
cut_words=split_words(words)#對(duì)目標(biāo)語(yǔ)句進(jìn)行分詞
vec=make_tfidf(cut_words,token2id,idf_dict)#將目標(biāo)語(yǔ)句轉(zhuǎn)換成詞袋模型+TFIDF的表現(xiàn)形式
similarity_lists = similarity_words(vec, tfidf_library)#計(jì)算相似度,返回目標(biāo)語(yǔ)句與整個(gè)語(yǔ)料庫(kù)中每個(gè)語(yǔ)句的相似度列表
sorted_res=sorted(enumerate(similarity_lists),key=lambda x:x[1])#將相似度列表轉(zhuǎn)換成枚舉形式,針對(duì)枚舉類型的第2個(gè)值進(jìn)行升序排序
outputs = [[word_list[i[0]], i[1]] for i in sorted_res[-1:-11:-1]]#取出排名前十的原始語(yǔ)料
return outputs
最終測(cè)試某一條目標(biāo)案例,代碼如下所示:
words="原審判決認(rèn)定:被告人于某某與同居女友夏某(被害人,歿年43 歲)因于飲酒問題而多次爭(zhēng)吵。2020年5月27日17時(shí)許,因于再次飲酒,夏在開原市內(nèi)服藥自殺,此舉引發(fā)于的憤怒。于趁夏昏睡之機(jī),用電熱毯電源線勒夏頸部,致夏窒息和缺氧;后又用平底炒勺擊打夏頭面部數(shù)下,用蔬菜刮刀割夏的頸部數(shù)下,被害人夏某經(jīng)搶救無效死亡。經(jīng)法醫(yī)鑒定:夏某系頭右額部、面部遭受反復(fù)鈍器打擊致硬膜下血腫、蛛網(wǎng)膜下腔出血、腦挫傷死亡。案發(fā)后被告人于某某主動(dòng)投案,并對(duì)犯罪事實(shí)供認(rèn)不諱"
outputs=main(words,token2id,idf_dict,tfidf_library)
for i in outputs:
print(str(i[1])+" "+i[0])
實(shí)驗(yàn)結(jié)果,返回了十條與目標(biāo)案例相近的案例與相似度。
本研究使用文本相似度開發(fā)了一種司法案例推薦系統(tǒng),并將相似的文檔聚類在一起。利用AI算法來學(xué)習(xí)過去法律情景的案例信息集,構(gòu)建預(yù)測(cè)模型,推斷未來案情結(jié)果,可以成為法律咨詢方面的一個(gè)有價(jià)值的補(bǔ)充。