1. 程式人生 > >語義網路,語義網,連結資料和知識圖譜

語義網路,語義網,連結資料和知識圖譜

文章釋出在我的知乎專欄,對知識圖譜感興趣的朋友可以關注。

前一篇文章“為什麼需要知識圖譜?什麼是知識圖譜?——KG的前世今生”提及了和知識圖譜相關的一些早期概念。為了讓讀者能夠更好地區分這些概念,以及更好地在整體上把握知識譜圖發展過程,本文將對這些概念作一個更為詳細的介紹。

一、語義網路(Semantic Network)

對於初學者來講,這個概念很容易和語義網(Semantic Web)相混淆。為了行文一致,除非特別說明,語義網路指Semantic Network,語義網指Semantic Web。

語義網路是由Quillian於上世紀60年代提出的知識表達模式,其用相互連線的節點和邊來表示知識。節點表示物件、概念,邊表示節點之間的關係。

語義網路

語義網路的優點
1. 容易理解和展示。
2. 相關概念容易聚類。

語義網路的缺點
1. 節點和邊的值沒有標準,完全是由使用者自己定義。
2. 多源資料融合比較困難,因為沒有標準。
3. 無法區分概念節點和物件節點。
4. 無法對節點和邊的標籤(label,我理解是schema層,後面會介紹)進行定義。

簡而言之,語義網路可以比較容易地讓我們理解語義和語義關係。其表達形式簡單直白,符合自然。然而,由於缺少標準,其比較難應用於實踐。看過上一篇文章的讀者可能已經發現,RDF的提出解決了語義網路的缺點1和缺點2,在節點和邊的取值上做了約束,制定了統一標準,為多源資料的融合提供了便利。另外,RDF對is-a關係進行了定義,即,rdf:type(是rdf標準中的一個詞彙,之後的文章會介紹)。因此,不管在哪個語義網路中,表達is-a關係,我們都用rdf:type,在語法上形成了統一。比如上圖中貓、熊與哺乳動物的關係就可以形式化的表達為:

貓 rdf:type 哺乳動物

熊 rdf:type 哺乳動物

但還有個問題,如何區分概念和物件?即定義Class和Object(也稱作Instance, Entity)。如果不能區分,會對我們產生什麼影響?舉個例子,假如我們有兩個語義網路A和B。在A中,熊是哺乳動物的一個例項。在B中,熊是哺乳動物的一個子類。前者是is-a關係,後者是subClassOf關係。這種情況常有發生,我們建模的角度不同,那麼同一個事物的表示也可能不同。如果我們不能用一種方法來區別兩者,不僅會給我們帶來理解上的困難,在進行融合的時候也會造成資料衝突。我們不能說A既是B的一個例項,又是B的一個子類。W3C制定的另外兩個標準RDFS/OWL解決了這個問題,如下圖。

語義網技術棧

在語義網技術棧中,RDFS和OWL是RDF更上一層的技術,主要是為了解決語義網路的缺點3和缺點4,其提供了schema層的描述。在後續文章中,我們將更詳細地介紹RDF,RDFS/OWL。在這裡,讀者只需要知道,通過RDFS或者OWL中的預定義詞彙,我們可以形式化地宣告一個類:

哺乳動物 rdf:type rdfs:Class

或者

哺乳動物 rdf:type owl:Class

通過RDFS也可以宣告一個子類:

熊 rdf:type rdfs:Class

熊 rdfs:subClassOf 哺乳動物

或者宣告一個例項

熊 rdf:type 哺乳動物

我們也可以把rdf:type用a代替,即:

熊 a 哺乳動物

RDF,RDFS/OWL屬於語義網技術棧,它們的提出,使得語義網克服了語義網路的缺點。

儘管語義網路有這些缺點,還是有許多專案是基於語義網路的思想建立起來的。下面列幾個比較出名和實用的專案:
- WordNet。它是一個英語的詞彙庫,將英語單詞劃分為同義詞集合,用不同的語義關係將這些集合關聯起來。其在自然語言處理的中有許多應用,比如消歧、資訊檢索、文字分類、文字摘要等等。
- BabelNet。相對於WordNet,BabelNet是一個多語言的詞彙庫。它是通過自動把維基百科連結到WordNet上構建起來的,另外也用到了其他的一些詞彙資源。
- HowNet,即知網,中文語義詞典。其以漢語和英語詞語所代表的概念為描述物件,構建了一個包含概念之間以及概念所具有的屬性之間的關係的常識知識庫。

二、語義網(Semantic Web)和連結資料(Linked Data)

語義網和連結資料是全球資訊網之父Tim Berners Lee分別在1998年和2006提出的。相對於語義網路,語義網和連結資料傾向於描述全球資訊網中資源、資料之間的關係。其實,本質上,語義網、連結資料還有Web 3.0都是同一個概念,只是在不同的時間節點和環境中,它們各自描述的角度不同。它們都是指W3C制定的用於描述和關聯全球資訊網資料的一系列技術標準,即,語義網技術棧

語義網是一個更官方的名稱,也是該領域學者使用得最多的一個術語,同時,也用於指代其相關的技術標準。在全球資訊網誕生之初,網路上的內容只是人類可讀,而計算機無法理解和處理。比如,我們瀏覽一個網頁,我們能夠輕鬆理解網頁上面的內容,而計算機只知道這是一個網頁。網頁裡面有圖片,有連結,但是計算機並不知道圖片是關於什麼的,也不清楚連結指向的頁面和當前頁面有何關係。語義網正是為了使得網路上的資料變得機器可讀而提出的一個通用框架。“Semantic”就是用更豐富的方式來表達資料背後的含義,讓機器能夠理解資料。“Web”則是希望這些資料相互連結,組成一個龐大的資訊網路,正如網際網路中相互連結的網頁,只不過基本單位變為粒度更小的資料,如下圖。

語義網

連結資料起初是用於定義如何利用語義網技術在網上釋出資料,其強調在不同的資料集間建立連結。Tim Berners Lee提出了釋出資料的四個原則,並根據資料集的開放程度將其劃分為1到5星5個層次。連結資料也被當做是語義網技術一個更簡潔,簡單的描述。當它指語義網技術時,它更強調“Web”,弱化了“Semantic”的部分。對應到語義網技術棧,它傾向於使用RDF和SPARQL(RDF查詢語言)技術,對於Schema層的技術,RDFS或者OWL,則很少使用。連結資料應該是最接近知識圖譜的一個概念,從某種角度說,知識圖譜是對連結資料這個概念的進一步包裝。本專欄的頭像,讀者可能在很多地方看見過,這其實就是開放連結資料專案(Linked Open Data Project)進展的視覺化(讀者可以開啟連結檢視可互動的視覺化圖),也通常用來展示當前開放知識圖譜的規模,涉及的領域以及知識圖譜間的連結關係。

開放連結資料專案

三、知識圖譜(Knowledge Graph)

上一篇文章中,我們用平實的語言給出了知識圖譜的定義和組織形式。用更正式的說法,知識圖譜是由本體(Ontology)作為Schema層,和RDF資料模型相容的結構化資料集。本體本身是個哲學名詞,AI研究人員於上個世紀70年代引入計算機領域。Tom Gruber把本體定義為“概念和關係的形式化描述”,分別指實體的類層次和關係層次。我們以上篇文章羅納爾多知識圖為例,我們用IRI唯一標誌的節點都是某個類的一個例項,每一條邊都表示一個關係。羅納爾多是一個人,里約熱內盧是一個地點,我們用RDF來表示就是:

www.kg.com/person/1 rdf:type kg:Person.

www.kg.com/place/10086 rdf:type kg:Place.

關係我們也稱為屬性(Property),根據是實體和實體之間的關係還是實體和資料值之間的關係分為物件屬性(Object Property)和資料屬性(Data Property)。在圖中,羅納爾多和里約熱內盧的關係(本例中是物件屬性)與羅納爾多和全名的關係(本例中是資料屬性)用RDF就可以表示為:

www.kg.com/person/1 kg:hasBirthPlace www.kg.com/place/10086

www.kg.com/person/1 kg:fullName “Ronaldo Luís Nazário de Lima”^^xsd:string

這裡kg:Person,kg:Place,kg:hasBirthPlace,kg:fullName是我們在Ontology中定義好的類和關係。

羅納爾多知識圖譜

連結資料和知識圖譜最大的區別在於:
1. 正如上面Open Linked Data Project所展示的,每一個圓圈代表一個獨立存在和維護的知識圖譜;連結資料更強調不同RDF資料集(知識圖譜)的相互連結。
2. 知識圖譜不一定要連結到外部的知識圖譜(和企業內部資料通常也不會公開一個道理),更強調有一個本體層來定義實體的型別和實體之間的關係。另外,知識圖譜資料質量要求比較高且容易訪問,能夠提供面向終端使用者的資訊服務(查詢、問答等等)。

四、總結

本文介紹了和知識圖譜相關的幾個早期概念,以及他們之間的異同。在下一篇文章當中,我們將會介紹語義網技術棧中比較基礎和重要的技術標準:RDF,RDFS和OWL。另外,會結合實踐,讓讀者學會用protege自頂向下地構建自己的本體結構。

參考資料: