宋 偉,張游杰
1(太原科技大學 計算機科學與技術學院,太原 030024)
2(中電科華北網絡信息安全有限公司,太原 030032)
隨著大數據時代的來臨,數據的種類多種多樣,數據規模日益增大,傳統的數據管理模式和類SQL 語句查詢受到一定的限制.知識圖譜(Knowledge Graph,KG)作為一種新的知識表達方式及數據管理模式,旨在描述客觀世界的概念、實體、事件之間的關系,其基本的組成單位是“頭實體-關系-尾實體”三元組,實體包含屬性鍵值對,實體之間通過關系進行描述,形成網狀的結構.網絡中的節點代表物理世界中的實體或概念,實體之間的各種語義關系構成網絡中的邊.
知識圖譜標準化白皮書中[1]中明確指出大數據時代,應對碎片化的數據進行整合,消除“信息孤島”和“數據煙囪”,將數據轉為可供決策使用的知識和智慧.在環境問題上,各方數據孤立的現象尤為明顯,環境空氣質量、水質質量、環保工作等數據存在與不同的機構之間,沒有一個統一的對環境情況的描述.
本文針對上述問題進行了研究,介紹了環境知識圖譜的一般構建過程,實現了環境信息知識圖譜的構建,將不同來源的異構環境信息進行了融合.
目前國際上較知名的知識圖譜為DBpedia,是一個以維基百科為數據源的通用知識圖譜,用以增強維基百科的搜索功能[2].與DBpedia 對應的為CN-DBpedia,CN-DBpedia 是由復旦大學知識工廠肖仰華等從中文百科類網站(如百度百科、互動百科、中文維基百科等)的純文本頁面中提取而來的通用知識圖譜,其中包含900 余萬的三元組關系[3].上述知識圖譜是從各類網頁上采集而來的通用圖譜,針對特定的領域,通用知識圖譜沒有很好的表現.王雪芹等以1997-2017年的CNKI 為數據源,構建了針對礦區生態環境研究知識的專業圖譜[4].孫強強等提出建立基于知識圖譜環境科學知識挖掘,是未來環境治理研究的發展方向[5].環境相關的知識圖譜集中在環境治理方法圖譜,對環境情況的表現不足.
為知識圖譜的應用是以知識圖譜的構建為基礎的,其中構建知識圖譜的主要過程包括實體抽取和實體間關系的建立.知識圖譜在邏輯上分為模式層和數據層,可視為一張圖G,由模式圖Gs、數據圖Gd以及Gs和Gd之間的關系R組成,即G=<Gs,Gd,R>.模式層基于數據層之上,是知識圖譜的核心,其表現形式為:實體-關系-實體,關系-屬性-屬性值.數據層由一系列事實組成,如:AQI-中文名-空氣質量指數.
知識圖譜的一般構建方法有自頂向下構建(topdown)和自底向上構建(bottom-up)兩種[6].自頂向下是首先為圖譜定義好全局本體,即從數據源中先提取本體和模式信息,再將實體加入圖譜中.而自底向上方法對實體進行歸納,提取出置信度高的加入圖譜中.這兩種方法不是孤立進行的,可以兩者交替結合.本研究在構建知識圖譜時采用兩種方法的結合,先通過一個通用知識圖譜構建本體庫,再自底向上提取數據擴展知識圖譜.
多數據源融合構建知識圖譜,如圖1所示.由不同來源、不同結構的數據,如結構化、半結構化和非結構化數據,通過關系抽取、屬性抽取、實體消歧,轉化為符合圖譜構造的三元組形式.最后編寫相應的展示平臺,對知識圖譜提供一個外部展示及交互接口.

圖1 多數據源知識圖譜構建過程
用于建立知識圖譜的數據源可以是結構化數據、半結構化數據和非結構化數據,現有的一些通用知識圖譜也可以作為數據的來源[7,8].
1)結構化數據.當前空氣質量數據庫數據.
2)半結構化數據.主要是獲取歷史天氣情況的JSON 格式數據、歷史水質情況的表格格式數據.
3)非結構化數據.主要是文本數據,如各地環保廳網站、環保局網站的工作動態文本,和環境介紹的描述文件等.
4)通用知識圖譜.使用思知(OwnThink)通用知識圖譜,包含了2500 萬實體和千萬級別關系的中文圖譜,以文本三元組格式保存.
這些數據源共同為作為環境圖譜的數據來源.其中,對于結構化數據中的空氣質量數據,和歷史空氣質量數據的數據頻率不一致.歷史空氣情況的頻率是一天一個地區只有一條記錄,而實時爬取的空氣數據每個小時都有一條記錄,需要將記錄取均值,從而與歷史數據頻率一致,便于處理.水質情況數據中存在大量缺失的缺失值,這時可以采用均值法或剔除法.非結構化的文本數據提取出的很多名詞有些是中文名詞,有些是英文縮寫,但是指代的為同一實體.通用圖譜是一個大文本的三元組文件,普通的文本編輯工具不能打開處理,將三元組導入圖譜時又要將其處理為特定的格式,為各個實體和關系添加唯一的Id 和生成對應csv文件,需要使用大文本處理工具.
使用Scrapy 爬蟲框架,Scrapy 是一個Web 頁面抓取框架,可用于抓取Web 站點并利用Xpath 從頁面中提取結構化數據.從環境生態部網站、各環保廳網站、各環保局網站采集工作動態文本內容,忽略其中的圖片及附件等內容.對采集的數據保存為文本格式,并用Python 進行預處理,將其中的網頁標簽和亂碼做刪除處理.
爬蟲工作流程如圖2所示,具體可描述如下:
(1)設置待爬取網站的種子URL,這是一個列表形式,用于定義初始請求.Scrapy 根據種子的初始請求開始進行抓取.
(2)將種子URL 的生成待爬取網頁地址,然后把網頁下載下來,存入已下載網頁集合中,標記為已爬取網頁.
(3)分析已爬取網頁中的URL,將URL 放入待抓取URL 隊列中,重復(1)~(3)步.

圖2 爬蟲流程
從中國環境監測總站信息發布網站上采集每小時的空氣數據存入MySQL 數據庫中,將其中含有缺失值的項刪除.空氣質量數據主要包括檢測站點的名稱、監測站代碼、AQI 指數、可吸入顆粒物的值等.
從國家地表水水質自動檢測實時數據發布系統采集水質情況數據,刪除缺失的項.水質數據包括檢測的站點名、水酸堿度、水中溶解氧的含量等一系列數據.
本體(ontology)是對概念進行建模的規范,是描述客觀世界的抽象模型,以形式化的方式對概念及其之間的聯系給出明確定義[9].本體可以借助本體編輯軟件進行手工方式構建,也可以以數據驅動的自動化方式構建本體,通過分析關系數據庫中表的信息和字段信息,構建相應的概念模型[10].
圖譜的數據源來自于空氣質量檢測數據和水質情況數據,而關系數據庫包含完整的表結構和完整性的約束條件,可以從關系型數據庫中抽取出關系模式,根據關系型數據庫中表信息和字段信息,建立相應的概念模型,利用規則將關系模式轉為本體模型[11,12].
針對JSON 格式和表格形式的半結構化數據,通過將半結構化數據轉換為結構化數據,再通過規則將其轉化為表名轉為概念名:將關系模式中字段名轉為本體屬性名等.環境信息知識圖譜結構如圖3所示.

圖3 環境信息知識圖譜結構
在與通用知識圖譜融合過程中,主要需要進行實體對齊操作(entity alignment),判斷新提取出的實體和通用知識圖譜中的實體是否指向同一對象,將這些實體進行合并,并用唯一表示對該實體標記,最后將實體抽取出的新關系添加到圖譜中.如:空氣質量和大氣質量指向的語義相同,通過實體對齊可以將其定義到一個實體下.本文通過已訓練好的詞向量模型(Word2Vec)的詞相似度進行判斷,詞向量將詞進行了向量化.通過半監督學習,詞越相似,其余弦相似度越高.通過對候選實體中相似度得分高的實體進行合并,進行實體對齊操作.
從國家地表水水質自動檢測實時數據發布系統采集水質情況數據,刪除缺失項,水質數據包括檢測站點名、水的酸堿度、水中溶解氧含量等一系列數據.
而對于文本類的非結構化數據進行處理,主要是將文本提取為多個三元組的集合.提取的方法有3 種:(1)無監督提取.這種提取方法需要由領域專家手工編寫規則或模式,然后進行抽取.(2)半監督提取.人工給出部分種子實例,由機器學習挖掘符合該模式的實例,再將這些實例加入種子實例中.(3)無監督提取.將句子中符合一定語法規則的關系組提取出來.本文主要采用無監督的文本三元組提取,基于哈工大LTP 工具,利用句法依存的關系提取三元組.圖4為句法依存示意圖.

圖4 句法依存示意圖
文本由多個句子組成,一篇由n個句子組成的文檔D,其中Sn表示第n個句子:

對每個句子Sn進行分詞處理,將句子變為一系列的詞匯和標點組成的向量,其中Wm代表單個詞匯或標點符號:

再通過詞性標注得到向量:

其中,pm代表每個詞的詞性,pm為wm的對應詞性.
通過對Sn進行句法分析,得到:

其中,rm表示對應的wk和wm詞,tm表示句法依存的關系,如:主謂賓關系(SBV)、定中關系(VOB)等.
抽取以謂詞為中心的三元組過程如下:
遍歷PAR向量,尋找含有VOB 和SBV 關系的詞.即尋找一個句子中的謂語動詞,并將主語和賓語提取出來構成主謂賓三元組.這樣提取出的三元組不夠完善,由于句中進行了分詞操作,每個詞都是獨立存在的,因此提取出的主語和賓語較短,由于沒有修飾詞來說明實體,抽取出的詞語不能完整準確地表達出意思,甚至會由于詞匯太短從而出現語義不明的情況,如表1.

表1 提取出的三元組
需要進一步將實體詞進行完善,補全主語和謂語的定語,遞歸地把實體的修飾詞補全,形成完整的主語實體.在遞歸補全實體的過程中,對實體的修飾詞長度進行限制,過長的修飾詞會淹沒中心詞造成中心語殘缺.
先尋找句子中的動詞作為三元組的中間詞,通過遞歸地把實體詞的修飾語補充完整.為了避免遞歸導致實體詞過長,設置修飾詞的長度為10,超過修飾詞長度上限就結束遞歸,在完整表達實體語義的前提下減少過長修飾詞出現的可能性.具體過程如圖5所示.

圖5 完善實體偽代碼
從表2結果看,由于補全了實體的修飾語,使得實體的描述更為準確,而未補全的實體語義表述不明.補全實體的過程是一個遞歸的過程,把實體的前綴詞和后綴詞遞歸地加入實體中,最終形成完整的實體.

表2 完善實體的三元組
知識圖譜的可視化主要是利用可視化技術構建的一種知識之間的關系網格圖.本文開發了一個知識圖譜的可視化應用服務平臺,平臺采用Neo4j 作為圖形數據庫,在前端使用D3 構建可交互的數據圖表,使用PHP 作為連接Neo4j 數據庫和返回查詢數據的中間服務.其主要功能有:(1)為用戶提供基礎查詢服務;(2)遞歸查詢各個實體;(3)知識圖譜實體關系網絡的可視化,實現概念、屬性、實例等多個維度的知識圖譜展示.
截取兩幅圖對展示平臺進行簡單說明.圖6表示某地某日的環境情況,包括空氣質量情況,水質情況和當地環保工作的內容.雙擊圖中節點,可進入下一層知識圖譜,如雙擊汾河,可展示出其圖譜內容,圖譜中每個節點又可以雙擊進入下一層,實現遞歸查詢圖譜.

圖6 環境知識圖譜展示
本文提出一種基于多數據源數據融合的知識圖譜構建過程,利用網絡爬蟲采集空氣質量檢測數據、河流數據和環境工作文本數據,對數據進行融合處理,旨在構建一個多源異構數據的融合知識圖譜,將構件流程工具化,以便為環境工作相關人員提供更好的支撐.
相較與將各類信息分別使用不同的存儲形式和不同的數據庫類型,把多源異構的數據以圖譜形式存儲可以進行數據的統一,方便地使用類SQL 語句進行查詢,作為智能推理和智能問答的基礎.文中描述的圖譜構建過程也可以應用于其他領域,將領域中不同類型和結構的數據統一導入圖形數據庫形成圖譜.
目前知識圖譜的構建方法還處于發展期,部分技術及圖譜構建算法還需要改進.本文中所構建的多數據源知識圖譜還有很多不足之處,比如其數據源還不夠完善,應使用更多的相關數據源來擴展圖譜,尤其是相關的專業知識融入圖譜中;沒有實現建立圖譜的自動更新機制,讓知識圖譜實現自增長.