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