# Knowledge Graph 知識圖譜是知識庫(Knowledge Base),知識庫以圖結構存儲資料,資料以三元組形式表示(Subject-Predicate-Object),組成語義網路(Semantic Networks)。 ## Semantic Networks 語義網路是一種有向圖;其中,頂點代表的是概念,而邊則表示的是這些概念之間的語意關係。在表現形式上,語義網路和知識圖譜相似,但語義網路更側重於描述概念與概念之間的關係,而知識圖譜則更偏重於描述實體之間的關聯。 ![semantic networks](https://i.imgur.com/mW561RS.png) 優點: 1. 易於理解 2. 相關概念容易連結 缺點: 1. 關係定義沒有標準 2. 不同來源資料由於沒有標準,導致難以合併 3. 無法區分概念、物件節點 ## Knowledge Graph 知識圖譜是由本體(Ontology)作為 Schema 層,和 RDF 資料模型相容的結構化資料集。 ![Web Ontology Language OWL](https://i.imgur.com/fSELKPU.png) 知識圖譜會經過的主要流程。 ![kg](https://i.imgur.com/tFLlbEu.png) ### Resource Description Framework Schema RDF 的表達能力有限,無法區分類和物件,也無法定義和描述類的關係/屬性。我的理解是,RDF是對具體事物的描述,缺乏抽象能力,無法對同一個類別的事物進行定義和描述。 Data 層是我們用RDF對羅納爾多知識圖的具體描述,Vocabulary 是我們自己定義的一些詞彙(類別,屬性),RDF(S) 則是預定義詞彙。從下到上是一個具體到抽象的過程。圖中我們用紅色圓角矩形表示類,綠色字型表示rdf:type,rdfs:domain,rdfs:range 三種預定義詞彙,虛線表示 rdf:type這種所屬關係。另外,為了減少圖中連線的交叉,我們只保留了 career 這一個屬性的 rdf:type 所屬關係,省略了其他屬性的此關係。 ![RDFS](https://i.imgur.com/PSUcM1L.png) ### Web Ontology Language 本體對映主要用在融合多個獨立的 Ontology(Schema)。舉個例子,張三自己構建了一個本體結構,其中定義了 Person 這樣一個類來表示人;李四則在自己構建的本體中定義 Human 這個類來表示人。當我們融合這兩個本體的時候,就可以用到 OWL 的本體對映詞彙。回想我們在第二篇文章中提到的 Linked Open Data,如果沒有 OWL,我們將無法融合這些知識圖譜。 ![OWL](https://i.imgur.com/3CpR3gz.png) ## Application 1. Knowledge Base 2. Semantic Networks 3. Ontology 應用場景 1. 搜尋引擎 2. 問答系統 3. 知識關聯 4. 信息檢索 實際範例 1. Google Knowledge Graph 2. DBPedia 3. Wikipedia 4. WordNet 5. BabelNet 6. HowNet ## How to Build Knowledge Graph 虛線框的最左邊是三種輸入資料結構,結構化資料、半結構化資料、非結構化資料。這些資料可以來自任何地方,只要它對要構建的這個知識圖譜有幫助。 虛線框裡面的是整個的知識圖譜的構建過程。其中主要包含了3個階段,知識抽取、知識融合、知識加工。 最右邊是生成的知識圖譜,而且這個技術架構是迴圈往復,迭代更新的過程。知識圖譜不是一次性生成,是慢慢積累的過程。 1. 知識抽取(Knowledge Extraction):從各種型別的資料來源中提取出實體、屬性以及實體間的相互關係,在此基礎上形成本體化的知識表達。 2. 知識融合(Knowledge Fusion):在獲得新知識之後,需要對其進行整合,以消除矛盾和歧義,比如某些實體可能有多種表達,某個特定稱謂也許對應於多個不同的實體等。 3. 知識加工(Knowledge Processing):對於經過融合的新知識,需要經過質量評估之後(部分需要人工參與甄別),才能將合格的部分加入到知識庫中,以確保知識庫的質量。 ![Knowledge Graph Pipeline](https://i.imgur.com/shJGaZB.png) ### Knowledge Extraction 資訊抽取(infromation extraction)是知識圖譜構建的第1步,其中的關鍵問題是:如何從異構資料來源中自動抽取資訊得到候選指示單元。 資訊抽取是一種自動化地從半結構化和無結構資料中抽取實體、關係以及實體屬性等結構化資訊的技術。 在知識圖譜建立中主要會需要的三種信息抽取技術:實體、關係、屬性。 三個任務有很高的相似性,主流方法常採用序列化模型來做標註,根據任務內容做模型架構調整。 #### Entity Extraction 實體抽取任務目的為挖掘文本數據中的命名實體(Named Entity)任務與命名實體識別任務(Named Entity Recognition, NER)同義,是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等,以及時間、數量、貨幣、比例數值等文字。 ![NER](https://i.imgur.com/Yl0JF0T.png) #### Attribute Extraction 屬性抽取任務目的為挖掘實體的屬性值,以三元組形式呈現(實體-屬性-屬性值),與關係抽取任務相似,同樣都需要從上下文挖掘出實體的資訊,不同的在於屬性抽取關注實體的屬性值,而關係抽取則關注實體間的關係。 ![attribute](https://i.imgur.com/XSRr8QV.png) #### Relation Extraction 關係抽取任務目的為挖掘實體間的關係,基於已知或預測出的實體結果,藉由上下文推導出實體之間的交互關係,目前應用場景多為限定長度的短文本,在短文本上的表現良好,但仍然難以處理包含複雜資訊的長文本。 ![ex1](https://i.imgur.com/pV7rZCb.png) ![ex2](https://i.imgur.com/5Qd7njh.png) ### Knowledge Fusion 知識融合的目的是為了得出更多數據、高質量的知識圖譜,與現有的知識圖譜去做連結、擴充的方法。藉由信息抽取的技術得出我們需要的知識三元組,三元組包含(實體-屬性-屬性值)、(實體-關係-實體),下一步要做的是知識的融合,進一步梳理出知識間的邏輯篩選出更佳的知識。 知識融合主要包含兩個任務: 1. 實體鏈結(Entity Linking):對於從文字中抽取得到的實體物件,將其連結到知識庫中對應的正確實體物件的操作。 2. 知識庫合併(Knowledge Merging):在構建知識圖譜時,可以從第三方知識庫產品或已有結構化資料獲取知識輸入。 #### Entity Linking 實體鏈結主要需要解決兩個問題,一是實體消歧,二是共指消解,目的都是為了減少重複出現的實體,並更有效的去做現有知識的拓展。 實體鏈結的核心概念是找到實體的相似度,篩選掉不匹配的實體後在候選實體中挑選出最為接近的實體,做實體的合併。 1. 實體消歧(Entity Disambiguation):專門用於解決同名實體產生歧義問題的技術,通過實體消歧,就可以根據當前的語境,準確建立實體連結,實體消歧主要採用聚類法,將相似的實體透過聚類方法聚在同一群內。 2. 共指消解(Coreference Resolution):與實體消歧稍微不同的地方在共指消解主要為了解決多個實體物件對應到同一個實體物件的問題,利用共指消解技術,可以將這些指稱項關聯(合併)到正確的實體物件,方法也可以透過實體相似度計算來做合併。 ### Knowledge Processing ![](https://i.imgur.com/nlIFHZ4.png) ## References [Knowledge Graph](https://en.wikipedia.org/wiki/Knowledge_graph) [Knowledge Graph Medium](https://medium.com/analytics-vidhya/introduction-to-knowledge-graphs-and-their-applications-fb5b12da2a8b) [Semantic Networks](https://zh.wikipedia.org/wiki/%E8%AF%AD%E4%B9%89%E7%BD%91%E7%BB%9C_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)) [Web Ontology Language](https://www.w3.org/OWL/) [知識圖譜](https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/587130/) [知識圖譜建立](https://www.gushiciku.cn/pl/pvxt/zh-tw)