自學參考:
視頻:斯坦福CS520 | 知識圖譜
最全知識圖譜綜述
詳解知識圖譜的構建全流程
知識圖譜構建(概念,工具,實例調研)
一、基本概念
-
知識圖譜(Knowledge graph):由結點和邊組成,是結構化的語義知識庫。
- 結點可以是實體,如一個人、一本書等,或是抽象的概念,如人工智能、知識圖譜等。
- 邊可以是實體的屬性,如成績、書名,或者是實體之間的關系,如朋友、家人。
- 理解為圖狀具有關聯性的知識集合,可以由三元組(實體-關系-實體)表示。
- 通過知識圖譜能把web上的信息、數據以及連接關系聚集為知識,使信息資源更易于計算、理解以及評價,并實現知識的快速響應和推理。
-
根據覆蓋范圍而言,知識圖譜可以分為開放域通用知識圖譜和垂直行業知識圖譜。
- 開放通用知識圖譜:注重廣度,強調融合更多的實體,相較于垂直行業知識圖譜而言,其準確度不夠高,并且受概念范圍的影響,很難借助本體庫對公理、規則以及約束條件的支持能力規范其 實體、屬性、實體間關系等。
通用知識圖譜主要應用于智能搜索等領域。 - 行業知識圖譜:通常需要依靠特定行業的數據來構建,具有特定的行業意義。在行業知識圖譜中,實體的屬性和數據模型往往比較豐富,需要考慮到不同的業務場景和使用人員。
- 開放通用知識圖譜:注重廣度,強調融合更多的實體,相較于垂直行業知識圖譜而言,其準確度不夠高,并且受概念范圍的影響,很難借助本體庫對公理、規則以及約束條件的支持能力規范其 實體、屬性、實體間關系等。
-
知識庫(Knowledge Base):顧名思義,一個知識數據庫,包含了知識的本體和知識。Freebase是一個知識庫(結構化),維基百科也可以視為一個知識庫(半結構化)。知識圖譜可以視為由圖數據庫存儲的知識庫。目前知名度較高的一些大規模知識庫:
-
本體vs實體
- 本體:(可理解為面向對象編程里的類)概念的集合,這些概念能夠描述某個具體的領域里的一切事物的共有特征,而且概念間也有一定的關系,所有構成一個具有層級特征的結構。
- 實體:是本體、實例及關系的整合。
例如“研究牲”是本體框中的一個概念,概念中也規定了相關屬性比如“研究方向”,小陌是一個具體的研究牲,叫做實例,則小陌也有研究方向。小陌以及體現小陌的本體概念“研究牲”以及相關屬性,叫做一個實體(某種角度上:本體+實例)
-
本體:定義了組成領域的詞匯表的基本術語及其關系,以及結合這些術語和關系來定義詞匯表外延的規則。
-
領域:一個本體描述的是一個特定的領域
-
術語:指給定領域中的重要概念
-
基本術語之間的關系:包括類的層次結構,其中包括并列關系、上下位關系等
-
詞匯表外延的規則:包括屬性值約束、不相交描述
-
知識圖譜的構建技術
- 自頂向下構建(top-down)
- 先為知識圖譜定義好 本體和數據模式,再把實體加入到知識庫。該構建方式需利用一些現有的結構化知識庫作為其 基礎知識庫,例如Freebase項目就是采用該方式,它的絕大部分數據是從維基百科中得到的。
- 借助百科類網站等結構化數據源,從高質量數據中提取本體和模式信息,加入到知識庫里。
- 領域知識圖譜多采用自頂向下的方法來構建本體。一方面,相比于開放域知識圖譜,領域知識圖譜涉及的概念和范圍都是固定或者可控的;另一方面,對于領域知識圖譜,要求其滿足較高的精度。自頂向下是先為知識圖譜定義好本體和數據模式,再將實體加入到知識庫。該構建方式需利用一些現有的結構化知識庫作為其基礎知識庫。
- 自底向上構建(bottom-up)
- 從一些開放鏈接數據中提取出實體,選擇其中置信度較高的加入到知識庫,再構建頂層的本體模式。目前,大多數知識圖譜都采用自底向上的方式進行構建,其中最典型的是google的Knowledge Vault和微軟的Satori知識庫。也符合互聯網數據內容知識產生的特點。
- 借助一定的技術手段,從公開采集的數據中提取出資源模式,選擇其中置信度較高的信息,加入到知識庫中。
- 開放域知識圖譜的本體構建通常采用自底向上的方法,自動地從知識圖譜中抽取概念、概念層次和概念之間的關系。
- 自頂向下構建(top-down)
- “實體-關系-實體”三元組:知識圖譜的基本單位,是“實體(entity)-關系(relationship)-實體(entity)”構成的三元組,這也是知識圖譜的核心哦
- 知識圖譜的原始數據類型(三種):
- 結構化數據Structed Data,如關系數據庫、鏈接數據
- 半結構化數據Semi-Structured Data,如XML,JSON,百科
- 非結構化數據Unstructured Data,如圖片,音頻,視頻
- 知識圖譜的兩種存儲方式:
-
基于RDF結構的存儲方式
RDF(Resource Description FrameWork,資源描述框架),RDF是使用XML語法來表示的數據模型。RDF的功能是用以三元組的形式于描述資源的特性以及資源之間的關系,一種以文本的形式逐行存儲三元組數據。 -
基于免費開源的圖數據庫存儲,例如Neo4j、JanusGraph、Nebula Graph等
圖數據庫是以圖的方式來保存的,圖數據庫的優點在于查詢和搜索的速度比較快 ,并且在圖數據庫中實體節點可以保留屬性,這就意味著實體可以保留更多的信息,此外圖數據庫像其他的關系數據庫一樣有完整的查詢語句,支持大多數的圖挖掘算法。目前使用范圍最廣的圖數據庫為Neo4j。
-
從技術上來說,用關系數據庫來存儲知識圖譜(尤其是簡單結構的知識圖譜)是木得問題的。但是當知識圖譜變復雜,用傳統的關系數據存儲,查詢效率會顯著低于圖數據庫。
在一些涉及到2、3度的關聯查詢場景,圖數據庫能把查詢效率提升幾千倍甚至幾百萬倍。
而且基于圖的存儲在設計上會非常靈活,一般只需要局部的改動即可。當場景數據規模較大時,建議直接用圖數據庫來進行存儲。
二、知識圖譜的架構
- 知識圖譜的架構包括自身的邏輯結構和構建知識圖譜所采用的技術(體系)架構
邏輯架構
在邏輯上,通常把知識圖譜劃分為兩個層次:數據層和模式層
- 模式層:在數據層之上,是知識圖譜的核心,存儲經過提煉的知識,通常本體庫來管理知識圖譜的模式層(本體庫可以理解為面向對象里的“類”這一概念,本體庫就存儲著知識圖譜的類)。本體是結構化知識庫的概念模板,通過本體庫而形成的知識庫不僅層次結構較強,且冗余程度較小。
- 數據層:存儲真實的數據。
主要是由一系列的事實組成。若用(實體1,關系,實體2)、(實體,屬性,屬性值)這樣的三元組來表達事實,可選擇圖數據庫作為存儲介質,例如開源的Neo4j,Twitter的FlockDB、sones的GraphDB等。
例如eg,
模式層:實體-關系-實體,實體-屬性-屬性值
數據層:小明-導師-李華,小明-研究牲-克萊爾大學
技術架構
知識圖譜的整體架構如上圖所示,其中虛線框內的部分是知識圖譜的構建過程,也包含知識圖譜更新的過程。
- 圖中的大致思路是:
- 首先,我們有很多數據,這些數據可能是結構化的、非結構化的以及半結構化的
- 然后,我們基于這些數據來構建知識圖譜,這一步主要是通過一些列自動化或半自動化的技術手段,來從原始數據中提取出知識要素,即一堆實體關系,并將其存入我們的知識庫的模式層和數據層。
知識圖譜構建從最原始的數據(包括結構化、半結構化、非結構化數據)出發,采用一系列自動或半自動的技術手段,從原始數據庫和第三方數據庫中提取知識事實,并將其存入知識庫的數據層和模式層,這一過程包含:信息抽取、知識表示、知識融合、知識推理四個過程,每一次更新迭代包含這四個階段。
三、知識圖譜構建步驟
本文中以自底向上的構建技術為例。
- 構建知識圖譜是一個迭代更新的過程,根據知識獲取的邏輯,每一輪迭代包含三個階段:
- 信息抽取:從各種類型的數據源中提取出實體、屬性以及實體間的相互關系,在此基礎上形成本體化的知識表達
- 知識融合:在獲得新知識后,需要對其進行整合,以消除矛盾和歧義,比如某些實體可能有多種表達,某個特定稱謂也許對應多個不同的實體等。
- 知識加工:對于經過融合的新知識,需要經過質量評估之后(部分需要人工參與鑒別),才能將合格的部分加入到知識庫中,以確保知識庫的質量。
3.1 知識抽取(information acquisition)
知識抽取是知識圖譜構建的第一步,其中的關鍵問題是:如何從異構數據源中自動抽取信息得到候選指示單元。
信息抽取是一種自動化地從半結構化和無結構數據中抽取實體、關系以及實體屬性等結構化信息的技術,在此基礎上形成本體化的。涉及的關鍵技術包括:實體抽取、關系抽取和屬性抽取
實體抽取
實體抽取也稱為命名實體學習(named entity learning)或命名實體識別(named entity recognition),指的是從原始語料中自動識別命名實體。
由于實體是知識圖譜中的最基本元素,其抽取的完整性、準確率、召回率等將直接影響到知識圖譜構建的質量。
- 實體抽取的方法可以分為四種:
- 基于百科站點或垂直站點提取
從百科類站點(如維基百科、百度百科、互動百科等)的標題和鏈接中提取實體名。
和一般性通用的網站相比,垂直類站點的實體提取可以獲取特定領域的實體。例如從豆瓣各頻道(音樂、讀書、電影等)獲取各種實體列表。這種方法主要是基于爬取技術來實現和獲取。
基于百科類站點或垂直類站點是一種最常規和基本的方法。- 優:可以得到開放互聯網中最常見的實體名
- 缺:對于中低頻的覆蓋率低。
- 基于規則和詞典的實體提取方法
早期的實體抽取是在限定文本領域、限定語義單元類型的條件下進行的,主要采用的是基于規則和詞典的方法。例如使用已定義的規則,抽取出文本中的人名、地名、組織機構名、特定時間等實體。首次實現的能夠抽取公司名稱的實體抽取系統,其中主要用到了啟發式算法和規則模板相結合的方法。- 缺:不僅需要依靠大量的專家來編寫規則或模板,覆蓋的領域范圍有限,且很難適應數據變化的新需求
- 基于統計機器學習的實體抽取方法
鑒于基于規則和詞典實體的局限性,為更具有可擴展性,相關研究人員將機器學習中的監督學習算法用于命名實體的抽取問題上。例如利用KNN算法和條件隨機場模型,實現了對Twitter文本數據中實體的識別。單純的監督學習算法在性能上不僅受到訓練集合的限制,并且算法的準確率和召回率都不理想。
相關研究者認識到監督學習算法的制約后,嘗試將監督學習算法和規則相互結合,取得了一定的成果。例如基于字典,使用最大熵算法在Medline論文摘要的GENIA數據集上進行了實體抽取實驗,實驗的準確率和召回率都在70%以上。近年來隨著深度學習的興起應用,基于深度學習的命名實體識別得到廣泛應用,例如基于雙向LSTM深度神經網絡和條件隨機場的識別方法,在測試數據上取得最好的的表現結果。 - 面向開放域的實體抽取方法
針對如何從少量實體實例中自動發現具有區分力的模式,進而擴展到海量文本去給實體做分類和聚類的問題。
例如通過迭代方式擴展實體語料庫的解決方案,其基本思想是通過少量的實體實例建立特征模型,再通過該模型應用于新的數據集得到新的命名實體。
例如基于無監督學習的開放域聚類算法,其基本思想是基于已知實體的語義特征去搜索日志中識別命名的實體,再進行聚類。
- 基于百科站點或垂直站點提取
- 主要應用:
- 命名實體作為索引和超鏈接
- 情感分析的準備步驟,再情感分析的文本中需要識別公司和產品,才能進一步為情感詞歸類
- 關系抽取的準備步驟
- QA系統(問答系統),大多數答案都是命名實體。
- 主要實現方法和工具
- DeepDive-斯坦福大學開源知識抽取工具(三元組抽取):從更少的結構化數據和統計推斷中提取結構化的知識而無需編寫任何復雜的機器學習代碼
- FudanNLP:主要是為中文自然語言處理而開發的工具包,也包含為實現這些任務的機器學習算法和數據集。可以實現中文分詞,詞性標注,實體名識別,句法分析,時間表達式識別,信息檢索,文本分類,新聞聚類等
- NLPIR分詞(中科院):主要功能包括中文分詞,英文分詞,詞性標注,命名實體識別,新詞識別,關鍵詞提取,支持用戶專業詞典和微博分析。NLPIR系統支持多種編碼、多種OS、多種開發語言和平臺。
- LTP(哈工大):語言技術平臺(Language Technology Platform,LTP)提供了一系列中文自然語言處理工具,用戶可以使用這些工具對于中文文本進行分詞、詞性標注、句法分析等工作
- 實體抽取,實體鏈接(兩個實體同一個含義需要規整),目前最主流的算法是CNN+LSTM+CRF進行實體識別
關系抽取
文本語料經過實體抽取之后得到的是一系列離散的命名實體(結點),為了得到語義信息,還需要從相關的語料中提取出實體之間的關聯關系(邊),才能將多個實體或概念聯系起來,形成網狀的知識結構。研究關系抽取技術,即研究如何解決從文本預料中抽取實體間的關系。
-
根據對標注數據的依賴程度,實體關系抽取方法可分為有監督方法、半監督方法、無監督學習方法和開放式抽取方法
- 有監督的實體關系抽取
有監督學習方法是最基本的實體關系抽取方法,其主要思想是在已標注的訓練數據的基礎上訓練機器學習模型,然后對測試數據的關系類型進行識別。有監督學習方法包括有以下三種方法:- 基于規則的方法
根據待處理語料涉及領域的不同,通過人工或機器學習的方法總結歸納出相應的規則或模板,然后用模板匹配方法進行實體關系抽取 - 基于特征的方法
一種簡單、有效的實體關系抽取方法,其主要思想是從關系句子實例的上下文中提取有用信息(包括詞法信息、語法信息)作為特征,構造特征向量,通過計算特征向量的相似度來訓練實體關系抽取模型。該方法的關鍵在于尋找類間有區分度的特征,形成多維加權特征向量,再采用合適的分類器進行分類。 - 基于核函數的方法
包括詞序列核函數方法、依存樹核函數方法、最短路徑依存樹核函數方法、卷積樹核函數方法以及它們的組合核函數方法和基于特征的實體關系抽取方法可以相互補充。
- 基于規則的方法
- 半監督的實體關系抽取
- 基于Bootstrapping的半監督實體關系抽取方法從包含關系種子的上下文中總結出實體關系序列模式,再利用關系序列模式去發現更多的關系種子實例,形成新的關系種子集合
- 基于系統學習(co-learning)方法,該方法利用兩個條件獨立的特征集來提供不同且互補的信息,從而減少標注錯誤
- 無監督的實體關系抽取
無監督實體關系抽取方法無需依賴實體關系標注語料,其實現包括關系實例聚類和關系類型詞選擇兩個過程。首先根據實體對出現的上下文將相似度高的實體對聚為一類,再選擇具有代表性的詞語來標記這種關系。 - 開放式實體關系抽取
該方法能避免針對特定關系類型人工構建語料庫,可以自動完成關系類型發現和關系抽取任務。通過借助外部領域無關的實體知識庫(如DBPedia、YAGO、OpenCyc、FreeBase或其他領域知識庫)將高質量的實體關系實例映射到大規模文本中,根據文本對齊方法從中獲得訓練數據,然后使用監督學習方法來解決關系抽取問題。
- 有監督的實體關系抽取
-
主要實現方法和工具
- Piece-Wise-CNN和LSTM+Attention:是實體間關系抽取,拿到知識圖譜最小單元三元組的經典算法
- DeepKE:基于深度學習的開源中文關系抽取工具
- DeepDive:是斯坦福大學開發的信息抽取系統,能處理文本、表格、圖表、圖片等多種格式的無結構數據,從中抽取結構化的信息。系統集成了文件分析、信息提取、信息整合、概率預測等功能。Deepdive的主要應用是特定領域的信息抽取,系統構建至今,已在交通、考古、地理、醫療等多個領域的項目實踐中取得了良好的效果;在開放領域的應用。
- Standford NLP:提供了開放信息抽取OpenIE功能用于提取三元組SPO(Subject-Predicate-Object),所以使用Standford NLP更貼合知識圖譜構建任務
- Reverd :是華盛頓大學研發的開放三元組抽取工具,可以從英文句子中抽取形如(argument1,relation,argument2)的三元組。它不需要提前指定關系,支持全網規模的信息抽取
- SOFIE:抽取鏈接本體和本體間關系。SOFIE是一個自動化本體擴展系統,由max planck institute開發。它可以解析自然語言文件,從文本中抽取基于本體的事件,將它們鏈接到本體上,并基于邏輯推理進行消歧
- OLLIE:開放三元組知識抽取工具。華盛頓大學研發的知識庫三元組抽取組件,OLLIE是第二代提取系統。Reverb的抽取建立在文本系列上,而OLLIE則支持基于語法依賴樹的關系抽取,對于長線依賴效果更好。
屬性抽取
屬性抽取的目標是從不同信息源中采集特定實體的屬性信息,如針對某個公眾人物,可以從網絡公開信息中得到其昵稱、生日、國籍、教育背景等信息。
屬性提取的任務是為每個本體語義類構造屬性列表(如城市的屬性包括特色菜、地位位置、人口等),而屬性值提取則為一個語義類的實體附加屬性值。屬性和屬性值的抽取能夠形成完整的實體概念的知識圖譜維度。常見的屬性和屬性值抽取方法包括從百科類站點中提取,從垂直網站中進行包裝器歸納,從網頁表格中提取,以及利用手工定義或自動生成的模式從句子和查詢日志中提取。
常見的語義類/實體的常見屬性/屬性值可以通過解析百科類站點中的半結構化信息(如維基百科的信息盒和百度百科的屬性表格)而獲得。盡管通過這種簡單手段能夠得到高質量的屬性,但同時需要采用其他方法來增加覆蓋率(即為語義類增加更多屬性以及為更多的實體添加屬性值)。
- 基于規則匹配的抽取方法
基于模式匹配的抽取方法也叫基于規則的抽取方法,就是基于事先構造一系列規則來抽取文本中實體-屬性的方法。這種方法首先定義相關抽取規則,如定義相關規范的tag標或人工編寫正則表達式,再把這些規則與文本進行匹配,通過匹配的結果得到抽取的實體及其屬性。基于規則的抽取系統一般由兩部分組成,一個是一系列關于抽取規則的集合,另一個是一系列定義匹配策略的集合。 - 基于模式匹配的實體-屬性抽取方法
基于模式匹配的方法根據其定義模式的方法可以分成三種 :- 基于手工定義的抽取
具有通過相關領域專業知識的人員進行人工的定義一系列模式 - 基于有監督學習的抽取
首先收集相關語料組成大規模的語料庫,再通過人工標準的非結構化例子訓練自動獲得模式,構建具有大量實體-屬性的知識庫 - 基于迭代的抽取
首先定義模板元組,再對這些模板元組進行迭代,自動產生模式,從而進行對實體-屬性的抽取。
- 基于手工定義的抽取
- 基于關系分類的實體-屬性抽取方法
把屬性抽取問題轉化為關系分類問題。
首先把抽取的兩個實體視為一個樣本,實體直接的關系視為標簽,再通過手工的方式構建樣本特征,最后依據這些特征對樣本進行分類,分類的結果是實體之間的關系,也就是屬性。
通常借助機器學習的方法進行,如支持向量機(SVM)、神經網絡等,通過對大量語料庫的訓練來學習分類模型,從而對實體-屬性進行抽取。
按照其語料庫的建設方式可以分為遠程監督的方法和全監督的方法。- 基于遠程監督的方法基本由機器構建語料庫
- 基于全監督的方法則由人工構建語料庫。
由于由人工來構建語料庫耗費大量的時間和精力,通常目前更熱衷于使用遠程監督的方法來構建語料庫。
- 基于聚類的實體-屬性抽取方法
把屬性抽取問題轉化為聚類問題。
首先構建實體特征向量,再基于相關方法對這些特征向量進行聚類,最后得到的聚類就是實體的屬性。例如對于類別屬性可以采用弱監督的聚類方法,對應產品屬性可以采用無監督的聚類方法等。
3.2知識表示
傳統的知識表示方法主要是以RDF(Resource Description Framework資源描述框架)的三元組SPO來符號性描述實體之間的關系。則會中表示方法通用簡單,受到廣泛認可,但是其在計算效率、數據稀疏性等方面面臨諸多問題。近年來,以深度學習為代表的表示學習技術取得了重要的進展,可以將實體的語義信息表示為稠密低維實值向量,進而在低維空間中高效計算實體、關系及其之間的復雜語義關聯,對知識庫的構建、推理、融合以及應用均具有重要意義。
- 知識表示學習的代表模型有
-
距離模型
距離模型提出了知識庫中實體以及關系的結構化表示方法,其基本思想是:首先將實體用向量進行表示,再通過關系矩陣將實體投影到與實體關系對的向量空間中,最后通過計算投影向量之間的距離來判斷實體間已存在的關系的置信度。由于距離模型中的關系矩陣是兩個不同的矩陣,使得協同性較差。 -
單層神經網絡模型
針對上述提到的距離模型中的缺點,提出了采用單層神經網絡的非線性模型(single layer model,SLM),模型為知識庫中每個三元組(h, r, t) , 定義了以下形式的評價函數:
其中,
是關系r的向量化表示。
g()為tanh函數;
是通過關系r定義的兩個矩陣。單層神經網絡模型的非線性操作雖然能夠進一步刻畫實體在關系下的語義相關性,但在計算開銷上卻大大增加。 -
雙線性模型
雙線性模型又叫隱變量模型(latent factor model,LFM)
模型為知識庫中每個三元組(h, r, t)定義的評價函數具有如下形式:
其中,
是通過關系r定義的雙線性變換矩陣。
是三元組中頭實體和尾實體的向量化表示。雙線性模型主要是通過基于實體間關系的雙線性變換來刻畫實體在關系下的語義相關性。模型不僅形式簡單、易于計算,而且還能有效刻畫實體間的協同性。基于上述工作,嘗試將雙線性變換矩陣r M 變換為對角矩陣,提出了DISTMULT模型,不僅簡化了計算的復雜度,而且實驗效果得到了顯著提升 -
神經張量模型
基本思想是:在不同的維度下,把實體聯系起來,表示實體間復雜的語義聯系。模型為知識庫中的每個三元組(h,r, t)定義了以下形式的評價函數:
其中
是關系r的向量化表示;
g()是tanh函數。
是一個三階張量
是通過關系r定義的兩個矩陣
神經張量模型在構建實體的向量表示時,是把該實體中的所有單詞的向量取平均值,一方面可以重復使用單詞向量構建實體,另一方面將有利于增強低維向量的稠密程度以及實體和關系的語義計算。 -
矩陣分解模型
通過矩陣分解的方式可得到低維的向量表示,故不少研究者提出可采用該方式進行知識表示學習,其中的典型代表是RESACL模型。在RESACL模型中,知識庫中的三元組(h,r,t)集合被表示為一個三階張量,若該三元組存在,張量中對應位置的元素被置為1,否則置為0。通過張量分解算法,可將張量中每個三元組(h,r,t)對應的張量值解為雙線性模型中的知識表示形式
并使
盡量小 -
翻譯模型
受到平移不變現象的啟發,提出了TransE模型,即把知識庫中實體之間的關系看成是沖實體間的某種平移,并用向量表示。關系lr可以看作是從頭實體向量lh到尾實體向量lt的翻譯。對于知識庫中的每個三元組(h,r,t),TransE都希望滿足以下關系
其損失函數為:
-
該模型的參數較少,計算的復雜度顯著降低。同時,TransE模型在大規模稀疏知識庫上也同樣具有較好的性能和可擴展性。
3.3知識融合(knowledge fusion)
經由知識抽取后的信息單元間的關系是扁平化的,缺乏層次性和邏輯性,同時存在大量冗余甚至錯誤的信息碎片。知識融合旨在解決如何將關于同一實體或概念的多源描述信息融合起來,把多個知識庫中的知識進行整合,形成一個知識庫的過程,在這個過程中,主要關鍵技術包含指代 消解、實體消歧、實體鏈接
關鍵問題及解決
(1)實體統一(共指消解)
多源異構數據在集成的過程中,通常會出現一個現實世界實體對應多個表象的現象,導致這種現象發生的原因可能是:拼寫錯誤、命名規則不同、名稱變體、縮寫等。而這種現象會導致集成后的數據存在大量冗余數據、不一致數據等問題,從而降低了集成后數據的質量,進而影響了基于集成后的數據做分析挖掘的結果,分辨多個實體表象是否對應同一個實體的問題即為實體統一。如重名現象,馬云(杰克馬)。
-
基于兩者混用的方法
-
模式匹配
模式匹配主要是發現不同關聯數據源中屬性之間的映射關系,主要解決三元組中謂詞之間的沖突問題。換言之,解決不同關聯數據源對相同屬性采用不同標識符的問題,從而實現異構數據源的集成。
-
賓語沖突消解
賓語沖突消解是解決多源關聯數據賓語不一致問題。
(2)實體消歧
實體消歧的本質在于一個詞有多個可能的語義,即在不同的上下文中所表達的含義不同。例如我的手機是蘋果。我喜歡吃蘋果。
- 基于詞典的語義消歧
基于詞典的詞義消歧方法研究的早期代表工作是Lesk于1986的工作。給定某個待消解詞及其上下文,該工作的思想是計算語義詞典中各個詞義的定義和上下文之間的覆蓋度,選擇覆蓋度最大的作為待消解詞在其上下文中的正確詞義。但由于詞典中語義的定義通常比較簡潔,這使得與待消解詞的上下文得到的覆蓋度為0,造成消歧性能不高。 - 有監督語義消歧
有監督的消歧方法使用詞義標注語料來建立消歧模型,研究的重點在于特征的表示。常見的上下文特征可歸納為三個類型:- 詞匯特征通常指待消解詞上下窗口內出現的詞及其詞性
- 句法特征利用待消解詞在上下文中的句法關系特征,如動-賓關系、是否帶主/賓語、主/賓語組塊類型、主/賓語中性詞等
- 語義特征在句法關系的基礎上添加了語義類信息,如主/賓語中心詞的語義類,甚至還可以是語義角色標注類信息。
- 無監督和半監督語義消歧
雖然有監督的消歧方法能夠取得較好的消歧性能,但需要大量的人工標注語料,費時費力。為克服對大規模語料的需要,半監督或無監督方法僅需要少量或不需要人工標注語料。一般來說,雖然半監督或無監督方法不需要大量的人工標注數據,但依賴于一個大規模的未標注語料,以及在該語料上的句法分析結果。
(3)實體鏈接(Entity Linking)
實體對齊 (entity alignment) 也稱為實體匹配 (entity matching)或實體解析(entity resolution)或者實體鏈接(entity linking),指對于從非結構化數據(如文本)或半結構化數據(如表格)中抽取得到的實體對象,將其鏈接到知識庫中對應的正確實體對象的操作。其基本思想是首先根據給定的實體指稱項,從知識庫中選出一組候選實體對象,再通過相似度計算把指稱項連接到正確的實體對象,通過打分的方法對指稱項最高的實體作為目標實體。
實體指稱項是在具體上下文中出現的待消歧實體名,是實體消歧任務的基本單位。
-
向量空間模型
相似度計算依據:實體指稱項上下文和目標實體上下文特征的共現信息來確定- 過程:實體概念和實體指稱項都被表示為上下文中Term組成的向量(Term通常為詞,還可能包括概念、類別等)。基于Term向量表示,向量空間模型通過計算兩個向量之間的相似度對實體概念和指稱項之間的一致性進行打分。
- 研究重點
- 如何抽取有效的特征表示:上下文中的詞、上下文抽取的概念和實體、從知識源獲取實體指稱項的額外信息
- 如何更有效地計算向量之間的相似度:Cosine相似度、上下文詞重合度、分類器等機器學習方法
-
主題一致性模型
一致性依據:實體指標項的候選實體概念和指稱項上下文中的其他實體概念的一致性程度。
計算一致性打分時,通常考慮如下兩方面因素:- 上下文實體的重要程度:與主題的相關程度。傳統方法使用實體和文本內其他實體的語義關聯的平均值作為重要程度的打分。
其中,O是實體指稱項上下文中所有實體的結合,sr(e,ei)是實體e和實體ei之間的語義關聯值,通常基于知識資源計算 - 如何計算一致性:大部分使用目標實體和上下文中其他實體的加權語義關聯作為一致性打分
其中,o是實體指稱項,w(e,o)是實體e的權重,而sr(e.ei)是實體之間的語義關聯度。
- 上下文實體的重要程度:與主題的相關程度。傳統方法使用實體和文本內其他實體的語義關聯的平均值作為重要程度的打分。
-
協同實體鏈接
以上兩種方法忽略了單篇文檔內所有實體指標項的目標實體之間的關系。
方法:把單篇文檔的協同實體鏈接看成一個優化任務,其優化任務的目標函數由以下公式決定:
其中ys指的是實體指標項s的目標實體,So是單篇文檔內所有實體指稱項的集合,r(ys,ys’)是目標實體之間的語義關聯,fs(ys)是實體指標項s和其目標實體ys的一致性打分。- 第一部分:對單篇文檔內所有實體指稱項的目標實體之間的關系進行建模
- 第二部分:對單篇文檔內實體指稱項和其目標實體之間的一致性進行建模
-
基于神經網絡的實體消歧方法
卷積網絡等
知識融合的流程和步驟
知識 融合
數據預處理
原始數據的質量會直接影響到最終鏈接的結果,不同的數據集對同一實體的描述方式往往是不相同的,對這些數據進行歸一化是提高后續鏈接精確度的重要步驟。常用的數據預處理有:
- 語法正則化
- 語法匹配:如聯系電話的表示方式
- 綜合屬性:如家庭地址的表達方式
- 數據正則化
- 移除空格、《》、“”、-等符號
- 輸入錯誤類的拓撲錯誤
- 用正式名字替換昵稱和縮寫等
記錄鏈接
假設兩個實體的記錄x和y,x和y在第i個屬性上的值是< script type=“math/tex” id=“MathJax-Element-8”>x_i,y_i< /script>,則通過如下兩步進行記錄連接
- 屬性相似度:綜合單個屬性相似度得到屬性相似度向量
- 實體相似度:根據屬性相似度向量得到一個實體的相似度
(1)屬性相似度的計算
屬性相似度的計算有多種方法,常用的有編輯距離、集合相似度計算、基于向量的相似度計算等
- 編輯距離:Levenstein、Wagner and Fisher、Edit Distance with Afine Gaps
- 集合相似度計算:Jaccard系數、Dice
- 基于向量的相似度計算:Cosine相似度、TFIDF相似度
(2)實體相似度的計算
實體關系發現框架 Limes
- 聚合
- 加權平均:對相似度得分向量的各個分量進行加權求和,得到最終的實體相似度
- 手動制定規則:給每一個相似度向量的分量設置一個閾值,若超過該閾值則將兩實體相連
- 分類器:采用無監督/半監督訓練生成訓練集合分類
- 聚類
- 層次聚類:通過計算不同類別數據點之間的相似度對在不同的層次的數據進行劃分,最終形成樹狀的聚類結構
- 相關性聚類:使用最小的代價找到一個聚類方案
- Canopy+K-means:無需提前指定K值進行聚類
- 知識表示學習-知識嵌入
把知識圖譜中的實體和關系都映射低維空間向量,直接用數學表達式來計算各個實體之間相似度。這類方法不依賴任何的文本信息,獲取到的都是數據的深度特征。
把兩個知識圖譜映射到同一空間的方法有多種,它們的橋梁是預連接實體對(訓練數據),具體可以看詳細論文。
關于完成映射后如何進行實體連接:KG向量訓練達到穩定狀態之后,對于KG1每一個沒有找到鏈接的實體,在KG2中找到與之距離最近的實體向量進行鏈接,距離計算方法可采用任何向量之間的距離計算,例如歐氏距離或Cosine距離
分塊
分塊(Blocking)是從給定的知識庫中的所有實體對中,選出潛在匹配的記錄對作為候選項,并將候選項的大小盡可能的縮小。之所以如此,是因為數據太多了,我們很難去一一連接。
- 常用的分塊方法有
- 基于Hash函數的分塊
常見的Hash函數有:- 字符串的前n個字
- n-grams
- 結合多個簡單的hash函數等
- 鄰近分塊
鄰近分塊算法包含Canopy聚類、排序鄰居算法、Red-Blue Set Cover等。
- 基于Hash函數的分塊
負載均衡
- 負載均衡(Load Balance)來保證所有塊中的實體數目相當,從而保證分塊對性能的提升程度。最簡單的方法是多次Map-Reduce操作。
知識融合實現工具
-
本體對齊工具-Falcon-AO
Falcon-AO是一個自動的本體匹配系統,已經成為RDF(S)和OWL所表達的Web本體相匹配的一種實用和流行的選擇。編程語言為Java。
匹配算法庫包含V-Doc、I-sub、GMO、PBM四個算法。- V-Doc即基于虛擬文檔的語言學匹配,它是將實體及其周圍的實體、名詞、文本等信息作一個集合形成虛擬文檔的形式。可以用TD-IDF等算法進行操作。
- I-Sub是基于編輯距離的字符串匹配。
I-Sub和V-Doc都是基于字符串或文本級別的處理。更進一步的就有了GMO - GMO是對RDF本體的圖結構上做的匹配。
- PBM基于分而治之的思想
首先經由PBM進行分而治之,后進入到V-Doc和I-Sub,GMO接收兩者的輸出做進一步處理,GMO的輸出連同V-Doc和I-Sub的輸出經由最終的貪心算法進行選取。
-
Limes實體匹配
Limes是一個基于度量空間的實體匹配發現框架,適合于大規模數據鏈接,編程語言是Java。其整體框架為:
-
Sematch(開源2017)
用于知識圖譜的語義相似性的開發、評價和應用的集成框架。Sematch支持對概念、詞和實體的語義相似度的計算,并給出得分。Sematch專注于基于特定知識的語義相似度量,它依賴于分類(比如深度、路徑長度)中的結構化知識和統計信息內容(語料庫和語義圖譜) -
基于Neo4j圖數據庫的知識圖譜的實體對齊(目前最常用)
計算相關性的基本步驟分為三步:- 鏈接neo4j數據庫,并且讀取出里面的數據
- 對齊算法運算
- 拿到運算結果設定一個閾值,來判斷大于閾值的就是相關
實體對齊基礎:基于Neo4j 圖數據庫的知識圖譜的關聯對齊-最小編輯距離-jacard算法
python爬蟲neo4j知識圖譜實體的屬性補全
- 使用jieba完成實體統一
jieba是優秀的中文分詞第三方庫,中文文本需要通過分詞獲得單個的詞語,jieba是優秀的中文分詞第三方庫,需要額外安裝,jieba庫提供三種分詞模式,最簡單只需掌握一個函數
- TF-IDF
Term Frequency-inverse Document Frequency是一種針對關鍵詞的統計分析方法,用于評估一個詞對一個文件集或者一個語料庫的重要程度。一個詞的重要程度跟它在文章中出現的次數成正比,跟它在語料庫出現的次數成反比。這種計算方式有效避免常用詞對關鍵詞的影響,提高了關鍵詞和文章之間的相關性。 - 基于Silk的知識融合
Silk是一個集成異構數據源的開源框架。編程語言為python。提供了專門的Silk-LSL語言來進行具體處理。提供了圖形化用戶界面Silk Workbench,用戶可以很方便的進行記錄鏈接。
Silk的整體框架為:
- 使用Dedupe包實現實體匹配
dedupe是一個python包,在知識融合領域有著重要作用,主要就是用來實體匹配。dedupe是一個用于fuzzy matching,record deduplication和entity-resolution的python庫。它基于active learning的方法,只需用戶標注它在計算過程選擇的少量數據,即可有效地訓練出復合的blocking方法和record間相似性的計算方法,并通過聚類完成匹配。dedupe支持多種靈活的數據類型和自定義類型。
3.4知識加工(knowledge processing)
海量數據在經信息抽取、知識融合之后得到一系列基本的事實表達,但這并不等同于知識,要想獲得結構化、網絡化的知識體系,還需要經過質量評估之后(部分需要人工參與鑒別),才能將合格的部分納入知識體系中以確保知識庫的質量,這就是知識加工的過程。知識加工主要包括三方面內容:本體構建、知識推理和質量評估。
本體構建
本體是某個領域中抽象概念的集合、概念框架,如“人”、“事”、“物”等。本體可以采用人工編輯的方式手動構建(借助本體編輯軟件),也可以以數據驅動的自動化方式構建本體。因為人工方式工作量巨大,且很難找到符合要求的專家,因此當前主流的全局本體庫產品,都是從一些面向特定領域的現有本體庫出發,采用自動構建技術逐步擴展得到的。
- 自動化本體構建過程包含三個階段:
- 實體并列關系相似度計算
- 實體上下位關系抽取
- 本體的生成
如上圖所示,當知識圖譜最初得到“戰狼2”,“流浪地球”,“北京文化”這三個實體時,可能會認為它們三個之間并沒有什么差別。但當它去計算三個實體之間的相似度后,會發現,“戰狼2”和“流浪地球”之間可能更相似,與“北京文化”差別更大一些
具體而言,
- 第一步下來,知識圖譜實際上還沒有一個上下層的概念。它并不知道,“流浪地球”和“北京文化”不隸屬于一個類型,無法比較
- 第二步 實體上下位關系抽取 需要去完成這樣的工作,從而生成第三步的本體
- 當三步結束后,知識圖譜可能就會明白,“戰狼2”和“流浪地球”是“電影”這個實體下的細分實體。它們和“北京文化”這家公司并不是一類。
知識推理
完成了本體構建這一步之后,一個知識圖譜的雛形便已經搭建好了。但可能在這個時候,知識圖譜之間大多數關系都是殘缺的,缺失值非常嚴重,可以使用知識推理技術,去完成進一步的知識發現。知識推理就是指從知識庫中已有的實體關系數據出發,經過計算機推理,建立實體間的新關聯,從而擴展和豐富知識網絡。
當然知識推理的對象也并不局限于實體間的關系,也可以是實體的屬性值,本體的概念層次關系等,例如:
- 推理屬性值:已知某實體的生日屬性,可通過推理得到該實體的年齡屬性
- 推理概念:已知(老虎,科,貓科)和(貓科,目,食肉目)
知識推理的算法主要可分為三類:
- 基于知識表達的關系推理技術
- 基于概率圖模型的關系推理技術路線示意圖
- 基于深度學習的關系推理技術路線示意圖
- 知識推理常用工具
- 單調推理機
單調推理機montony-inference是一個基于perl語言的內存計算框架的單調語義推理軟件。
輸入為兩部分:- 事實抽取出三元組
- 自定義的一套規則語法的三元組。輸出為推理后得出的事實三元組,使用排列組合算法產生新事實加入內存再次迭代計算,已知沒有新的事實產生輸出
- RacerPro:OWL推理器和推理服務器RacerPro
RacerPro是語義網的OWL推理器和推理服務器。RACER代表Renamed ABox和Concept Expression Reasoner。RacerPro是軟件的商業名稱。 - Jena:建立鏈接數據的java框架Jena
Jena用來構建語義Web和關聯數據的免費開源的Java框架。它為RDF、RDFS和OWL、SPARQL、GRDDL提供了一個編程環境,并且包括基于規則的推理引擎 - RDFox:牛津大學的知識庫推理工具
RDFox是一個高度可擴展的內存RDF三元組存儲,支持共享內存并行OWL2 RL推理。它是用c++編寫的跨平臺軟件,帶有一個java包裝器,運行和任何基于java的解決方案(包括OWL API)輕松集成 - Virtuoso:老牌的知識庫查詢存儲推理技術平臺
Virtuoso是一個可擴展的跨平臺服務器,把關系、圖形和文檔數據管理與Web應用程序服務器和Web服務平臺功能相結合。Virtouso也是一個OWL推理者。Virtuoso直接提供RDB2RDF(以前稱為SQL2RDF)通過Sponger及其墨盒,還可以從GRDDL、RDFa、微格式和更多輸入提供RDF - GraphDB:語義數據查詢推理引擎
GraphDB(前OWLIM)是最可擴展的語義庫。它包括三元組存儲、推理引擎和SPARQL查詢引擎。它被封裝為Sesame RDF 數據庫的存儲和推理層(SAIL)。GraphDB使用TRREE引擎執行RDFS、OWL DLP、OWL Horst推理和OWL 2 RL。最支持的表達式語言是OWL 2 RL ,包含RDFS。GraphDB提供可配置的推理支持和性能。 - Hermit:OWL推理機
Hermit是使用OWL編寫的本體論的推理者。給定一個OWL文件,HermiT可以確定本體是否一致,識別類之間的包含關系等等。HermiT是第一個公開可用的OWL推理器,基于一種新穎的“超高級”演算,提供比任何先前已知的算法更有效的推理。以前需要幾分鐘或幾小時進行分類的本體通常可以通過HermiT分類只需幾秒,且HermiT是能夠對一些本體進行分類的第一推理器,這些本體以前被證明對于任何可用系統來說太復雜。 - FaCT++:OWL DL推理器
FaCT++是一個在C++中實現的OWL DL推理器。它是一個基于tableaux的表達式描述邏輯(DL)的推理器。它涵蓋OWL和OWL 2(不支持關鍵約束和一些數據類型)基于DL的本體語言。它可以用作獨立的DIG推理器,或作為OWL API的應用程序的后端推理器。現在它被用作ProtegeOWL編輯器中的默認推理器之一。
- 單調推理機
質量評估
質量評估是知識庫構建技術的重要組成部分,這一部分存在的意義在于:可以對知識的可信度進行量化,通過舍棄置信度較低的知識來保障知識庫的質量。
更新和維護
在知識圖譜更新過程中,根據知識表達的方法可以發現一些新出現的實體、屬性以及關系。在構建的一般步驟包括關系屬性的抽取,實體關系的抽取以及實體關系的推理過程中,需要把海量的實體、屬性、關系轉化為機器能夠讀懂的知識表示方法(XML/OWL)。知識圖譜的更新包含數據模式層更新和數據層更新,又可以按照層次進行劃分定義為實體屬性的更新和推理過程的更新。在知識圖譜更新過程中,根據知識表達的方法可以發現一些新出現的實體、屬性。
(1)模式層更新
模式層是知識圖譜體系中最為重要的一個層次,是數據的整理和實體關系存儲的管理層面。在模式層,以語義網的形式存儲著大量實體、實體的一般屬性。在知識圖譜的更新過程中,掌握著更新層次的主體推理算法。若更新時間小于上一次數據庫同步的時間,便可以利用算法對實體進行更新,對實體屬性進行增加修改操作。若推理算法可擴展性強,還可以對實體間關系進行預測補全。
- 現階段在模式層的更新過程中,一般采用兩種方式進行更新操作
- 整體數據替換的方式,在數據集成存儲中整體下載成規模的結構性數據并進行符合當前知識圖譜本體規則的重塑
- 借助網絡眾包的形式進行碎片化知識整理
(2)數據層更新
知識圖譜的數據更新方式和傳統數據庫的數據更新有所不同。傳統的數據更新只關注數據的本身操作,更注重數據的更新時間或有無臟讀等模式化操作,并未考慮整體的結構。知識圖譜的更新和維護中,需要尋找待更新實體以及持續補充實體間的關聯,采用良好的實體顯示模式,可以判斷兩個實體間的關聯,這叫做知識圖譜的補全。
在不同角度解決復雜關系模型的問題上,可選取較為簡單準確的Trans E推理模型加以改進,得出更新過程中需要改進的最大實體數,作為關聯更新算法的數據源加以利用。確定更新算法,采用知識表示模型對知識圖譜中實體進行增加、修改操作。確定實體間關系后,謹慎處理實體間刪除操作。增加時間戳并且限定更新空間,估算更新頻率,改進更新關聯算法。使得知識圖譜在最短的時間效率內更新最大化實體,考慮更新頻率的優化問題,單位時間內減少更新次數。
信息孤島:相互之間在功能上不關聯互助、信息不共享互換以及信息與業務流程和應用相互脫節的信息系統。
- 知識圖譜的內容更新有兩種方式
- 全面更新:指以更新后的全部數據為輸入,從零開始構建知識圖譜。
- 優:方法簡單
- 缺:資源消耗大且需要耗費大量人力資源進行系統維護
- 增量更新:以當前新增數據為輸入,向現有知識圖譜中添加新增知識
- 優:資源消耗小
- 缺:目前仍需要大量人工干預(定義規則等),因此實施起來十分困難
- 全面更新:指以更新后的全部數據為輸入,從零開始構建知識圖譜。
四、知識圖譜分析工具&開源項目
-
知識圖譜搜索引擎Magi
Magi是由Peak Labs研發的基于機器學習的信息抽取和檢索系統,它能將任何領域的自然語言文本中的知識提取成結構化的數據,通過終身學習持續聚合和糾錯,進而為人類用戶和其他人工智能提供可解析、可檢索、可溯源的知識體系。
-
中文知識圖譜資源庫
- OpenKG開放資源共享平臺,包含16類的知識圖譜,70個知識圖譜相關工具,此外經常發布知識圖譜論文解讀
- 中文開放知識圖譜Schema
- 中文開放知識圖譜眾包平臺
-
Github上不錯的知識圖譜項目
- 利用網絡上公開的數據構建一個小型的證券知識圖譜/知識庫
- 醫療保險領域知識圖譜
- 農業知識圖譜(AgriKG):主要功能包括命名實體識別、實體查詢、關系查詢、農業知識分類、農業知識問答
- 漫威英雄的知識圖譜
- 基于知識圖譜的《紅樓夢》人物關系可視化及問答系統
- 小型金融知識圖譜構建流程
- 中式菜譜知識圖譜可視化(CookBook-KG)
- 從無到有構建一個電影知識圖譜,并基于該KG,開發一個簡易的KBOA程序
- 上市公司高管圖譜
- 通用領域知識圖譜
- 免費1.5億實體通用領域知識圖譜