1. 程式人生 > >通俗易懂解釋知識圖譜(Knowledge Graph)

通俗易懂解釋知識圖譜(Knowledge Graph)

1. 前言

隨著大資料的應用越來越廣泛,人工智慧也終於在幾番沉浮後再次煥發出了活力。除了理論基礎層面的發展以外,本輪發展最為矚目的是大資料基礎設施、儲存和計算能力增長所帶來的前所未有的資料紅利。

未來伴隨著深度學習對於大資料的紅利消耗殆盡,如果基礎理論方面沒有新的突破,深度學習模型效果的天花板將日益迫近。而另一方面,大量知識圖譜不斷湧現,這些蘊含人類大量先驗知識的寶庫卻尚未被深度學習有效利用。

知識圖譜( Knowledge Graph)的概念由谷歌2012年正式提出,旨在實現更智慧的搜尋引擎,並且於2013年以後開始在學術界和業界普及。目前,隨著智慧資訊服務應用的不斷髮展,知識圖譜已被廣泛應用於智慧搜尋、智慧問答、個性化推薦、情報分析、反欺詐

等領域。另外,通過知識圖譜能夠將Web上的資訊、資料以及連結關係聚集為知識,使資訊資源更易於計算、理解以及評價,並且形成一套Web語義知識庫。知識圖譜以其強大的語義處理能力與開放互聯能力,可為全球資訊網上的知識互聯奠定紮實的基礎,使Web 3.0提出的“知識之網”願景成為了可能。

2. 知識圖譜定義

知識圖譜:是結構化的語義知識庫,用於迅速描述物理世界中的概念及其相互關係。

知識圖譜通過對錯綜複雜的文件的資料進行有效的加工、處理、整合,轉化為簡單、清晰的“實體,關係,實體”的三元組,最後聚合大量知識,從而實現知識的快速響應和推理。

知識圖譜有自頂向下自底向上兩種構建方式。所謂自頂向下構建是藉助百科類網站等結構化資料來源,從高質量資料中提取本體和模式資訊,加入到知識庫中;所謂自底向上構建,則是藉助一定的技術手段,從公開採集的資料中提取出資源模式,選擇其中置信度較高的新模式,經人工稽核之後,加入到知識庫中。

看一張簡單的知識圖譜:

image

如圖所示,你可以看到,如果兩個節點之間存在關係,他們就會被一條無向邊連線在一起,那麼這個節點,我們就稱為實體(Entity),它們之間的這條邊,我們就稱為關係(Relationship)

知識圖譜的基本單位,便是“實體(Entity)-關係(Relationship)-實體(Entity)”構成的三元組,這也是知識圖譜的核心。

  • 實體: 指的是具有可區別性且獨立存在的某種事物。實體是知識圖譜中的最基本元素,不同的實體間存在不同的關係。如圖中的“中國”、“北京”、“16410平方公里”等。

  • 關係: 關係是連線不同的實體,指代實體之間的聯絡。通過關係節點把知識圖譜中的節點連線起來,形成一張大圖。如圖中的“人口”、“首都”、“面積”等

3. 資料型別和儲存方式

知識圖譜的原始資料型別一般來說有三類(也是網際網路上的三類原始資料):

  • 結構化資料(Structed Data):如關係資料庫
  • 半結構化資料(Semi-Structed Data):如XML、JSON、百科
  • 非結構化資料(UnStructed Data):如圖片、音訊、視訊、文字

如何儲存上面這三類資料型別呢?一般有兩種選擇,一個是通過RDF(資源描述框架)這樣的規範儲存格式來進行儲存,還有一種方法,就是使用圖資料庫來進行儲存,常用的有Neo4j等。

RDF結構:
image

Neo4j結構:
image

在知識圖譜方面,圖資料庫比關係資料庫靈活的多。
在資料少的時候,關係資料庫也沒有問題,效率也不低。但是隨著知識圖譜變的複雜,圖資料庫的優勢會明顯增加。當涉及到2,3度的關聯查詢,基於圖資料庫的效率會比關係資料庫的效率高出幾千倍甚至幾百萬倍。

4. 知識圖譜的架構

知識圖譜在架構上分,可以分為邏輯架構和技術架構

4.1 邏輯架構

知識圖譜在邏輯上可分為模式層資料層兩個層次。

  • 模式層構建在資料層之上,是知識圖譜的核心,通常採用本體庫來管理知識圖譜的模式層。本體是結構化知識庫的概念模板,通過本體庫而形成的知識庫不僅層次結構較強,並且冗餘程度較小。

模式層:實體-關係-實體,實體-屬性-性值

  • 資料層主要是由一系列的事實組成,而知識將以事實為單位進行儲存。如果用(實體1,關係,實體2)、(實體、屬性,屬性值)這樣的三元組來表達事實,可選擇圖資料庫作為儲存介質,例如開源的Neo4j、Twitter的FlockDB、sones的GraphDB等。

資料層:比爾蓋茨-妻子-梅琳達·蓋茨,比爾蓋茨-總裁-微軟

4.2 技術架構

知識圖譜的整體架構如下圖所示,其中虛線框內的部分為知識圖譜的構建過程,同時也是知識圖譜更新的過程。

image

我們來一步一步的分析下這張圖。

  1. 虛線框的最左邊是三種輸入資料結構,結構化資料、半結構化資料、非結構化資料。這些資料可以來自任何地方,只要它對要構建的這個知識圖譜有幫助。
  2. 虛線框裡面的是整個的知識圖譜的構建過程。其中主要包含了3個階段,資訊抽取、知識融合、知識加工。
  3. 最右邊是生成的知識圖譜,而且這個技術架構是迴圈往復,迭代更新的過程。知識圖譜不是一次性生成,是慢慢積累的過程。
  • 資訊抽取:從各種型別的資料來源中提取出實體、屬性以及實體間的相互關係,在此基礎上形成本體化的知識表達;
  • 知識融合:在獲得新知識之後,需要對其進行整合,以消除矛盾和歧義,比如某些實體可能有多種表達,某個特定稱謂也許對應於多個不同的實體等;
  • 知識加工:對於經過融合的新知識,需要經過質量評估之後(部分需要人工參與甄別),才能將合格的部分加入到知識庫中,以確保知識庫的質量。

image

其實我們的構建知識圖譜的過程,就是資訊抽取、知識融合、知識加工三個過程,但是這三個過程都有各自的難點,下文通過從這三個模組出發,解析這三個模組說要解決的問題,會遇到的難點。

5. 資訊抽取

資訊抽取(infromation extraction)是知識圖譜構建的第1步,其中的關鍵問題是:如何從異構資料來源中自動抽取資訊得到候選指示單元?

資訊抽取是一種自動化地從半結構化和無結構資料中抽取實體、關係以及實體屬性等結構化資訊的技術。

涉及的關鍵技術包括:實體抽取、關係抽取和屬性抽取

5.1 實體抽取(Entity Extraction)

實體抽取又稱為命名實體識別(named entity recognition,NER),是指從文字資料集中自動識別出命名實體。實體抽取的質量(準確率和召回率)對後續的知識獲取效率和質量影響極大,因此是資訊抽取中最為基礎和關鍵的部分。

image

2012年Ling等人歸納出112種實體類別,並基於條件隨機場CRF進行實體邊界識別,最後採用自適應感知機演算法實現了對實體的自動分類,取得了不錯的效果。

但是隨著網際網路中內容的動態變化,採用人工預定義實體分類體系的方式已經很難適應時代的需求,因此提出了面向開放域的實體識別和分類研究。

在面向開放域的實體識別和分類研究中,不需要(也不可能)為每個領域或者每個實體類別建立單獨的語料庫作為訓練集。因此,該領域面臨的主要挑戰是如何從給定的少量實體例項中自動發現具有區分力的模型。

一種思路是根據已知的實體例項進行特徵建模,利用該模型處理海量資料集得到新的命名實體列表,然後針對新實體建模,迭代地生成實體標註語料庫。

另一種思路是利用搜索引擎的伺服器日誌,事先並不給出實體分類等資訊,而是基於實體的語義特徵從搜尋日誌中識別出命名實體,然後採用聚類演算法對識別出的實體物件進行聚類。

5.2 關係抽取(Relation Extraction)

文字語料經過實體抽取,得到的是一系列離散的命名實體,為了得到語義資訊,還需要從相關的語料中提取出實體之間的關聯關係,通過關聯關係將實體(概念)聯絡起來,才能夠形成網狀的知識結構,研究關係抽取技術的目的,就是解決如何從文字語料中抽取實體間的關係這一基本問題。

image

  1. 人工構造語法和語義規則(模式匹配)
  2. 統計機器學習方法
  3. 基於特徵向量或核函式的有監督學習方法
  4. 研究重點轉向半監督和無監督
  5. 開始研究面向開放域的資訊抽取方法
  6. 將面向開放域的資訊抽取方法和麵向封閉領域的傳統方法結合

5.3 屬性抽取(Attribute Extraction)

屬性抽取的目標是從不同資訊源中採集特定實體的屬性資訊。例如針對某個公眾人物,可以從網路公開資訊中得到其暱稱、生日、國籍、教育背景等資訊。屬性抽取技術能夠從多種資料來源中彙集這些資訊,實現對實體屬性的完整勾畫。

  1. 將實體的屬性視作實體與屬性值之間的一種名詞性關係,將屬性抽取任務轉化為關係抽取任務。
  2. 基於規則和啟發式演算法,抽取結構化資料
  3. 基於百科類網站的半結構化資料,通過自動抽取生成訓練語料,用於訓練實體屬性標註模型,然後將其應用於對非結構化資料的實體屬性抽取。
  4. 採用資料探勘的方法直接從文字中挖掘實體屬性和屬性值之間的關係模式,據此實現對屬性名和屬性值在文字中的定位。

6. 知識融合

image

通過資訊抽取,我們就從原始的非結構化和半結構化資料中獲取到了實體、關係以及實體的屬性資訊。

如果我們將接下來的過程比喻成拼圖的話,那麼這些資訊就是拼圖碎片,散亂無章,甚至還有從其他拼圖裡跑來的碎片、本身就是用來干擾我們拼圖的錯誤碎片。

拼圖碎片(資訊)之間的關係是扁平化的,缺乏層次性和邏輯性;
拼圖(知識)中還存在大量冗雜和錯誤的拼圖碎片(資訊)
那麼如何解決這一問題,就是在知識融合這一步裡我們需要做的了。

知識融合包括2部分內容:實體連結知識合併

6.1 實體連結

實體連結(entity linking):是指對於從文字中抽取得到的實體物件,將其連結到知識庫中對應的正確實體物件的操作。

其基本思想是首先根據給定的實體指稱項,從知識庫中選出一組候選實體物件,然後通過相似度計算將指稱項鍊接到正確的實體物件。

研究歷史:

  1. 僅關注如何將從文字中抽取到的實體連結到知識庫中,忽視了位於同一文件的實體間存在的語義聯絡。
  2. 開始關注利用實體的共現關係,同時將多個實體連結到知識庫中。即整合實體連結(collective entity linking)

實體連結的流程:

  1. 從文字中通過實體抽取得到實體指稱項。
  2. 進行實體消歧共指消解,判斷知識庫中的同名實體與之是否代表不同的含義以及知識庫中是否存在其他命名實體與之表示相同的含義。
  3. 在確認知識庫中對應的正確實體物件之後,將該實體指稱項鍊接到知識庫中對應實體。
  • 實體消歧:專門用於解決同名實體產生歧義問題的技術,通過實體消歧,就可以根據當前的語境,準確建立實體連結,實體消歧主要採用聚類法。其實也可以看做基於上下文的分類問題,類似於詞性消歧和詞義消歧

  • 共指消解主要用於解決多個指稱對應同一實體物件的問題。在一次會話中,多個指稱可能指向的是同一實體物件。利用共指消解技術,可以將這些指稱項關聯(合併)到正確的實體物件,由於該問題在資訊檢索和自然語言處理等領域具有特殊的重要性,吸引了大量的研究努力。共指消解還有一些其他的名字,比如物件對齊、實體匹配和實體同義。

6.2 知識合併

在構建知識圖譜時,可以從第三方知識庫產品或已有結構化資料獲取知識輸入。

常見的知識合併需求有兩個,一個是合併外部知識庫,另一個是合併關係資料庫。

將外部知識庫融合到本地知識庫需要處理兩個層面的問題:

資料層的融合,包括實體的指稱、屬性、關係以及所屬類別等,主要的問題是如何避免例項以及關係的衝突問題,造成不必要的冗餘
通過模式層的融合,將新得到的本體融入已有的本體庫中
然後是合併關係資料庫,在知識圖譜構建過程中,一個重要的高質量知識來源是企業或者機構自己的關係資料庫。為了將這些結構化的歷史資料融入到知識圖譜中,可以採用資源描述框架(RDF)作為資料模型。業界和學術界將這一資料轉換過程形象地稱為RDB2RDF,其實質就是將關係資料庫的資料換成RDF的三元組資料。

7. 知識加工

在前面,我們已經通過資訊抽取,從原始語料中提取出了實體、關係與屬性等知識要素,並且經過知識融合,消除實體指稱項與實體物件之間的歧義,得到一系列基本的事實表達。

然而事實本身並不等於知識。要想最終獲得結構化,網路化的知識體系,還需要經歷知識加工的過程。

知識加工主要包括3方面內容:本體構建、知識推理和質量評估

7.1 本體構建

本體(ontology)是指工人的概念集合、概念框架,如“人”、“事”、“物”等。

本體可以採用人工編輯的方式手動構建(藉助本體編輯軟體),也可以以資料驅動的自動化方式構建本體。因為人工方式工作量巨大,且很難找到符合要求的專家,因此當前主流的全域性本體庫產品,都是從一些面向特定領域的現有本體庫出發,採用自動構建技術逐步擴充套件得到的。

自動化本體構建過程包含三個階段:

  1. 實體並列關係相似度計算
  2. 實體上下位關係抽取
  3. 本體的生成

比如對下面這個例子,當知識圖譜剛得到“阿里巴巴”、“騰訊”、“手機”這三個實體的時候,可能會認為它們三個之間並沒有什麼差別,但當它去計算三個實體之間的相似度後,就會發現,阿里巴巴和騰訊之間可能更相似,和手機差別更大一些。

這就是第一步的作用,但這樣下來,知識圖譜實際上還是沒有一個上下層的概念,它還是不知道,阿里巴巴和手機,根本就不隸屬於一個型別,無法比較。因此我們在實體上下位關係抽取這一步,就需要去完成這樣的工作,從而生成第三步的本體。

當三步結束後,這個知識圖譜可能就會明白,“阿里巴巴和騰訊,其實都是公司這樣一個實體下的細分實體。它們和手機並不是一類。”

image

7.2 知識推理

在我們完成了本體構建這一步之後,一個知識圖譜的雛形便已經搭建好了。但可能在這個時候,知識圖譜之間大多數關係都是殘缺的,缺失值非常嚴重,那麼這個時候,我們就可以使用知識推理技術,去完成進一步的知識發現。

我們可以發現:如果A是B的配偶,B是C的主席,C坐落於D,那麼我們就可以認為,A生活在D這個城市。

根據這一條規則,我們可以去挖掘一下在圖裡,是不是還有其他的path滿足這個條件,那麼我們就可以將AD兩個關聯起來。除此之外,我們還可以去思考,串聯裡有一環是B是C的主席,那麼B是C的CEO、B是C的COO,是不是也可以作為這個推理策略的一環呢?

當然知識推理的物件也並不侷限於實體間的關係,也可以是實體的屬性值,本體的概念層次關係等。

推理屬性值:已知某實體的生日屬性,可以通過推理得到該實體的年齡屬性;
推理概念:已知(老虎,科,貓科)和(貓科,目,食肉目)可以推出(老虎,目,食肉目)
這一塊的演算法主要可以分為3大類,基於邏輯的推理、基於圖的推理和基於深度學習的推理

image

7.3 質量評估

質量評估也是知識庫構建技術的重要組成部分,這一部分存在的意義在於:可以對知識的可信度進行量化,通過捨棄置信度較低的知識來保障知識庫的質量。

8. 知識更新

從邏輯上看,知識庫的更新包括概念層的更新和資料層的更新

概念層的更新是指新增資料後獲得了新的概念,需要自動將新的概念新增到知識庫的概念層中。
資料層的更新主要是新增或更新實體、關係、屬性值,對資料層進行更新需要考慮資料來源的可靠性、資料的一致性(是否存在矛盾或冗雜等問題)等可靠資料來源,並選擇在各資料來源中出現頻率高的事實和屬性加入知識庫。
知識圖譜的內容更新有兩種方式:

  • 全面更新:指以更新後的全部資料為輸入,從零開始構建知識圖譜。這種方法比較簡單,但資源消耗大,而且需要耗費大量人力資源進行系統維護;
  • 增量更新:以當前新增資料為輸入,向現有知識圖譜中新增新增知識。這種方式資源消耗小,但目前仍需要大量人工干預(定義規則等),因此實施起來十分困難。

9. 總結

通過知識圖譜,不僅可以將網際網路的資訊表達成更接近人類認知世界的形式,而且提供了一種更好的組織、管理和利用海量資訊的方式。目前的知識圖譜技術主要用於智慧語義搜尋、移動個人助理(Siri)以及深度問答系統(Watson),支撐這些應用的核心技術正是知識圖譜技術。

在智慧語義搜尋中,當用戶發起查詢時,搜尋引擎會藉助知識圖譜的幫助對使用者查詢的關鍵詞進行解析和推理,進而將其對映到知識圖譜中的一個或一組概念之上,然後根據知識圖譜的概念層次結構,向用戶返回圖形化的知識結構,這就是我們在谷歌和百度的搜尋結果中看到的知識卡片。

在深度問答應用中,系統同樣會首先在知識圖譜的幫助下對使用者使用自然語言提出的問題進行語義分析和語法分析,進而將其轉化成結構化形式的查詢語句,然後在知識圖譜中查詢答案。比如,如果使用者提問:『如何判斷是否感染了埃博拉病毒?』,則該查詢有可能被等價變換為『埃博拉病毒的症狀有哪些?』,然後再進行推理變換,最終形成等價的三元組查詢語句,如(埃博拉,症狀,?)和(埃博拉,徵兆,?)等。如果由於知識庫不完善而無法通過推理解答使用者的問題,深度問答系統還可以利用搜索引擎向用戶反饋搜尋結果,同時根據搜尋結果更新知識庫,從而為回答後續的提問提前做出準備。

(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected]