語義網路,語義網,鏈接數據和知識圖譜
前一篇文章「為什麼需要知識圖譜?什麼是知識圖譜?——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自頂向下地構建自己的本體結構。
參考資料:
1. Blog:The Many Names of the Semantic Web
2. 科普 | 知識圖譜相關的名詞解釋
3. Exploiting Linked Data and Knowledge Graphs in Large Organisations
4. Video:What is Linked Data?
5. The Linking Open Data cloud diagram
推薦閱讀:
※推薦系統PM最主要的工作是哪幾件事?_討論輸出_AI產品經理大本營
※腦芯編 | 窺腦究竟,結網造芯(三)
※《人工智慧》第一周問題集agent & enviroment
※余凱:不做AI晶元,如何改變世界?
※找點書看,也不用那麼難(峰哥做個 community)