?

面向知識圖譜的融合集成框架設計研究

2021-10-19 13:28賀宗平范少芬賀曦冉
現代信息科技 2021年5期
關鍵詞:知識圖譜

賀宗平 范少芬 賀曦冉

摘? 要:隨著知識圖譜技術及應用的不斷發展,形成了一系列獨立的開發組件庫,這些組件庫在知識圖譜的某些環節和領域中具有廣泛的應用,但是其中大多數組件庫之間相互獨立、缺少統一標準,難以聚合形成體系開放能力。由于需要掌握多個獨立組件的開發規范標準,這給相關研究和應用造成一定的難度和阻礙,因此利用Python的集成設計模式和語言黏合優勢,對成熟的組件庫進行分層分類整合,具有重要的實用價值。

關鍵詞:知識圖譜;圖譜數據庫;設計模式;集成構建

中圖分類號:TP311? ? ? 文獻標識碼:A 文章編號:2096-4706(2021)05-0023-03

Research on the Design of Fusion Framework for Knowledge Graph

HE Zongping,FAN Shaofen,HE Xiran

(Information Office,Nanjing Audit University,Nanjing? 211815,China)

Abstract:With the continuous development of knowledge graph technology and its application,a series of independent development component libraries have been formed. These component libraries have a wide range of applications in some links and fields of knowledge graph. However,most of them are independent and lack of unified standards,which makes it difficult to aggregate and form the systematic open ability. Because there is a need to master the development specifications and standards of multiple independent components,which causes a certain difficulties and obstacles to the related research and application. Therefore,it has important practical value to use Python's integrated design pattern and language bonding advantages to integrate the mature component libraries in classified and hierarchical way.

Keywords:knowledge graph;graph database;design pattern;integration build

0? 引? 言

知識圖譜在相關的研究和開發領域具有一系列成熟的開發組件庫,這些組件庫在知識圖譜的某些環節和領域中具有較為廣泛的運用,如自然語言處理模塊spaCy、圖分析算法包NetworkX。但是其中的大多數組件庫之間相互獨立、缺少統一標準和規范約束,無法提供體系化的功能。知識圖譜的研究開發需要掌握多個獨立組件的標準規范,給相關問題的研究開發造成了困難和阻礙。同時,由于jupyter、colab等數據工程和科學領域的平臺工具,對編寫Python Notebook程序的簡潔性、可復現性提出了更高的要求。因此,構建統一簡潔、全面完善的知識圖譜集成框架,對于這個領域的研究發展有著重要的現實意義。

1? 知識圖譜構建

知識圖譜的運用覆蓋了從互聯網搜索到聊天機器人、推薦系統、金融風控、物聯網、醫療教育等多個熱門領域,對知識圖譜相關技術領域研究開發的熱度不斷攀升。例如傳統的搜索是一種淺層次的關聯搜索,通過對網頁關鍵內容的過濾分析實現,而基于知識圖譜的搜索將在進行知識語義理解的基礎上進行深層次關聯搜索,綜合檢索數據信息的來龍去脈,并提供對搜索事物的分類、屬性和關系的描述。

知識圖譜本質上是基于語義網絡的知識庫,由Google公司于2012年提出。實際應用中可以把知識圖譜理解成由節點(Vertex)和邊(Edge)構成的一種特殊的多關系圖,通常多關系圖一般包含多種類型的節點和邊,而知識圖譜一般只包含一種類型的節點和邊。

1.1? 數據處理

在Python語言中,可以通過pandas讀取excel中的數據,并以圖譜“三元組”形式存儲到Neo4j圖譜數據庫,以構建相關的知識圖譜?;贜eo4j圖譜數據庫能夠很容易地構建知識圖譜,除了用Neo4j自帶的cypher語言導入,也可以通過py2neo組件創建節點和關系從而構建知識圖譜。pandas組件包通常用于數據分析與處理,可以將excel格式文件轉換成dataframe格式,這種格式類似于Spark中的Dataframe結構,支持類似SQL的形式對數據進行處理。

1.2? 實體抽取

知識圖譜構建流程主要就是抽取實體,通過抽取算法獲取知識圖譜上的“節點”。對于文本數據處理的方式,基于詞性標注的方法從句子中提取單詞,例如名詞和專有名詞就是需要的實體。此外,當一個實體關聯多個單詞時,還需要解析文本的依賴樹。

1.3? 圖譜數據庫

圖數據庫不同于一般的關系型數據庫,是一種非結構化的圖形數據庫,與MySQL、Oracle等傳統數據庫存儲結構化數據相對比,圖數據庫主要用來持久化存儲圖譜數據。目前主流的圖數據庫包括Neo4j、TigerGraph、JanusGraph等:

(1)Neo4j是典型的圖數據庫,也是圖計算引擎,具備嵌入式、高性能、輕量級等優勢。

(2)TigerGraph是為高性能存儲和計算而設計的分布式圖數據庫。每個實體和連接實體的每個邊都是計算單元,支持自動劃分多個節點。

(3)JanusGraph是開源的圖數據庫,遵循Apache協議,具有良好的開放性。

2? 架構需求

本文研究的主要內容是通過增加適配層方式進行多組件的集成,提供抽象層接口,統一SDK或API標準,以構建符合當前數據科學研究和知識圖譜開發應用的需求。圖1為融合多個技術組件的集成架構圖。

2.1? 層級區分

框架的體系架構垂直劃分為三個層次,即圖數據存儲層、引擎處理層、功能集成層:

(1)圖數據存儲層:存儲層主要由各種圖數據庫組成,支持分布式存儲,實現圖數據的持久化存儲。在數據存儲量上能夠支持達到億級以上點邊總數,吞吐量數萬QPS,查詢響應在秒級以內。

(2)引擎處理層:引擎處理層是負責對圖數據進行讀取轉換和序列化的處理,包括一些并行處理引擎、大數據內存處理引擎等。

(3)功能集成層:集成層主要是牽涉到圖數據相關的建模、分析和計算等功能庫,是知識圖譜應用分析的主要功能集合。

2.2? 集成與接口

集成框架的核心是為Python中的知識圖譜相關組件構建統一抽象層。本文研究基于外觀模式(Facade Pattern)進行封裝設計,架構如圖2所示。

在面向對象方法的程序設計中,外觀模式又被稱為門面模式,外觀模式定義了一個高層接口,通過引入一個類對子系統進行封裝,讓外部通過統一的外觀對象進行調用,為子系統中的接口提供一致的訪問標準。引入封裝的外觀可有效降低原有系統的復雜度,同時減少客戶端與子系統類之間的耦合度。

外觀設計模式通過一個統一的外觀對象實現子系統外部與其內部的通信,屏蔽了客戶端訪問子系統的復雜性,客戶端只需與外觀對象通信,無需要調用子系統內部的多個復雜對象的功能。外觀模式的目的在于降低系統的復雜程度,極大程度上提高了聚合功能包開發的便捷性,使得客戶端無須關心子系統的實現細節,通過外觀接口類即可完成所有功能調用。

3? 構建方法

Python有著多種豐富成熟的圖數據組件包,提供了包括語義技術、圖數據查詢、交互可視化、圖數據結構算法、概率圖推斷,以及和機器學習等方面集成的工具包。這些工具包各自獨立向外提供編程功能接口,工具包之間在數據處理、接口規范、功能種類等方面都存在一定的差異性。此外,這些開發包與主流的數據科學基礎平臺和工具包(例如Apache Spark、Ray、RAPIDS、Apache Parquet、pandas、scikit-learn、PyTorch、spaCy等)相比,也同樣缺少有效集成。

3.1? 組件構成

組件集成了RDFlib、OWL-RL、pySHACL、NetworkX、iGraph、PyVis、node2vec等開源項目工具包,集成各種圖計算分析、可視化分析相關的功能方法,有助于知識圖譜開發融入數據科學,并推動與數據工程實踐更加緊密關聯。

3.2? 功能要素

構建的功能要素包括6個方面的內容:

(1)RDFlib中的知識圖譜構建功能。RDFlib主要功能就是將基于語法的文件轉換成RDF格式的知識表達,需將原始數據按照相應語法進行預處理,如TTL、JSON-LD、Parquet等數據格式序列化。

(3)基于SPARQL的查詢能力,并將查詢結果輸出轉換為pandas格式數據。SPARQL是針對RDF存儲的查詢語言,SPARQL與SQL類似,通過查詢可以返回一條或多條圖存儲內容結果。

(4)基于SHACL約束規則的圖計算驗證。SHACL是一種標準化的依據一組條件來驗證RDF圖的語言,可以在預定義圖譜形狀構建的數據圖上,強制執行標準結構。

(5)NetworkX和iGraph的圖分析算法。NetworkX和iGraph是Python中創建、操作和研究網絡圖譜的工具包,尤其在分析網絡結構的方面具有十分完備的支持。

(6)基于RDFS、OWL知識推理功能。RDFS是對RDF的擴充,用來描述RDF數據,增加更多的關系表示方法,OWL則提供高效靈活的數據建模和自動推理能力。

3.3? 接口構建

集成框架基于Facade設計模式,將各類復雜的知識圖譜功能庫封裝,提供外界統一訪問的模塊接口,內部中各個功能庫仍然相對獨立,降低系統耦合度并相互減少依賴。外觀接口類構建的代碼示例:

class? SpecialGraphFacade():

igraphObj = None

rdfObj = None

visObj = None

def __init__(self):

self. igraphObj = IGraph()

self.rdfObj = RDF()

self.visObj = PyVisual()

def createSpecialGraph(self,data):

self.rdfObj.readGraph(data)

return self.igraphObj.createSpecialPath(self.rdfObj)

def visualSpecialGraph(self):

return self.visObj.visual(self.igraphObj)

4? 結? 論

開源社區在知識圖譜相關的存儲處理和計算分析層面提供了多種成熟的組件功能包,為避免在知識圖譜應用開發和研究中帶來的版本、接口和集成等問題,可充分發揮Python語言高效粘合式集成開發能力,基于Facade設計模式為一系列知識圖譜組件功能包提供一致的高層接口層,隱藏多組件開發帶來的復雜性,并承接版本控制的統一性、功能的一致性等內容,為知識圖譜相關研究提供便利。

參考文獻:

[1] 張云中,祝蕊.面向知識問答系統的圖情學術領域知識圖譜構建:多源數據整合視角 [J].情報科學,2021,39(5):115-123.

[2] 張思龍,王蘭成,婁國哲.基于知識圖譜的網絡輿情研判系統研究 [J].現代情報,2021,41(4):10-16.

[3] 劉寶珠,王鑫,柳鵬凱,等.KGDB:統一模型和語言的知識圖譜數據庫管理系統 [J].軟件學報,2021,32(3):781-804.

[4] 于升峰.面向科技智庫的知識圖譜系統構建 [J].智庫理論與實踐,2021,6(1):56-64.

[5] 賀宗平,張曉東,劉玉.基于Jupyter交互式分析平臺的微服務架構 [J].計算機系統應用,2019,28(8):63-70.

[6] 魏澤林,張帥,王建超.基于知識圖譜問答系統的技術實現 [J].軟件工程,2021,24(2):38-44.

[7] 趙捷,宮政,李晟飛.基于知識圖譜的機構大數據集成系統研究 [J].標準科學,2020(9):74-78.

作者簡介:賀宗平(1982.09—),男,漢族,江蘇南京人,工程師,碩士,研究方向:軟件體系架構、數據平臺。

猜你喜歡
知識圖譜
國內外智庫研究態勢知識圖譜對比分析
國內信息素養研究的知識圖譜分析
國內圖書館嵌入式服務研究主題分析
國內外政府信息公開研究的脈絡、流派與趨勢
基于知識圖譜的產業集群創新績效可視化分析
基于知識圖譜的產業集群創新績效可視化分析
基于知識圖譜的智慧教育研究熱點與趨勢分析
國內酒店品牌管理研究進展的可視化分析
從《ET&S》與《電化教育研究》對比分析中管窺教育技術發展
專家知識圖譜構建研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合