宋 偉,張游杰
1(太原科技大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,太原 030024)
2(中電科華北網(wǎng)絡(luò)信息安全有限公司,太原 030032)
隨著大數(shù)據(jù)時代的來臨,數(shù)據(jù)的種類多種多樣,數(shù)據(jù)規(guī)模日益增大,傳統(tǒng)的數(shù)據(jù)管理模式和類SQL 語句查詢受到一定的限制.知識圖譜(Knowledge Graph,KG)作為一種新的知識表達(dá)方式及數(shù)據(jù)管理模式,旨在描述客觀世界的概念、實(shí)體、事件之間的關(guān)系,其基本的組成單位是“頭實(shí)體-關(guān)系-尾實(shí)體”三元組,實(shí)體包含屬性鍵值對,實(shí)體之間通過關(guān)系進(jìn)行描述,形成網(wǎng)狀的結(jié)構(gòu).網(wǎng)絡(luò)中的節(jié)點(diǎn)代表物理世界中的實(shí)體或概念,實(shí)體之間的各種語義關(guān)系構(gòu)成網(wǎng)絡(luò)中的邊.
知識圖譜標(biāo)準(zhǔn)化白皮書中[1]中明確指出大數(shù)據(jù)時代,應(yīng)對碎片化的數(shù)據(jù)進(jìn)行整合,消除“信息孤島”和“數(shù)據(jù)煙囪”,將數(shù)據(jù)轉(zhuǎn)為可供決策使用的知識和智慧.在環(huán)境問題上,各方數(shù)據(jù)孤立的現(xiàn)象尤為明顯,環(huán)境空氣質(zhì)量、水質(zhì)質(zhì)量、環(huán)保工作等數(shù)據(jù)存在與不同的機(jī)構(gòu)之間,沒有一個統(tǒng)一的對環(huán)境情況的描述.
本文針對上述問題進(jìn)行了研究,介紹了環(huán)境知識圖譜的一般構(gòu)建過程,實(shí)現(xiàn)了環(huán)境信息知識圖譜的構(gòu)建,將不同來源的異構(gòu)環(huán)境信息進(jìn)行了融合.
目前國際上較知名的知識圖譜為DBpedia,是一個以維基百科為數(shù)據(jù)源的通用知識圖譜,用以增強(qiáng)維基百科的搜索功能[2].與DBpedia 對應(yīng)的為CN-DBpedia,CN-DBpedia 是由復(fù)旦大學(xué)知識工廠肖仰華等從中文百科類網(wǎng)站(如百度百科、互動百科、中文維基百科等)的純文本頁面中提取而來的通用知識圖譜,其中包含900 余萬的三元組關(guān)系[3].上述知識圖譜是從各類網(wǎng)頁上采集而來的通用圖譜,針對特定的領(lǐng)域,通用知識圖譜沒有很好的表現(xiàn).王雪芹等以1997-2017年的CNKI 為數(shù)據(jù)源,構(gòu)建了針對礦區(qū)生態(tài)環(huán)境研究知識的專業(yè)圖譜[4].孫強(qiáng)強(qiáng)等提出建立基于知識圖譜環(huán)境科學(xué)知識挖掘,是未來環(huán)境治理研究的發(fā)展方向[5].環(huán)境相關(guān)的知識圖譜集中在環(huán)境治理方法圖譜,對環(huán)境情況的表現(xiàn)不足.
為知識圖譜的應(yīng)用是以知識圖譜的構(gòu)建為基礎(chǔ)的,其中構(gòu)建知識圖譜的主要過程包括實(shí)體抽取和實(shí)體間關(guān)系的建立.知識圖譜在邏輯上分為模式層和數(shù)據(jù)層,可視為一張圖G,由模式圖Gs、數(shù)據(jù)圖Gd以及Gs和Gd之間的關(guān)系R組成,即G=<Gs,Gd,R>.模式層基于數(shù)據(jù)層之上,是知識圖譜的核心,其表現(xiàn)形式為:實(shí)體-關(guān)系-實(shí)體,關(guān)系-屬性-屬性值.數(shù)據(jù)層由一系列事實(shí)組成,如:AQI-中文名-空氣質(zhì)量指數(shù).
知識圖譜的一般構(gòu)建方法有自頂向下構(gòu)建(topdown)和自底向上構(gòu)建(bottom-up)兩種[6].自頂向下是首先為圖譜定義好全局本體,即從數(shù)據(jù)源中先提取本體和模式信息,再將實(shí)體加入圖譜中.而自底向上方法對實(shí)體進(jìn)行歸納,提取出置信度高的加入圖譜中.這兩種方法不是孤立進(jìn)行的,可以兩者交替結(jié)合.本研究在構(gòu)建知識圖譜時采用兩種方法的結(jié)合,先通過一個通用知識圖譜構(gòu)建本體庫,再自底向上提取數(shù)據(jù)擴(kuò)展知識圖譜.
多數(shù)據(jù)源融合構(gòu)建知識圖譜,如圖1所示.由不同來源、不同結(jié)構(gòu)的數(shù)據(jù),如結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),通過關(guān)系抽取、屬性抽取、實(shí)體消歧,轉(zhuǎn)化為符合圖譜構(gòu)造的三元組形式.最后編寫相應(yīng)的展示平臺,對知識圖譜提供一個外部展示及交互接口.
圖1 多數(shù)據(jù)源知識圖譜構(gòu)建過程
用于建立知識圖譜的數(shù)據(jù)源可以是結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),現(xiàn)有的一些通用知識圖譜也可以作為數(shù)據(jù)的來源[7,8].
1)結(jié)構(gòu)化數(shù)據(jù).當(dāng)前空氣質(zhì)量數(shù)據(jù)庫數(shù)據(jù).
2)半結(jié)構(gòu)化數(shù)據(jù).主要是獲取歷史天氣情況的JSON 格式數(shù)據(jù)、歷史水質(zhì)情況的表格格式數(shù)據(jù).
3)非結(jié)構(gòu)化數(shù)據(jù).主要是文本數(shù)據(jù),如各地環(huán)保廳網(wǎng)站、環(huán)保局網(wǎng)站的工作動態(tài)文本,和環(huán)境介紹的描述文件等.
4)通用知識圖譜.使用思知(OwnThink)通用知識圖譜,包含了2500 萬實(shí)體和千萬級別關(guān)系的中文圖譜,以文本三元組格式保存.
這些數(shù)據(jù)源共同為作為環(huán)境圖譜的數(shù)據(jù)來源.其中,對于結(jié)構(gòu)化數(shù)據(jù)中的空氣質(zhì)量數(shù)據(jù),和歷史空氣質(zhì)量數(shù)據(jù)的數(shù)據(jù)頻率不一致.歷史空氣情況的頻率是一天一個地區(qū)只有一條記錄,而實(shí)時爬取的空氣數(shù)據(jù)每個小時都有一條記錄,需要將記錄取均值,從而與歷史數(shù)據(jù)頻率一致,便于處理.水質(zhì)情況數(shù)據(jù)中存在大量缺失的缺失值,這時可以采用均值法或剔除法.非結(jié)構(gòu)化的文本數(shù)據(jù)提取出的很多名詞有些是中文名詞,有些是英文縮寫,但是指代的為同一實(shí)體.通用圖譜是一個大文本的三元組文件,普通的文本編輯工具不能打開處理,將三元組導(dǎo)入圖譜時又要將其處理為特定的格式,為各個實(shí)體和關(guān)系添加唯一的Id 和生成對應(yīng)csv文件,需要使用大文本處理工具.
使用Scrapy 爬蟲框架,Scrapy 是一個Web 頁面抓取框架,可用于抓取Web 站點(diǎn)并利用Xpath 從頁面中提取結(jié)構(gòu)化數(shù)據(jù).從環(huán)境生態(tài)部網(wǎng)站、各環(huán)保廳網(wǎng)站、各環(huán)保局網(wǎng)站采集工作動態(tài)文本內(nèi)容,忽略其中的圖片及附件等內(nèi)容.對采集的數(shù)據(jù)保存為文本格式,并用Python 進(jìn)行預(yù)處理,將其中的網(wǎng)頁標(biāo)簽和亂碼做刪除處理.
爬蟲工作流程如圖2所示,具體可描述如下:
(1)設(shè)置待爬取網(wǎng)站的種子URL,這是一個列表形式,用于定義初始請求.Scrapy 根據(jù)種子的初始請求開始進(jìn)行抓取.
(2)將種子URL 的生成待爬取網(wǎng)頁地址,然后把網(wǎng)頁下載下來,存入已下載網(wǎng)頁集合中,標(biāo)記為已爬取網(wǎng)頁.
(3)分析已爬取網(wǎng)頁中的URL,將URL 放入待抓取URL 隊列中,重復(fù)(1)~(3)步.
圖2 爬蟲流程
從中國環(huán)境監(jiān)測總站信息發(fā)布網(wǎng)站上采集每小時的空氣數(shù)據(jù)存入MySQL 數(shù)據(jù)庫中,將其中含有缺失值的項(xiàng)刪除.空氣質(zhì)量數(shù)據(jù)主要包括檢測站點(diǎn)的名稱、監(jiān)測站代碼、AQI 指數(shù)、可吸入顆粒物的值等.
從國家地表水水質(zhì)自動檢測實(shí)時數(shù)據(jù)發(fā)布系統(tǒng)采集水質(zhì)情況數(shù)據(jù),刪除缺失的項(xiàng).水質(zhì)數(shù)據(jù)包括檢測的站點(diǎn)名、水酸堿度、水中溶解氧的含量等一系列數(shù)據(jù).
本體(ontology)是對概念進(jìn)行建模的規(guī)范,是描述客觀世界的抽象模型,以形式化的方式對概念及其之間的聯(lián)系給出明確定義[9].本體可以借助本體編輯軟件進(jìn)行手工方式構(gòu)建,也可以以數(shù)據(jù)驅(qū)動的自動化方式構(gòu)建本體,通過分析關(guān)系數(shù)據(jù)庫中表的信息和字段信息,構(gòu)建相應(yīng)的概念模型[10].
圖譜的數(shù)據(jù)源來自于空氣質(zhì)量檢測數(shù)據(jù)和水質(zhì)情況數(shù)據(jù),而關(guān)系數(shù)據(jù)庫包含完整的表結(jié)構(gòu)和完整性的約束條件,可以從關(guān)系型數(shù)據(jù)庫中抽取出關(guān)系模式,根據(jù)關(guān)系型數(shù)據(jù)庫中表信息和字段信息,建立相應(yīng)的概念模型,利用規(guī)則將關(guān)系模式轉(zhuǎn)為本體模型[11,12].
針對JSON 格式和表格形式的半結(jié)構(gòu)化數(shù)據(jù),通過將半結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù),再通過規(guī)則將其轉(zhuǎn)化為表名轉(zhuǎn)為概念名:將關(guān)系模式中字段名轉(zhuǎn)為本體屬性名等.環(huán)境信息知識圖譜結(jié)構(gòu)如圖3所示.
圖3 環(huán)境信息知識圖譜結(jié)構(gòu)
在與通用知識圖譜融合過程中,主要需要進(jìn)行實(shí)體對齊操作(entity alignment),判斷新提取出的實(shí)體和通用知識圖譜中的實(shí)體是否指向同一對象,將這些實(shí)體進(jìn)行合并,并用唯一表示對該實(shí)體標(biāo)記,最后將實(shí)體抽取出的新關(guān)系添加到圖譜中.如:空氣質(zhì)量和大氣質(zhì)量指向的語義相同,通過實(shí)體對齊可以將其定義到一個實(shí)體下.本文通過已訓(xùn)練好的詞向量模型(Word2Vec)的詞相似度進(jìn)行判斷,詞向量將詞進(jìn)行了向量化.通過半監(jiān)督學(xué)習(xí),詞越相似,其余弦相似度越高.通過對候選實(shí)體中相似度得分高的實(shí)體進(jìn)行合并,進(jìn)行實(shí)體對齊操作.
從國家地表水水質(zhì)自動檢測實(shí)時數(shù)據(jù)發(fā)布系統(tǒng)采集水質(zhì)情況數(shù)據(jù),刪除缺失項(xiàng),水質(zhì)數(shù)據(jù)包括檢測站點(diǎn)名、水的酸堿度、水中溶解氧含量等一系列數(shù)據(jù).
而對于文本類的非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行處理,主要是將文本提取為多個三元組的集合.提取的方法有3 種:(1)無監(jiān)督提取.這種提取方法需要由領(lǐng)域?qū)<沂止ぞ帉懸?guī)則或模式,然后進(jìn)行抽取.(2)半監(jiān)督提取.人工給出部分種子實(shí)例,由機(jī)器學(xué)習(xí)挖掘符合該模式的實(shí)例,再將這些實(shí)例加入種子實(shí)例中.(3)無監(jiān)督提取.將句子中符合一定語法規(guī)則的關(guān)系組提取出來.本文主要采用無監(jiān)督的文本三元組提取,基于哈工大LTP 工具,利用句法依存的關(guān)系提取三元組.圖4為句法依存示意圖.
圖4 句法依存示意圖
文本由多個句子組成,一篇由n個句子組成的文檔D,其中Sn表示第n個句子:
對每個句子Sn進(jìn)行分詞處理,將句子變?yōu)橐幌盗械脑~匯和標(biāo)點(diǎn)組成的向量,其中Wm代表單個詞匯或標(biāo)點(diǎn)符號:
再通過詞性標(biāo)注得到向量:
其中,pm代表每個詞的詞性,pm為wm的對應(yīng)詞性.
通過對Sn進(jìn)行句法分析,得到:
其中,rm表示對應(yīng)的wk和wm詞,tm表示句法依存的關(guān)系,如:主謂賓關(guān)系(SBV)、定中關(guān)系(VOB)等.
抽取以謂詞為中心的三元組過程如下:
遍歷PAR向量,尋找含有VOB 和SBV 關(guān)系的詞.即尋找一個句子中的謂語動詞,并將主語和賓語提取出來構(gòu)成主謂賓三元組.這樣提取出的三元組不夠完善,由于句中進(jìn)行了分詞操作,每個詞都是獨(dú)立存在的,因此提取出的主語和賓語較短,由于沒有修飾詞來說明實(shí)體,抽取出的詞語不能完整準(zhǔn)確地表達(dá)出意思,甚至?xí)捎谠~匯太短從而出現(xiàn)語義不明的情況,如表1.
表1 提取出的三元組
需要進(jìn)一步將實(shí)體詞進(jìn)行完善,補(bǔ)全主語和謂語的定語,遞歸地把實(shí)體的修飾詞補(bǔ)全,形成完整的主語實(shí)體.在遞歸補(bǔ)全實(shí)體的過程中,對實(shí)體的修飾詞長度進(jìn)行限制,過長的修飾詞會淹沒中心詞造成中心語殘缺.
先尋找句子中的動詞作為三元組的中間詞,通過遞歸地把實(shí)體詞的修飾語補(bǔ)充完整.為了避免遞歸導(dǎo)致實(shí)體詞過長,設(shè)置修飾詞的長度為10,超過修飾詞長度上限就結(jié)束遞歸,在完整表達(dá)實(shí)體語義的前提下減少過長修飾詞出現(xiàn)的可能性.具體過程如圖5所示.
圖5 完善實(shí)體偽代碼
從表2結(jié)果看,由于補(bǔ)全了實(shí)體的修飾語,使得實(shí)體的描述更為準(zhǔn)確,而未補(bǔ)全的實(shí)體語義表述不明.補(bǔ)全實(shí)體的過程是一個遞歸的過程,把實(shí)體的前綴詞和后綴詞遞歸地加入實(shí)體中,最終形成完整的實(shí)體.
表2 完善實(shí)體的三元組
知識圖譜的可視化主要是利用可視化技術(shù)構(gòu)建的一種知識之間的關(guān)系網(wǎng)格圖.本文開發(fā)了一個知識圖譜的可視化應(yīng)用服務(wù)平臺,平臺采用Neo4j 作為圖形數(shù)據(jù)庫,在前端使用D3 構(gòu)建可交互的數(shù)據(jù)圖表,使用PHP 作為連接Neo4j 數(shù)據(jù)庫和返回查詢數(shù)據(jù)的中間服務(wù).其主要功能有:(1)為用戶提供基礎(chǔ)查詢服務(wù);(2)遞歸查詢各個實(shí)體;(3)知識圖譜實(shí)體關(guān)系網(wǎng)絡(luò)的可視化,實(shí)現(xiàn)概念、屬性、實(shí)例等多個維度的知識圖譜展示.
截取兩幅圖對展示平臺進(jìn)行簡單說明.圖6表示某地某日的環(huán)境情況,包括空氣質(zhì)量情況,水質(zhì)情況和當(dāng)?shù)丨h(huán)保工作的內(nèi)容.雙擊圖中節(jié)點(diǎn),可進(jìn)入下一層知識圖譜,如雙擊汾河,可展示出其圖譜內(nèi)容,圖譜中每個節(jié)點(diǎn)又可以雙擊進(jìn)入下一層,實(shí)現(xiàn)遞歸查詢圖譜.
圖6 環(huán)境知識圖譜展示
本文提出一種基于多數(shù)據(jù)源數(shù)據(jù)融合的知識圖譜構(gòu)建過程,利用網(wǎng)絡(luò)爬蟲采集空氣質(zhì)量檢測數(shù)據(jù)、河流數(shù)據(jù)和環(huán)境工作文本數(shù)據(jù),對數(shù)據(jù)進(jìn)行融合處理,旨在構(gòu)建一個多源異構(gòu)數(shù)據(jù)的融合知識圖譜,將構(gòu)件流程工具化,以便為環(huán)境工作相關(guān)人員提供更好的支撐.
相較與將各類信息分別使用不同的存儲形式和不同的數(shù)據(jù)庫類型,把多源異構(gòu)的數(shù)據(jù)以圖譜形式存儲可以進(jìn)行數(shù)據(jù)的統(tǒng)一,方便地使用類SQL 語句進(jìn)行查詢,作為智能推理和智能問答的基礎(chǔ).文中描述的圖譜構(gòu)建過程也可以應(yīng)用于其他領(lǐng)域,將領(lǐng)域中不同類型和結(jié)構(gòu)的數(shù)據(jù)統(tǒng)一導(dǎo)入圖形數(shù)據(jù)庫形成圖譜.
目前知識圖譜的構(gòu)建方法還處于發(fā)展期,部分技術(shù)及圖譜構(gòu)建算法還需要改進(jìn).本文中所構(gòu)建的多數(shù)據(jù)源知識圖譜還有很多不足之處,比如其數(shù)據(jù)源還不夠完善,應(yīng)使用更多的相關(guān)數(shù)據(jù)源來擴(kuò)展圖譜,尤其是相關(guān)的專業(yè)知識融入圖譜中;沒有實(shí)現(xiàn)建立圖譜的自動更新機(jī)制,讓知識圖譜實(shí)現(xiàn)自增長.