劉明潔,李 珅,梁 毅
(1. 北京工業(yè)大學(xué)信息學(xué)部計算機學(xué)院,北京 100124;2. 中國司法大數(shù)據(jù)研究院有限公司,北京 100043)
隨著我國法制進(jìn)程的突飛猛進(jìn),促使法律案件數(shù)量迅速增長。伴隨信息化的普及,法律文本數(shù)字化已經(jīng)成為趨勢。由于數(shù)字化的過程千差萬別,最終導(dǎo)致信息化形成的文本需要糾正字詞的誤識別情形。中文文本校對與英文文本校對十分不同,特別是法律文本,其兼具中文語法特性和領(lǐng)域?qū)I(yè)性。為了能夠精準(zhǔn)的識別文本錯誤,首先要有一套詳盡準(zhǔn)確的詞庫數(shù)據(jù),其既可以是句法分析、語義分析的基礎(chǔ),也是錯誤判斷、糾錯識別的依據(jù)。因此,構(gòu)建詞庫對數(shù)字化法律文本的校對識別十分重要。
近年來,網(wǎng)絡(luò)爬蟲技術(shù)作為自動化獲取信息的得力助手正在迅猛發(fā)展。網(wǎng)絡(luò)爬蟲能夠根據(jù)指定規(guī)則實現(xiàn)自動化的與網(wǎng)絡(luò)應(yīng)用交互,其已經(jīng)被應(yīng)用到了各個領(lǐng)域[1]-[2]。Distil Networks 2018的研究報告指出,在互聯(lián)網(wǎng)中約有40%-60%的流量來自網(wǎng)絡(luò)爬蟲應(yīng)用,充分證明網(wǎng)絡(luò)爬蟲技術(shù)已經(jīng)廣泛地使用。本文采用網(wǎng)絡(luò)爬蟲技術(shù),通過爬取和分析網(wǎng)絡(luò)上大量存在的文本數(shù)據(jù),結(jié)合使用數(shù)據(jù)清洗策略對爬取數(shù)據(jù)進(jìn)行篩選,最終生成專業(yè)性詞庫數(shù)據(jù)供法律文本糾錯使用。
自從20世紀(jì)60年代開始,國外已經(jīng)開啟了對英文文本拼寫校對的研究工作[3]。在研究的最初階段,主要方式還是以建立概率模型和字詞詞典來進(jìn)行校對。近年來,字詞級校對的技術(shù)研究漸趨成熟,但在不限制給定語境情形下的真詞錯誤校對方面仍然很難保證文本校對的可靠性。因此,學(xué)者們紛紛在基于語義的文本校對方向上面展開研究。
Sikl等[4]將校對問題等價于翻譯問題,其把錯誤文本看作源語言,糾正文本作為目標(biāo)語言進(jìn)行文本拼寫檢查。張仰森等[5]提出一種基于語義和知識庫互相融合的錯誤偵測模型,其構(gòu)建了搭配知識庫的三層語義模型并形成了一個基于該知識庫的語義偵測算法用來識別語義級錯誤。陶永才等[6]在詞語搭配知識庫的基礎(chǔ)上,綜合使用互信息和聚合度來計算詞語關(guān)聯(lián)度進(jìn)行詞語搭配關(guān)系的偵測校驗。曹存根等[7]面向非多字詞錯誤提出基于模糊分詞的自動校對方法。
綜合上述工作可以發(fā)現(xiàn),中文文本自動校對方法中均包含知識庫的構(gòu)建準(zhǔn)備工作,因此,知識庫的完善程度對校對結(jié)果有很大的影響。一個充分的知識庫可以使校對結(jié)果獲得較高的正確率,而如何構(gòu)建一個質(zhì)量高得知識庫一直是文本校對研究中不可或缺的一部分。
網(wǎng)絡(luò)爬蟲,也稱作Web信息采集器,它是可以自動執(zhí)行互聯(lián)網(wǎng)頁面下載的計算機自動化運行腳本[8]。網(wǎng)絡(luò)爬蟲程序通常從一個稱為種子的網(wǎng)頁地址集合開始,它首先將這些地址全部放入到待爬行隊列中,然后按序從中取出地址并下載相關(guān)頁面及解析頁面內(nèi)容,提取內(nèi)容信息以及內(nèi)嵌未爬取過的頁面鏈接地址,將新發(fā)現(xiàn)地址存入待爬行隊列中,如此重復(fù)上述過程,直至待爬行隊列為空而終止[9-11]。此過程可以稱為網(wǎng)絡(luò)爬蟲。
在用網(wǎng)絡(luò)爬蟲對頁面信息進(jìn)行采集時,頁面信息的抽取是重要組成部分。如何準(zhǔn)確的將目標(biāo)信息從頁面中提取出來一直都是重要研究課題。陳俊彬[12]指出Web信息抽取策略根據(jù)實現(xiàn)原理的不同可以分為基于自然語言理解方式的信息抽取、基于ontology方式的信息抽取、基于網(wǎng)頁結(jié)構(gòu)特征的信息抽取以及基于統(tǒng)計學(xué)習(xí)的信息抽取。同時,在網(wǎng)絡(luò)信息資源巨量增長的情況下,為了迅速獲取指定領(lǐng)域信息,主題爬蟲越來越多的受到關(guān)注。而影響主題爬蟲抓取效率的關(guān)鍵因素就是爬行策略[13]。史寶明等[14]提出一種基于鏈接模型的相關(guān)判別算法,綜合了待分析網(wǎng)頁地址之間的相關(guān)性分析,提高主題爬蟲的效率。杜曉旭[15]等人將新浪微博內(nèi)容視為主題,利用Python原始的第三方庫進(jìn)行數(shù)據(jù)獲取和分析,使計算更簡潔和明了。
總體來說,爬蟲技術(shù)日趨成熟,但也存在實現(xiàn)復(fù)雜的一面,在具體的設(shè)計實現(xiàn)中應(yīng)以具體問題為導(dǎo)向,融合多種技術(shù)策略的優(yōu)勢,以便快速高效的完成信息獲取和解析。
本文設(shè)計的方案為,通過網(wǎng)頁地址提取網(wǎng)頁內(nèi)容,根據(jù)數(shù)據(jù)屬性篩選頁面信息,既包括了標(biāo)題和內(nèi)容,同時還包括含有該頁面內(nèi)嵌其他鏈接地址的集合,以此來全面爬取與該頁面有關(guān)的各種信息。在獲取信息后,對數(shù)據(jù)進(jìn)行清洗篩選以最終獲得專業(yè)性詞庫數(shù)據(jù)。
本文中設(shè)計的爬蟲以普通爬蟲為基礎(chǔ),同時在功能上進(jìn)行了適當(dāng)擴充。在整個爬蟲處理過程中,增加主題確立、種子優(yōu)化、內(nèi)容排序等功能模塊。其中,主題確立模塊用于選取主題,以便爬蟲程序更具有針對性的析取內(nèi)容;種子優(yōu)化模塊用于生成面向指定主題的優(yōu)秀站點,以便爬蟲程序能順利獲取內(nèi)容;內(nèi)容排序是對頁面內(nèi)容的綜合處理,此模塊計算出每個頁面的權(quán)重價值,并與主題內(nèi)容進(jìn)行比較形成全面的評價排序結(jié)果,供程序篩選選取用。下圖是爬蟲的系統(tǒng)組成圖。
圖1 爬蟲系統(tǒng)示意圖Fig.1 Web crawler image
主題確立模塊的主要任務(wù)就是對主題的確立,本文采用詞語頻次權(quán)重計算法來確定主題。主要方法為通過統(tǒng)計指定主題下不同詞匯出現(xiàn)的頻次,按照頻次的數(shù)值篩選關(guān)鍵詞并設(shè)定權(quán)重形成主題匹配詞庫,后續(xù)進(jìn)行網(wǎng)頁爬取時將提取的網(wǎng)頁關(guān)鍵詞與匹配詞庫比對,結(jié)合權(quán)重數(shù)值的計算,從而得到網(wǎng)頁主題。
對于權(quán)值的設(shè)置有兩種方法:手工設(shè)置和計算賦值。計算賦值是指給定一個與主題有關(guān)的網(wǎng)頁集合,由程序自動提取這些網(wǎng)頁里面共同的特征,并根據(jù)頻率確定權(quán)值;手工設(shè)置則是依據(jù)人工經(jīng)驗進(jìn)行,設(shè)置需要分析和提取的主題關(guān)鍵詞并設(shè)置權(quán)值。
在執(zhí)行爬蟲程序抓取網(wǎng)頁數(shù)據(jù)時,為了節(jié)省計算資源和耗時成本,應(yīng)避免互聯(lián)網(wǎng)網(wǎng)址的大規(guī)模爬取,反之應(yīng)針對性的選取質(zhì)量較高、內(nèi)容較全的網(wǎng)頁進(jìn)行內(nèi)容提取。這樣既可提高效率,也可提高內(nèi)容質(zhì)量。本文的做法是采用元搜索引擎,在其搜索結(jié)果中選取與主題相匹配的高質(zhì)量地址作為種子集合供后續(xù)爬蟲程序使用。
排序模塊的作用是對網(wǎng)頁的重要程度進(jìn)行排序,將重要程度指數(shù)高的網(wǎng)頁靠前排序。對網(wǎng)頁排序的影響因素有很多,在對網(wǎng)頁計算排序時,可以綜合考慮主題相關(guān)度和鏈接分析兩個因素,而鏈接分析是以PageRank算法為基礎(chǔ)的。因此,在計算時可對主題相關(guān)度和PageRank賦予不同的權(quán)重,網(wǎng)頁的重要程度可以表示為如下形式:
其中 cos是通過主題相關(guān)度計算得出的數(shù)值,R(u)是利用PageRank算法計算得到的可用于頁面排序的網(wǎng)頁權(quán)重值。
系統(tǒng)的流程示意如圖2所示。主要功能如下:
圖2 爬蟲系統(tǒng)流程示意圖Fig.2 Web crawler flow diagram
地址管理器,其存放已訪問過的頁面地址和待訪問頁面地址,設(shè)計此管理器的目的為防止陷入重復(fù)訪問的循環(huán)中,管理器可以添加新地址。
下載器,負(fù)責(zé)將指定地址的頁面下載到本地供后續(xù)解析提卻使用。
頁面解析器,負(fù)責(zé)提取網(wǎng)頁中的內(nèi)容數(shù)據(jù)和其他鏈接網(wǎng)址。
內(nèi)容輸出器,將最終的結(jié)果輸出,可以提供網(wǎng)頁形式輸出或數(shù)據(jù)庫形式存儲。
為了能夠快速處理鏈接和計算,需要使用地址隊列,每個隊列統(tǒng)一保存具有處理狀態(tài)的地址:
等待隊列,在這個隊列中存儲的都是等待爬蟲處理的頁面地址,新爬蟲分析發(fā)現(xiàn)的地址也放入在此隊列中。
處理隊列,在這個隊列中,程序開始處理地址對應(yīng)的網(wǎng)頁并分析內(nèi)容。在此地址處理完成后,將地址放入完成隊列中。處理完成的狀態(tài)包含成功、失敗兩類。
完成隊列,在這個隊列中存放的是已經(jīng)完成提取信息的地址,包含了成功獲取數(shù)據(jù)的地址和失敗解析數(shù)據(jù)的地址。
在根據(jù)地址爬取網(wǎng)頁數(shù)據(jù)時,首先需要檢查網(wǎng)頁內(nèi)容。如果此網(wǎng)頁是一個網(wǎng)絡(luò)資源,即類似文件下載鏈接等,則可以直接忽略。檢查完成網(wǎng)頁的合理性后,即可訪問網(wǎng)頁。本文使用Python第三方組件庫 urllib來獲取網(wǎng)頁并利用返回狀態(tài)碼判斷是否訪問成功。在成功獲取了網(wǎng)頁后,通過網(wǎng)頁標(biāo)簽識別技術(shù),結(jié)合Python第三方庫BeatifulSoup獲取想要得到的數(shù)據(jù),可識別標(biāo)簽有“
”、“結(jié)合前述章節(jié),本文采用PageRank算法并結(jié)合主題相關(guān)度計算做了適當(dāng)改進(jìn)。下面對算法進(jìn)行簡要說明。
PageRank算法的思想是將網(wǎng)頁的權(quán)重數(shù)值看作一個由網(wǎng)絡(luò)的超鏈接結(jié)構(gòu)所產(chǎn)生的網(wǎng)頁重要性等級。所有網(wǎng)頁的權(quán)重值都可以根據(jù)指向它的網(wǎng)頁的權(quán)重值和超鏈接數(shù)來計算,即所有鏈接到它的網(wǎng)頁的權(quán)重值除以各自向外的鏈接數(shù)的商進(jìn)行求和[16]。
在本文中,PageRank算法可以簡單描述如下:設(shè)h是要進(jìn)行計算的網(wǎng)頁,vi是指向h的網(wǎng)頁,C(vi)是網(wǎng)頁 vi的外指向網(wǎng)頁鏈接數(shù),b是權(quán)重規(guī)范化因子。因此網(wǎng)頁h的PageRank值計算公式表示為:
表1 系統(tǒng)運行環(huán)境Tab.1 System operation environment
爬蟲系統(tǒng)的部署環(huán)境如表1所述。
下圖展示了爬蟲運行結(jié)果示例,如圖3所示,圖 3(a)中顯示了美國法律主題有關(guān)的爬蟲聚合數(shù)據(jù)。圖 3(b)種顯示了在使用爬蟲程序獲得充分的數(shù)據(jù)后,使用數(shù)據(jù)清洗策略將重復(fù)性數(shù)據(jù)、不合主題數(shù)據(jù)進(jìn)行篩選后獲得的專業(yè)詞庫數(shù)據(jù)集。
圖3 爬蟲結(jié)果示意圖Fig.3 Web crawler diagram
本文敘述了基于爬蟲的法律文本糾錯詞庫構(gòu)建方法。提出了融合主題構(gòu)建、種子優(yōu)化和內(nèi)容排序等模塊于一體的爬蟲系統(tǒng),并對系統(tǒng)在線上進(jìn)行了試運行。運行結(jié)果顯示,本爬蟲設(shè)計方案可行,在指定領(lǐng)域內(nèi)進(jìn)行面向主題的信息采集,可以為相關(guān)詞庫的構(gòu)建提供大量素材。