| 來源:來源:《中國計算機學會通訊》2017年第8期《專欄》 近年來,隨著“人工智能”概念再度活躍,除了“深度學習”這個炙手可熱的名詞以外,“知識圖譜”也是研究者、工業(yè)界和投資人心目中的又一顆“銀彈”。簡單地說,“知識圖譜”是一種數(shù)據(jù)模型,是以圖形(Graph)的方式來展現(xiàn)“實體”、實體“屬性”,以及實體之間的“關系”。圖1所示的例子中有4個實體,分別是“達·芬奇”“意大利”“蒙拉麗莎”和“米開朗基羅”。這個圖明確地展示了“達·芬奇”的各個屬性和屬性值(例如名字、生日和逝世時間等),以及這4個實體之間的關系(例如蒙拉麗莎是達·芬奇的畫作,達·芬奇出生在意大利等)。說到這里,很多讀者會不經(jīng)意地聯(lián)想到數(shù)據(jù)庫課程中“實體-聯(lián)系圖”(ER圖,ER Diagram)的概念。從某種角度來說,兩者確實有異曲同工之處。根據(jù)傳統(tǒng)數(shù)據(jù)庫理論,當我們將現(xiàn)實世界的事物映射到信息世界時,最需要關注的是兩個方面的信息:實體(包括實體屬性)和實體關系;而ER圖是反映實體和實體關系的最為經(jīng)典的概念模型。我們之所以稱ER圖是概念模型,是因為它的設計是幫助人理解客觀世界的事物的,不是計算機實現(xiàn)的模型。在數(shù)據(jù)庫管理系統(tǒng)(DBMS)歷史上,出現(xiàn)過層次模型、網(wǎng)狀模型和關系模型,這些是數(shù)據(jù)庫管理系統(tǒng)所實現(xiàn)的計算機模型。因此實際的數(shù)據(jù)庫應用項目中就存在一個從概念模型到實現(xiàn)模型的轉換問題,例如如何根據(jù)ER圖來構建關系表。從這個角度來看,知識圖譜又不同于ER圖,因為知識圖譜不僅顯式地刻畫了實體和實體關系,而且其本身也定義了一種計算機所實現(xiàn)的數(shù)據(jù)模型。 圖1 谷歌的知識圖譜示例 “知識圖譜”這個名詞是由于2012年5月16日谷歌啟動的知識圖譜(Knowledge Graph)項目而活躍起來的。目前知識圖譜普遍采用了語義網(wǎng)框架中的資源描述框架(Resource Description Framework, RDF)模型來表示數(shù)據(jù)。語義網(wǎng)是萬維網(wǎng)之父蒂姆·伯納斯-李(Tim Berners-Lee)在1998年提出的概念,其核心是構建以數(shù)據(jù)為中心的網(wǎng)絡,即Web of Data。其中RDF是萬維網(wǎng)聯(lián)盟(W3C)的語義網(wǎng)框架中的數(shù)據(jù)描述的標準,通常稱之為RDF三元組<主語(subject),謂詞(predicate),賓語(object)>。其中主語是一個被描述的資源,由統(tǒng)一資源標識符(URI)來表示。謂詞可以表示主語的屬性,或者表示主語和賓語之間的某種關系;當表示屬性時,賓語就是屬性值,通常是一個字面值(literal);否則賓語是另外一個由URI表示的資源。 圖2展示了一個人物類百科的RDF三元組的知識圖譜數(shù)據(jù)集。例如y:Abraham_Lincoln表示一個實體URI(其中y表示前綴http://en./wiki/),它有3個屬性(hasName, BornOndate, DiedOnDate)和1個關系(DiedIn)。 圖2 RDF數(shù)據(jù)的例子 圖3 SPARQL查詢的例子 面向RDF數(shù)據(jù)集,W3C提出了一種結構化查詢語言SPARQL,它類似于面向關系數(shù)據(jù)庫的查詢語言SQL。和SQL一樣,SPARQL也是一種描述性的結構化查詢語言,即用戶只需要按照SPARQL定義的語法規(guī)則去描述其想查詢的信息即可。假設我們需要在上面的RDF數(shù)據(jù)中查詢“在1809年2月12日出生,并且在1865年4月15日逝世的人的姓名”,這個查詢可以表示成如圖3所示的SPARQL語句。 我們也可以將RDF和SPARQL分別表示成圖的形式。在RDF中,主語和賓語可以分別表示成RDF圖中的節(jié)點,一條稱述(即RDF三元組)可以表示成一條邊,其中謂詞是邊的標簽。SPARQL語句同樣可以表示成一個查詢圖。 圖4顯示了上例所對應的RDF圖和SPARQL查詢圖結構?;卮餝PARQL查詢,本質上就是在RDF圖中找到SPARQL查詢圖的子圖匹配的位置,這就是基于圖數(shù)據(jù)庫回答SPARQL查詢的理論基礎。在圖4所示的例子中,由節(jié)點005、009、010和011所推導的子圖就是查詢圖的一個匹配,根據(jù)此匹配很容易知道SPARQL的查詢結果是“Abraham Lincoln”。 圖4 RDF圖和SPARQL查詢圖 知識圖譜目前的應用目前,知識圖譜在工業(yè)界,尤其是在互聯(lián)網(wǎng)領域中已有相關應用;在工業(yè)設計和產(chǎn)品管理、知識出版、健康醫(yī)療和情報分析等其他領域也有不少的應用。本文主要介紹互聯(lián)網(wǎng)領域相關公司的產(chǎn)品。 
 谷歌的知識圖譜 如前所述,知識圖譜的活躍得益于谷歌的知識圖譜項目。谷歌通過構建知識圖譜,將內部信息資源都唯一地關聯(lián)起來。例如“姚明”是知識圖譜中的一個實體,包含相關的一些屬性,例如出生時間、地點、身高等。同時,可以將搜索引擎中所爬取的和“姚明”相關的文檔和圖片都與這個實體關聯(lián)起來。在谷歌的知識圖譜項目中,最早的應用方式就是在搜索引擎返回結果里面提供“知識卡片”。傳統(tǒng)的搜索引擎返回界面中,通常是查詢詞所匹配的文檔列表。然而,在2012年5月16日以后的谷歌搜索引擎返回結果中,如果查詢詞匹配了谷歌知識圖譜中的某個實體,谷歌還會以知識卡片的形式返回這個實體的一些屬性和與其他實體的關系。例如,當我們搜索“姚明”時,谷歌返回的知識卡片會包括姚明的出生時間、地點、身高,以及他的妻子葉莉,甚至包括相關聯(lián)的姚明的圖片。 
 谷歌的富摘要 
 一般來說,搜索引擎會為每一篇搜索結果提供一個目標網(wǎng)頁的摘要,以便用戶判斷是否為自己想搜索的頁面。通常網(wǎng)頁的摘要是采用“抽取式”方式生成的,即從網(wǎng)頁的頁面文本中找到和搜索關鍵詞相關的并且比較重要的句子來構成頁面的摘要返回給用戶。但是谷歌的富摘要(Google Rich Snippets)產(chǎn)品中,會抽取在用戶超文本標記語言(HTML)頁面中以結構化形式存在的知識圖譜數(shù)據(jù),例如描述實體屬性的數(shù)據(jù)。目前這方面的標準包括RDFa、Microdata和Schema.org等結構化數(shù)據(jù)標簽。假設用戶搜索“Thinkpad T450”產(chǎn)品,在谷歌返回的沃爾瑪線上商店的頁面摘要中(見圖5)包含了這個產(chǎn)品的打分(Rating,3星)、評論數(shù)目(Vote,1份評論)和價格(616.67美元)。實際上,用戶已經(jīng)通過Schema.org等結構化的語義標簽在HTML中標示出了這些重要的數(shù)據(jù),搜索引擎可以通過解析器(Parser)解析出這些結構化數(shù)據(jù),利用這些結構化知識圖譜數(shù)據(jù)來產(chǎn)生摘要。圖6展示了利用谷歌的結構化測試工具,可以從上述沃爾瑪產(chǎn)品頁面的HTML中抽取上面提到的商品的價格和商標等屬性信息。 圖5 根據(jù)抽取的結構化數(shù)據(jù)產(chǎn)生的“沃爾瑪產(chǎn)品頁面”搜索結果摘要 圖6 谷歌結構化抽取工具所抽取出來的“沃爾瑪產(chǎn)品頁面”上的結構化數(shù)據(jù) 臉書的開放內容協(xié)議 臉書(Facebook)也定義了一種類似的標簽語言——開放內容協(xié)議(Open Graph Protocol, OGP)。臉書利用OGP協(xié)議定義了社交網(wǎng)絡上的知識圖譜(Facebook Social Graph,社交圖),用于連接社交網(wǎng)絡的用戶、用戶分享的照片、電影、評論,甚至包括通過臉書定義的應用程序編程接口(Graph API)所鏈接的第三方的關于社交用戶的知識圖譜數(shù)據(jù)。在所構建的社交圖基礎上,臉書推出了圖搜索(Graph Search)功能,將用戶的自然語言問題轉化為面向社交圖的圖搜索問題,從而回答用戶的問題。假設以我的臉書賬號登錄,輸入自然語言“My friends who live in Canada”,將顯示我在加拿大的朋友的賬號;同樣地,再輸入“Photos of my friends who live in Canada”,將顯示這些朋友在臉書上分享的照片。這個例子說明,臉書所構建的社交圖將用戶、地點以及照片都關聯(lián)起來了,否則無法回答上述兩個自然語言問題。 臉書將用戶輸入的自然語言轉化為面向社交圖的結構化查詢操作。從圖7中可以看出,原始查詢語句在經(jīng)過自然語言接口模塊處理后,對應的規(guī)范化自然語言查詢語句和結構化查詢語句分別為:“my friends who live in [id: 12345]”和“intersect(friends(me), residents(12345))”。其中,“12345”代表“Canada”在社交圖譜上對應的ID。對應的結構化查詢語句會交給臉書內部設計的面向社交圖譜的索引和搜索系統(tǒng)Unicorn,最后查詢得到答案。 圖7 臉書中將自然語言轉換為結構化查詢的一個示例 面向知識圖譜的問答系統(tǒng)面向知識圖譜的問答系統(tǒng)還包括亞馬遜收購的EVI產(chǎn)品。EVI的原名叫True Knowledge,是一家創(chuàng)業(yè)公司的產(chǎn)品。本質上就是用三元組的形式來組織數(shù)據(jù),根據(jù)模板技術將用戶的自然語言問題轉化為結構化的查詢語句找到結果返回給用戶。IBM的沃森(Watson)系統(tǒng)中也同樣采用DBpedia和Yago知識圖譜數(shù)據(jù)來回答某些自然語言問題。相比于傳統(tǒng)基于文檔的問答方法,基于知識圖譜的問答準確度更高,但能回答的問題相對較少(見圖8)。 圖8 IBM沃森系統(tǒng)參加《危險邊緣》(Jeopardy)挑戰(zhàn)的實驗數(shù)據(jù) 知識圖譜的管理方法 知識圖譜數(shù)據(jù)管理的一個核心問題是如何有效地存儲和查詢RDF數(shù)據(jù)集??偟膩碚f,有兩套完全不同的思路。其一是我們可以利用已有的成熟的數(shù)據(jù)庫管理系統(tǒng)(例如關系數(shù)據(jù)庫系統(tǒng))來存儲知識圖譜數(shù)據(jù),將面向RDF知識圖譜的SPARQL查詢轉換為面向此類成熟數(shù)據(jù)庫管理系統(tǒng)的查詢,例如面向關系數(shù)據(jù)庫的SQL查詢,利用已有的關系數(shù)據(jù)庫產(chǎn)品或者相關技術來回答查詢,其中最核心的研究問題是如何構建關系表來存儲RDF知識圖譜數(shù)據(jù),并且使得轉換的SQL查詢語句查詢性能更高;其二是直接開發(fā)面向RDF知識圖譜數(shù)據(jù)的原生(Native)知識圖譜數(shù)據(jù)存儲和查詢系統(tǒng)(Native RDF圖數(shù)據(jù)庫系統(tǒng)),考慮到RDF知識圖譜管理的特性,從數(shù)據(jù)庫系統(tǒng)的底層進行優(yōu)化。 由于關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)在數(shù)據(jù)管理方面的巨大成功以及成熟的商業(yè)軟件產(chǎn)品,同時RDF數(shù)據(jù)的三元組模型可以很容易映射成關系模型,因此大量研究者嘗試了使用關系數(shù)據(jù)模型來設計RDF存儲和檢索的方案。根據(jù)所設計的表結構的不同,相應的存儲和查詢方法也各異。 另外一種是采用圖的方式來管理知識圖譜數(shù)據(jù)。通過將RDF三元組看作帶標簽的邊,RDF知識圖譜數(shù)據(jù)很自然地符合圖模型結構。因此,有的研究者從RDF圖模型結構的角度來看待RDF數(shù)據(jù),他們將RDF數(shù)據(jù)視為一張圖,并通過對RDF圖結構的存儲來解決RDF數(shù)據(jù)存儲問題。圖模型符合RDF模型的語義層次,可以最大限度地保持RDF數(shù)據(jù)的語義信息,也有利于對語義信息的查詢。此外,以圖的方式來存儲RDF數(shù)據(jù),可以借鑒成熟的圖算法、圖數(shù)據(jù)庫來設計RDF數(shù)據(jù)的存儲方案與查詢算法。然而,利用圖模型來設計RDF存儲與查詢也存在著難以解決的問題。第一,相對于普通的圖模型,RDF圖上的邊具有標簽,并可能成為查詢目標;第二,典型的圖算法往往時間復雜度較高,需要精心的設計以降低實時查詢的時間復雜度。 我們在文獻[9]中提出一種利用子圖匹配方法回答SPARQL的方法,并構建了相關開源系統(tǒng)gStore。由于基于圖結構方法的索引可以考慮到查詢圖整體信息,因此,總的來說,查詢圖越復雜(例如查詢圖的邊越多),gStore相對于對比系統(tǒng)的性能越好,有些復雜的SPARQL查詢可以達到一個數(shù)量級以上的性能優(yōu)勢。gStore的分布式版本在10臺機器組成的集群上可以進行50億~100億規(guī)模的RDF知識圖譜管理的任務。 計算機不同領域對知識圖譜研究的側重圖9 不同領域對“知識圖譜”研究的側重 知識圖譜屬于交叉研究領域,不同計算機研究領域從不同的角度對知識圖譜進行研究(見圖9)。 在自然語言處理領域,針對知識圖譜的研究主要在兩個方面。一是“信息抽取”。目前互聯(lián)網(wǎng)上大部分數(shù)據(jù)仍然是“非結構化”的文本數(shù)據(jù),如何從非結構的文本數(shù)據(jù)中抽取出知識圖譜所需要的三元組數(shù)據(jù)是一項具有挑戰(zhàn)性的工作;二是“語義解析(Semantic Parsing)”,即將用戶輸入的自然語言問題轉化成面向知識圖譜的結構化查詢。我們在文獻[17]中提出利用子圖匹配的方法回答面對知識圖譜的自然語言問題,并構建系統(tǒng)gAnswer。 在知識工程領域主要也有兩個方面的熱點研究問題。其一是大規(guī)模本體和知識庫的構建。例如,DBpedia和Yago都是通過從維基百科上獲取知識從而構建大規(guī)模的知識圖譜數(shù)據(jù)集;另外,面向特定封閉領域(closed domain)的知識圖譜構建在工業(yè)界應用比較廣泛。另外一項研究課題是知識圖譜上的推理問題研究。不同于傳統(tǒng)數(shù)據(jù)庫的閉世界假設(Closed-world assumption),知識圖譜采用的是開放世界假設(Open-world assumption)。在開放世界假設情況下,系統(tǒng)并不假設所存儲的數(shù)據(jù)是完備的,系統(tǒng)中沒有被顯示存儲但是可以通過推理得到的“陳述(Statement)”,仍然被認為是正確的數(shù)據(jù)。 圖10 TransE模型示例 在機器學習領域,熱門的課題包括面向知識圖譜的“表示學習”,其中最具代表性的研究工作是TransE模型。給定一個知識圖譜,我們將知識圖譜三元組中的每個主語、謂詞和賓語都映射成一個高維向量,其優(yōu)化目標可以表示為將圖10中的公式最小化。這個公式的基本含義是,對于存在于知識圖譜G里面的任何一條三元組,其中主語、謂詞和賓語的向量分別表示為s、p 和o, 我們要求主語和謂詞的向量和(s+p)離賓語的向量表示(o)盡量近;對于不存在于知識圖譜G中的三元組,則相互距離盡量遠。TransE模型的基本含義是,謂詞相同的兩個三元組,它們分別的主語與賓語的向量差是近似的。在TransE模型的基礎上,學術界提出了很多改進的知識圖譜嵌入(Embedding)的方案。這些模型在很多任務上,例如知識圖譜的謂詞預測、知識補全等,比以前的方法在準確度上都有不小的提升。 知識圖譜從某種角度來說,是一個商業(yè)包裝的詞匯;但是其本身來源于語義網(wǎng)、圖數(shù)據(jù)庫、自然語言處理等相關的學術研究領域。由于篇幅和筆者學術研究水平的局限,對于更大范圍的知識圖譜研究和應用的介紹難免掛一漏萬,敬請讀者批評指正。 | 
|  |