[導讀]本文主要分為三個部分。第一個部分介紹我們為什麼需要知識圖譜,第二個部分介紹知識圖譜的相關概念及其形式化表示……
來源:SimmerChan(知乎)
編輯:Debra
摘要:本文主要分為三個部分。第一個部分介紹我們為什麼需要知識圖譜,第二個部分介紹知識圖譜的相關概念及其形式化表示。最後,作一個簡單的總結,並介紹該專欄後續文章會涉及的內容。
一、看到的不僅僅是字符串
當你看見下面這一串文本你會聯想到什麼?
Ronaldo Luís Nazário de Lima
估計絕大多數中國人不明白上面的文本代表什麼意思。沒關係,我們看看它對應的中文:
羅納爾多·路易斯·納薩裡奧·德·利馬
這下大部分人都知道這是一個人的名字了,當然,不出什麼意外,還是個外國人。但還是有一部分人不知道這個人具體是誰。下面是關於他的某張圖片:
從這張圖片我們又得到了額外信息,他是一位足球運動員。對足球不熟悉的可能還是對他沒有什麼印象。那麼再看看下面這張圖片:
我再加上當初那洗腦的廣告詞:「保護嗓子,請用金嗓子喉片。 廣西金嗓子!」。
這下應該許多人都知道他是誰了,畢竟多年前被這洗腦的廣告語摧殘了很長一段時間。
之所以舉這樣一個例子,是因為,計算機一直面臨著這樣的困境——無法獲取網絡文本的語義信息。儘管近些年人工智慧得到了長足的發展,在某些任務上取得超越人類的成績,但離一臺機器擁有一個兩三歲小孩的智力這樣一個目標還有一段距離。這距離的背後很大一部分原因是機器缺少知識。如同上面的例子,機器看到文本的反應和我們看到羅納爾多葡萄牙語原名的反應別無二致。為了讓機器能夠理解文本背後的含義,我們需要對可描述的事物 (實體) 進行建模,填充它的屬性,拓展它和其他事物的聯繫,即,構建機器的先驗知識。就以羅納爾多這個例子說明,當我們圍繞這個實體進行相應的擴展,我們就可以得到下面這張知識圖。
機器擁有了這樣的先驗知識,當它再次看到 Ronaldo Luís Nazário de Lima,它就會「想」:「這是一個名字叫 Ronaldo Luís Nazário de Lima 的巴西足球運動員。」這和我們人類在看到熟悉的事物,會做一些聯想和推理是很類似的。
Notice: 需要說明的是,上面的知識圖並不代表知識圖譜的實際組織形式,相反,它還會讓讀者對知識圖譜產生一定的誤解。在下一個部分,我會給出這張圖所包含內容在知識圖譜中更形式化的表示。實際上,我看到許多介紹知識圖譜的文章都喜歡給出此種類型的圖,卻又不給出相應的說明,這可能會讓讀者一開始就進入理解的誤區。
Google 為了提升搜尋引擎返回的答案質量和用戶查詢的效率,於 2012 年 5 月 16 日發布了知識圖譜 (Knowledge Graph)。有知識圖譜作為輔助,搜尋引擎能夠洞察用戶查詢背後的語義信息,返回更為精準、結構化的信息,更大可能地滿足用戶的查詢需求。Google 知識圖譜的宣傳語「things not strings」給出了知識圖譜的精髓,即,不要無意義的字符串,而是獲取字符串背後隱含的對象或事物。
還是以羅納爾多為例,我們想知道羅納爾多的相關信息 (很多情況下,用戶的搜索意圖可能也是模糊的,這裡我們輸入的查詢為「羅納爾多」),在之前的版本,我們只能得到包含這個字符串的相關網頁作為返回結果,然後不得不進入某些網頁查找我們感興趣的信息;現在,除了相關網頁,搜尋引擎還會返回一個「知識卡片」,包含了查詢對象的基本信息和其相關的其他對象 (C 羅名字簡稱也為羅納爾多,搜尋引擎只是根據「羅納爾多」的指代概率返回了「肥羅」這個羅納爾多的基本資料,但也許你需要 C 羅的相關信息,那麼搜尋引擎把 C 羅這個實體作為備選項列出),如下圖紅色方框中的內容。如果我們只是想知道羅納爾多的國籍、年齡、婚姻狀況、子女信息,那麼我們不用再做多餘的操作。在最短的時間內,我們獲取了最為簡潔,最為準確的信息。
當然,這只是知識圖譜在搜尋引擎上的一部分應用場景。舉這個例子也是為了表明,知識圖譜這樣一種概念、或者技術,它的誕生是符合計算機科學、網際網路發展潮流的。關於知識圖譜的更多應用,會在之後的另一篇文章中給出。
二、知識圖譜的前世今生
通過上面這個例子,讀者應該對知識圖譜有了一個初步的印象,其本質是為了表示知識。其實知識圖譜的概念並不新,它背後的思想可以追溯到上個世紀五六十年代所提出的一種知識表示形式——語義網絡 (Semantic Network)。語義網絡由相互連接的節點和邊組成,節點表示概念或者對象,邊表示他們之間的關係 (is-a 關係,比如:貓是一種哺乳動物;part-of 關係,比如:脊椎是哺乳動物的一部分),如下圖。在表現形式上,語義網絡和知識圖譜相似,但語義網絡更側重於描述概念與概念之間的關係,(有點像生物的層次分類體系——界門綱目科屬種),而知識圖譜則更偏重於描述實體之間的關聯。
除了語義網絡,人工智慧的分支——專家系統,全球資訊網之父 Tim Berners Lee 於 1998 年提出的語義網(Semantic Web)和在 2006 年提出的關聯數據(Linked Data)都和知識圖譜有著千絲萬縷的關係,可以說它們是知識圖譜前身。
目前,知識圖譜並沒有一個標準的定義 (gold standard definition)。我在這裡借用一下「Exploiting Linked Data and Knowledge Graphs in Large Organisations」這本書對於知識圖譜的定義:
A knowledge graph consists of a set of interconnected typed entities and their attributes.
即,知識圖譜是由一些相互連接的實體和他們的屬性構成的。換句話說,知識圖譜是由一條條知識組成,每條知識表示為一個 SPO 三元組 (Subject-Predicate-Object)。
在知識圖譜中,我們用 RDF 形式化地表示這種三元關係。RDF(Resource Deion Framework),即資源描述框架,是 W3C 制定的,用於描述實體 / 資源的標準數據模型。RDF 圖中一共有三種類型,International Resource Identifiers(IRIs),blank nodes 和 literals。下面是 SPO 每個部分的類型約束:
- Subject 可以是 IRI 或 blank node。
- Predicate 是 IRI。
- Object 三種類型都可以。IRI 我們可以看做是 URI 或者 URL 的泛化和推廣,它在整個網絡或者圖中唯一定義了一個實體 / 資源,和我們的身份證號類似。
literal 是字面量,我們可以把它看做是帶有數據類型的純文本,比如我們在第一個部分中提到的羅納爾多原名可以表示為"Ronaldo Luís Nazário de Lima"^^xsd:string。
blank node 簡單來說就是沒有 IRI 和 literal 的資源,或者說匿名資源。關於其作用,有興趣的讀者可以參考 W3C 的文檔,這裡不再贅述。我個人認為 blank node 的存在有點多餘,不僅會給對 RDF 的理解帶來額外的困難,並且在處理的時候也會引入一些問題。通常我更願意用帶有 IRI 的 node 來充當 blank node,行使其功能,有點類似 freebase 中 CVT(compound value type) 的概念。最後的參考資料會給出一篇寫 blank node 缺陷的博客,有興趣的讀者可以看一看。
那麼「羅納爾多的中文名是羅納爾多·路易斯·納扎裡奧·達·利馬」這樣一個三元組用 RDF 形式來表示就是:
"www.kg.com/person/1"是一個 IRI,用來唯一的表示「羅納爾多」這個實體。"kg:chineseName"也是一個 IRI,用來表示「中文名」這樣一個屬性。"kg:"是 RDF 文件中所定義的 prefix,如下所示。
@prefix kg: http://www.kg.com/ontology/
即,kg:chineseName 其實就是"http:// www.kg.com/ontology/chineseName"的縮寫。
將上面的知識圖用更正式的形式畫出來:
我們其實可以認為知識圖譜就包含兩種節點類型,資源和字面量。借用數據結構中樹的概念,字面量類似葉子節點,出度為 0。現在讀者應該知道為什麼我會說之前那幅圖不準確,並會誤導大家對知識圖譜的理解了吧。"羅納爾多·路易斯·納薩裡奧·德·利馬"作為字面量,是不能有指向外部節點的邊的,況且之前的圖並不能直觀地體現知識圖譜中資源 / 實體 (用 IRI 表示) 這樣一個極其重要的概念。
三、總結
本文通過羅納爾多這個例子引出了知識圖譜的現實需求,繼而給出了知識圖譜的定義和相關概念,並介紹了知識圖譜的 RDF 形式化表示。作為一篇科普文章,文中省略了許多技術細節。後續我會根據語義網技術棧(Semantic Web Stack,如下圖)來介紹知識圖譜實現過程中所需要的具體技術。另外,可能會結合實踐,介紹如何利用關係型資料庫中的數據來構建一個知識圖譜,並搭建一個簡易的基於知識圖譜的問答系統 (KBQA)。
參考連結:
W3C: RDF 1.1 Concepts and Abstract Syntax
https://www.w3.org/TR/rdf11-concepts/
Exploiting Linked Data and Knowledge Graphs in Large Organisations
Google: Introducing the Knowledge Graph: things, not strings
https://link.zhihu.com/?
target=https%3A//googleblog.blogspot.co.uk/2012/05/introducing-knowledge-graph-things-not.html
Blog:Problems of the RDF model: Blank Nodes
https://link.zhihu.com/?
target=http%3A//milicicvuk.com/blog/2011/07/14/problems-of-the-rdf-model-blank-nodes/
Blog:Compound Value Types in RDF
https://link.zhihu.com/?target=http%3A//blog.databaseanimals.com/compound-value-types-in-rdf
Chen, L., Zhang, H., Chen, Y., & Guo, W. (2012). Blank nodes in rdf. Journal of Software, 7(9).
https://link.zhihu.com/?target=https%3A//www.researchgate.net/publication/276240316_Blank_nodes_in_RDF