張容禎,孟小艷,劉瀟瀟,汪 洋
(新疆農(nóng)業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院,新疆 烏魯木齊 830052)
我國是農(nóng)業(yè)大國,畜牧業(yè)是我國農(nóng)業(yè)的一個(gè)重要支柱。近年來,我國也在積極推動(dòng)農(nóng)業(yè)農(nóng)村信息化建設(shè),相繼出臺(tái)了《“十四五”國家信息化規(guī)劃》《數(shù)字鄉(xiāng)村發(fā)展行動(dòng)計(jì)劃(2022—2025 年)》等文件,將智慧畜牧業(yè)作為“十四五”時(shí)期的重點(diǎn)發(fā)展任務(wù)之一,推進(jìn)智慧牧場(chǎng)建設(shè),強(qiáng)化科技創(chuàng)新[1]。加強(qiáng)畜牧業(yè)的信息化建設(shè),可以為我國的畜牧業(yè)現(xiàn)代化提供強(qiáng)有力的支撐。但是,不可否認(rèn)的是,在目前我國的信息化建設(shè)中,仍然存在著網(wǎng)絡(luò)基礎(chǔ)設(shè)施不足、創(chuàng)新能力不強(qiáng)、有效數(shù)據(jù)不足的問題。
目前,我國在家畜品種選育、獸藥管理和動(dòng)物疫病監(jiān)測(cè)等領(lǐng)域已經(jīng)開展了信息化建設(shè)[2],但是畜牧業(yè)的信息化建設(shè)需要覆蓋畜牧業(yè)的各個(gè)方面,而法律法規(guī)作為一個(gè)權(quán)力運(yùn)行以及國家意志的表現(xiàn),可以對(duì)參與畜牧業(yè)各類主體的行為起到導(dǎo)向和指導(dǎo)作用[3],畜牧業(yè)相關(guān)法律法規(guī)對(duì)規(guī)范畜牧業(yè)中的繁育、飼養(yǎng)、經(jīng)營等行為更有著重要作用,在我國的生態(tài)文明建設(shè)中的地位顯而易見。知識(shí)圖譜[4]是Google 在2012 年提出的一項(xiàng)認(rèn)知智能領(lǐng)域的技術(shù),它可以使知識(shí)組織得更加有序,從而讓人們更加迅速、準(zhǔn)確地得到自己想要的信息。它是一種多邊的關(guān)系圖,由結(jié)點(diǎn)和邊構(gòu)成,其中結(jié)點(diǎn)表示實(shí)體,邊表示實(shí)體之間的關(guān)系[5]。由于其較強(qiáng)的關(guān)聯(lián)性能,目前已經(jīng)在農(nóng)學(xué)、林業(yè)和醫(yī)療等領(lǐng)域得到廣泛應(yīng)用,但畜牧業(yè)相關(guān)法律法規(guī)在知識(shí)圖譜領(lǐng)域的應(yīng)用仍處于空白階段,因此,該研究使用知識(shí)圖譜技術(shù)對(duì)畜牧業(yè)法律法規(guī)領(lǐng)域進(jìn)行初步的探索,以便于畜牧業(yè)相關(guān)從業(yè)人員快速查找和了解相關(guān)法律法規(guī)。
知識(shí)圖譜作為目前自然語言處理技術(shù)的最重要技術(shù)之一,最初由Google 提出用來增強(qiáng)搜索引擎,隨后其被認(rèn)為是包含實(shí)體、概念和語義關(guān)系的大規(guī)模的語義網(wǎng)絡(luò)。根據(jù)知識(shí)圖譜的適用范圍可以分為通用知識(shí)圖譜和領(lǐng)域知識(shí)圖譜[6]。通用知識(shí)圖譜往往具有粒度粗、覆蓋廣和體量大等特點(diǎn),其中比較著名的有YAGO[7]、DBPedia[8]和Microsoft Concept Graph[9]等。YAGO 將WordNet[10]和維基百科的知識(shí)進(jìn)行結(jié)合,形成包括了人物、城市、國家、電影和組織的大規(guī)模知識(shí)庫,并且擁有的實(shí)體超過1 000 萬個(gè),關(guān)系三元組超過4.5 億個(gè)。DBpedia 是通過使用特定的規(guī)則從維基百科信息中抽取結(jié)構(gòu)化信息構(gòu)建而成的,大約含有500萬個(gè)實(shí)體,580 萬個(gè)三元組。Microsoft Concept Graph 是由微軟所創(chuàng)建的一個(gè)大型的知識(shí)圖譜,它的數(shù)據(jù)主要來源于數(shù)以億計(jì)的網(wǎng)頁和所積累的搜索日志,可以提高自然語言處理場(chǎng)景下的準(zhǔn)確性,并且已經(jīng)在其廣告、搜索和推薦等領(lǐng)域得到應(yīng)用。領(lǐng)域知識(shí)圖譜通常具有粒度細(xì)、精確度高和專業(yè)性強(qiáng)的優(yōu)點(diǎn)[11]。在農(nóng)業(yè)領(lǐng)域,周輝[12]通過爬取農(nóng)業(yè)相關(guān)網(wǎng)站,構(gòu)建包含作物、病害、蟲害和農(nóng)藥等實(shí)體的農(nóng)業(yè)知識(shí)圖譜;在醫(yī)學(xué)領(lǐng)域,許思特等[13]構(gòu)建了包含解剖部位、手術(shù)、藥物和影像檢查等實(shí)體的中文電子病歷知識(shí)圖譜,對(duì)病歷審查效率的提高提供了較大的幫助;在生態(tài)環(huán)境領(lǐng)域,王天一等[14]使用文獻(xiàn)文本數(shù)據(jù)作為數(shù)據(jù)源,通過深度學(xué)習(xí)的方法來進(jìn)行自動(dòng)抽取領(lǐng)域?qū)嶓w和關(guān)系,最終實(shí)現(xiàn)了包含環(huán)境、量化指標(biāo)、污染物和生物群落等實(shí)體的生態(tài)環(huán)境領(lǐng)域的知識(shí)圖譜。胡杰等[15]以汽車售后業(yè)務(wù)數(shù)據(jù)為來源,通過在傳統(tǒng)構(gòu)建流程上加上文本預(yù)分類和實(shí)體重組的方式構(gòu)建了汽車故障診斷領(lǐng)域的知識(shí)圖譜。
一般領(lǐng)域知識(shí)圖譜所覆蓋的領(lǐng)域都比較特定,知識(shí)量相對(duì)于通用知識(shí)圖譜較少,但其領(lǐng)域知識(shí)的深度更深,對(duì)知識(shí)質(zhì)量的要求也比較高。在該文中主要圍繞畜牧業(yè)相關(guān)法律法規(guī)領(lǐng)域的實(shí)體和實(shí)體間的關(guān)系來構(gòu)建畜牧業(yè)法律法規(guī)知識(shí)圖譜,并最終使用Neo4j 圖數(shù)據(jù)庫對(duì)知識(shí)圖譜進(jìn)行存儲(chǔ)和可視化。在該文中采用自頂向下的方式來構(gòu)建知識(shí)圖譜,構(gòu)建的流程如圖1 所示。
圖1 知識(shí)圖譜構(gòu)建流程圖
2.1.1 數(shù)據(jù)源選擇
在構(gòu)建知識(shí)圖譜的過程中,數(shù)據(jù)源的選擇是十分重要的,數(shù)據(jù)源可以直接影響到所構(gòu)建知識(shí)圖譜的質(zhì)量。該文綜合考慮了國家法律法規(guī)數(shù)據(jù)庫、北大法寶、北大法意、威科先行和中國法律知識(shí)資源總庫中的法律資源,并將北大法寶作為主要的數(shù)據(jù)來源。
國家法律法規(guī)數(shù)據(jù)庫[16]是在2021 年2 月21日開通,由全國人民代表大會(huì)建立并進(jìn)行維護(hù),收錄的內(nèi)容包括憲法、法律、行政法規(guī)和監(jiān)察法規(guī)司法解釋等,對(duì)法律體系最主要的內(nèi)容進(jìn)行了覆蓋,目前已初步建設(shè)成為全民學(xué)法用法的平臺(tái),同時(shí)也是國家法律法規(guī)體系和信息化工作的結(jié)合體。
北大法寶是一個(gè)融合了數(shù)字科技與服務(wù)創(chuàng)新的法律信息智能服務(wù)平臺(tái)[17],創(chuàng)建于1999 年,是當(dāng)前國內(nèi)用戶最多、更新速度最快的平臺(tái)之一,提供了智慧立法、智慧執(zhí)法和智慧司法等多項(xiàng)功能,主要是由北京大學(xué)法學(xué)院和北大英華科技有限公司所創(chuàng)辦。目前北大法寶的法律法規(guī)數(shù)據(jù)庫包含了中央法規(guī)424 630 篇、地方法規(guī)3 114 843 篇、立法資料21 671 篇,以及立法計(jì)劃2 407 篇。
北大法意[18]是由北京法意網(wǎng)科技有限公司與北京大學(xué)實(shí)證法務(wù)研究所在2001 年合作開發(fā)的,其內(nèi)容覆蓋了國內(nèi)外與法律相關(guān)的各個(gè)方面的參考資料,包含有法院案例庫、法律法規(guī)庫、法學(xué)論著庫、中文合同范本庫、法學(xué)詞典庫和WTO 法律等17 個(gè)子數(shù)據(jù)庫。
威科先行法律信息庫[19]是由荷蘭威科集團(tuán)所推出的集法律、案例、在線問答和法律速遞等多個(gè)模塊為一體的法律信息網(wǎng)站,收錄了我國自1949年以來的法律法規(guī),其中還包括征求意見稿、官方法規(guī)解釋和草案,同時(shí)還收錄了超過1.33 億個(gè)法律案例,并在法律案例中提供對(duì)應(yīng)法規(guī)的鏈接。
中國法律知識(shí)資源總庫[20]是由清華大學(xué)發(fā)起、中國知網(wǎng)承建,于2008 年發(fā)布,對(duì)涉法的信息進(jìn)行了全面、科學(xué)、深度整合,融合了知識(shí)關(guān)聯(lián)、知識(shí)評(píng)價(jià)和大數(shù)據(jù)分析等技術(shù),涵蓋了法律法規(guī)、司法解釋、典型案例、期刊、學(xué)位論文和會(huì)議論文等類型的法律知識(shí)資源,尤其是其打造的法規(guī)-案例-論文三者結(jié)合的資源組合方式廣受用戶的認(rèn)可。
2.1.2 數(shù)據(jù)采集
①數(shù)據(jù)分析選取。該文選取的主要是畜牧業(yè)相關(guān)的法律法規(guī),鑒于沒有網(wǎng)站總結(jié)相關(guān)的法律法規(guī),首先把北大法寶中“法規(guī)類別”中“牧業(yè)”下的“牧業(yè)管理”“牧場(chǎng)與牧業(yè)企業(yè)”“草原管理”“獸醫(yī)獸藥”“畜產(chǎn)品”類別的法律法規(guī)進(jìn)行收集,但是收集的法律法規(guī)可能會(huì)含有一些通知、意見、批復(fù)和公告等非法律法規(guī),需要對(duì)這些進(jìn)行清除。
經(jīng)觀察分析發(fā)現(xiàn)該類別并未完全包含所有畜牧業(yè)相關(guān)的法律法規(guī),故參考一些地市政府網(wǎng)站以及畜牧網(wǎng)站所公布的部分畜牧業(yè)行業(yè)法律法規(guī),確定了畜牧業(yè)相關(guān)法律法規(guī)名稱所包含主要的關(guān)鍵字為“動(dòng)物防疫”“畜牧業(yè)”“畜禽屠宰”“草原”“獸藥”“飼料”等,然后使用上文中所提及的幾大法律法規(guī)網(wǎng)站檢索這些關(guān)鍵字,同時(shí)也將搜索出來的結(jié)果中含有通知、意見和批復(fù)等非法律法規(guī)去除。
最后將兩種途徑收集的畜牧業(yè)法律法規(guī)進(jìn)行融合,最終獲得了287 個(gè)畜牧業(yè)相關(guān)的法律法規(guī),按照法律法規(guī)是否含有章進(jìn)行區(qū)分,其中含有章的有211 個(gè)法律法規(guī),共1 470 章,10 457 條,不含章的有76 個(gè),共2 145 條。
除法律法規(guī)的章和法條外,考慮到法律法規(guī)的制定機(jī)關(guān)、時(shí)效性、效力位階、法規(guī)類別、公布日期、施行日期和年份對(duì)后續(xù)法律法規(guī)的查詢也比較重要,因此也需要獲取這些信息。
②數(shù)據(jù)爬取。對(duì)于法律法規(guī)中數(shù)據(jù)的獲取,首先使用爬蟲技術(shù)獲取對(duì)應(yīng)的法律法規(guī)。目前主流的爬蟲技術(shù)為Scapy 和Selenium。Scapy 是一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包處理工具,可以模擬一系列的報(bào)文并進(jìn)行發(fā)送,對(duì)網(wǎng)站返回的數(shù)據(jù)進(jìn)行捕獲,但爬取動(dòng)態(tài)加載數(shù)據(jù)和具有反爬機(jī)制的網(wǎng)站存在困難。Selenium 是目前使用最廣泛的Web 瀏覽器的界面自動(dòng)化測(cè)試框架,它是通過對(duì)瀏覽器的驅(qū)動(dòng)來實(shí)現(xiàn)對(duì)對(duì)象元素的控制,運(yùn)行過程是可視化地模擬人的一系列操作過程,因此可以避免被反爬蟲策略檢測(cè)到,同時(shí)也可以成功地爬取動(dòng)態(tài)頁面。考慮到Selenium 的使用更加方便,學(xué)習(xí)成本更低,因此在該文主要使用python+Selenium+Mozilla Firefox的方案來進(jìn)行獲取數(shù)據(jù),具體實(shí)驗(yàn)采集環(huán)境如表1 所示。
表1 數(shù)據(jù)采集實(shí)驗(yàn)環(huán)境配置
以北大法寶法律信息網(wǎng)站為例獲取相關(guān)法律法規(guī),使用selenium 的get()方法進(jìn)入到對(duì)應(yīng)的網(wǎng)址,并使用implicitly_wait()方法進(jìn)行隱性等待30秒使網(wǎng)頁加載出來,隨后利用selenium 的find_element()方法的XPath 定位找到“牧業(yè)”元素并使用click()方法點(diǎn)擊,同時(shí)也使用休眠方法等待網(wǎng)頁完全加載出來。隨后利用selenium 的find_element()找到“下載”按鈕進(jìn)行點(diǎn)擊下載。
對(duì)于所獲取的畜牧業(yè)相關(guān)法律法規(guī)的word文檔,為使數(shù)據(jù)變得更加適合后續(xù)的提取工作,需要去除文檔中的超鏈接、“法寶聯(lián)想”以及文檔后的“背景資料”和“引用本篇的法規(guī)案例 論文”等文字。首先針對(duì)文中的超鏈接進(jìn)行刪除。刪除文中超鏈接所采用的方法是使用python 中的win32com 模塊,首先使用Hyperlinks 的Count()方法獲取文檔中所有超鏈接的總數(shù),然后使用win32com 中的Hyperlinks 的Delete()方法依次刪除這些超鏈接,并保留超鏈接的文字。
由于對(duì)word 文字的增刪改操作使用Python中的docx 模塊更為快捷方便,而docx 模塊僅能操作docx 格式的word 文檔,之前所獲取的文檔為doc 格式的文檔,因此需要使用win32com 模塊中的SaveAs()方法將文檔重新保存為docx 格式的文檔。將doc 格式的文檔轉(zhuǎn)換為docx 格式的文檔后,用Python 中的docx 模塊解析文檔,對(duì)文檔進(jìn)行逐行掃描,對(duì)于文中的“法寶聯(lián)想”,當(dāng)掃描到此關(guān)鍵字時(shí),將此行刪除;而當(dāng)文后的“背景資料”“本篇引用的法規(guī)”“引用本篇的法規(guī)案例 論文”被掃描到時(shí),記錄此行所在的索引,直接刪除此行后的所有內(nèi)容。
本體是一種形式化的知識(shí)表示方式,通過對(duì)畜牧業(yè)法律法規(guī)領(lǐng)域知識(shí)本體的構(gòu)建,可以明確該領(lǐng)域內(nèi)概念之間的關(guān)系。更加清晰明確地描述該領(lǐng)域的知識(shí)。通過對(duì)畜牧業(yè)法律法規(guī)領(lǐng)域的本體的定義,共定義了“法律法規(guī)”“發(fā)布部門”“時(shí)效性”“效力級(jí)別”“法規(guī)類別”“年份”“章”“條”等共10 種類型的實(shí)體,具體的實(shí)體設(shè)計(jì)如表2 所示。
表2 畜牧業(yè)法律法規(guī)實(shí)體表
在確定實(shí)體信息后,需要確定實(shí)體之間的關(guān)聯(lián)關(guān)系進(jìn)而形成實(shí)體關(guān)系三元組,經(jīng)綜合考慮已有實(shí)體和未來該知識(shí)圖譜所使用的場(chǎng)景,定義了“畜牧業(yè)法律法規(guī)-法律法規(guī)的類別關(guān)系”“畜牧業(yè)法律法規(guī)-法律法規(guī)的時(shí)效性關(guān)系”“畜牧業(yè)法律法規(guī)-法律法規(guī)的發(fā)布部門關(guān)系”和“畜牧業(yè)法律法規(guī)-法律法規(guī)的效力級(jí)別關(guān)系”等共10 種關(guān)系。具體的關(guān)系設(shè)計(jì)如表3 所示。
表3 畜牧業(yè)法律法規(guī)實(shí)體關(guān)系表
知識(shí)抽取主要包括實(shí)體抽取和關(guān)系抽取。在實(shí)體抽取中,由于在該文中收集的法律法規(guī)文檔存在著一定的規(guī)律性,因此在該文中采用規(guī)則模板的方式抽取實(shí)體。文檔按照格式可以分為3 種:①目錄和正文中都存在章的文檔;②目錄中不存在章但法律法規(guī)正文中存在章的文檔;③不存在章的文檔。首先對(duì)于目錄和正文中都存在章的法律法規(guī)文檔,由于章的名稱在章目錄和每章的開始都存在,但在實(shí)際存取的過程中僅存取一次,因此該類法律法規(guī)需跳過目錄中的章。隨后再采用查找關(guān)鍵字的方法來進(jìn)行抽?。欢鴮?duì)于目錄中不存在章但法律法規(guī)正文中存在章的文檔則可以直接提取文檔中的章和法條內(nèi)容;對(duì)于不存在章的法律法規(guī)文檔則可以直接抽取法律法規(guī)的法條內(nèi)容。
在完成法律法規(guī)中的章和法條實(shí)體抽取后也對(duì)法律法規(guī)的名稱、制定機(jī)關(guān)、公布日期、施行日期、時(shí)效性和效力位階等實(shí)體進(jìn)行了抽取。在進(jìn)行抽取時(shí),首先逐行掃描全文,得到這些關(guān)鍵字所在的索引行,并將索引行的行號(hào)記錄在了數(shù)組中,隨后提取索引行所對(duì)應(yīng)的屬性,最終得到法律法規(guī)的屬性信息。
針對(duì)按規(guī)則提取到的實(shí)體,為方便存儲(chǔ),先將其暫儲(chǔ)到MySQL 數(shù)據(jù)庫中。存儲(chǔ)時(shí)由于法律法規(guī)存在是否含有章兩種形式的法律法規(guī)。因此在存儲(chǔ)時(shí)也分為了兩種形式:含有章的法律法規(guī)的存儲(chǔ)方式為“法律法規(guī)-章-條”,不含章的法律法規(guī)的存儲(chǔ)形式為“法律法規(guī)-條”。
具體的實(shí)體抽取結(jié)果的統(tǒng)計(jì)如表4 所示。
表4 畜牧業(yè)法律法規(guī)實(shí)體數(shù)量表
畜牧業(yè)法律法規(guī)與發(fā)布部門、時(shí)效性和效力級(jí)別等實(shí)體之間的關(guān)系顯而易見,也可以使用規(guī)則的方法進(jìn)行抽取,最終按規(guī)則抽取出的關(guān)系的數(shù)量如表5 所示。
表5 畜牧業(yè)法律法規(guī)關(guān)系表
在抽取出來實(shí)體關(guān)系后,需將抽取出來的知識(shí)寫入數(shù)據(jù)庫持久化,為進(jìn)一步的知識(shí)查詢做鋪墊。畜牧業(yè)相關(guān)法律法規(guī)數(shù)據(jù)的各個(gè)實(shí)體之間都存在著一對(duì)多和多對(duì)多的復(fù)雜關(guān)系。但一般的關(guān)系型數(shù)據(jù)庫通常是使用固定的形式存儲(chǔ)到表中,這種存儲(chǔ)與查詢的方式不僅成本高、效率低,而且對(duì)后續(xù)增刪改的動(dòng)態(tài)管理也極其不便。相對(duì)于關(guān)系型的數(shù)據(jù)庫,非關(guān)系型的圖數(shù)據(jù)庫更適用于知識(shí)圖譜的存儲(chǔ)。Neo4j 是一款由java 語言開發(fā)的高性能的NoSQL 圖數(shù)據(jù)庫,由于它的高性能、輕量級(jí)和支持多操作系統(tǒng)等優(yōu)點(diǎn),已經(jīng)成為目前最受歡迎的圖數(shù)據(jù)庫之一,因此在該文中采用Neo4j圖數(shù)據(jù)庫作為存儲(chǔ)畜牧業(yè)法律法規(guī)知識(shí)圖譜的數(shù)據(jù)庫。
由于在數(shù)據(jù)處理階段,該文將清洗過的數(shù)據(jù)存放到了MySQL 數(shù)據(jù)庫中,因此,現(xiàn)需將MySQL中的數(shù)據(jù)轉(zhuǎn)為三元組存儲(chǔ)到Neo4j 圖數(shù)據(jù)庫中,使用python 語言操作來完成轉(zhuǎn)換,利用python 庫中的SQLAlchemy 庫來操作MySQL 數(shù)據(jù)庫,同時(shí)利用python 庫中的py2neo 庫來操作Neo4j 數(shù)據(jù)庫。使用python 語言循環(huán)使用CQL 的CREATE 語句將數(shù)據(jù)插入到Neo4j 數(shù)據(jù)庫中,最終構(gòu)造出畜牧業(yè)法律法規(guī)知識(shí)圖譜,其中共包含實(shí)體數(shù)量14 936個(gè),關(guān)系數(shù)量16 339 個(gè)。
知識(shí)圖譜作為一種新興的知識(shí)組織技術(shù),已經(jīng)在許多行業(yè)展示了它的優(yōu)勢(shì),但其在畜牧業(yè)領(lǐng)域的應(yīng)用還不成熟,存在著專業(yè)性強(qiáng)、領(lǐng)域數(shù)據(jù)零散等問題。該文提出一種構(gòu)建畜牧業(yè)法律法規(guī)知識(shí)圖譜的方法,以幾大權(quán)威法律法規(guī)信息網(wǎng)站為數(shù)據(jù)源進(jìn)行畜牧業(yè)相關(guān)法律法規(guī)收集,并經(jīng)數(shù)據(jù)預(yù)處理、本體構(gòu)建、實(shí)體關(guān)系抽取和知識(shí)存儲(chǔ)等步驟將碎片化的畜牧業(yè)法律法規(guī)知識(shí)構(gòu)建成知識(shí)圖譜,為建立更加全面豐富的畜牧業(yè)知識(shí)圖譜奠定了基礎(chǔ)。在未來的研究中,可以針對(duì)畜牧業(yè)法律法規(guī)中法律條款的內(nèi)容抽取實(shí)體和關(guān)系以構(gòu)建粒度更加精細(xì)的知識(shí)圖譜,更好地為未來畜牧業(yè)相關(guān)的智能檢索和智能問答系統(tǒng)提供知識(shí)庫支撐。