綜述 | 知識圖譜發展概述
“知識圖譜(Knowledge Graph)”的概念由 Google 公司在 2012 年提出[1],是指其用於提升搜索引擎性能的知識庫。與近年來其他學者相同,本文中的“知識圖譜”泛指知識庫項目,而非特指 Google 的知識圖譜項目。
知識圖譜的出現是人工智能對知識需求所導致的必然結果,但其發展又得益於很多其他的研究領域,涉及專家係統、語言學、語義網、數據庫,以及信息抽取等眾多領域,是交叉融合的產物而非一脈相承。

早在上個世紀 70 年代,專家係統(Expert Systems)作為人工智能的重要分支,是指利用知識和推理過程來解決那些借助人類專家知識才能得已解決的問題的計算機程序[2]。八十年代,專家係統的發展激增,日本的五代機項目就是在這期間開始的,專家係統是其核心部分。專家係統一般由兩部分組成:知識庫與推理引擎。人類專家提供知識,再將這種顯式的知識映射並存儲到知識庫中用來推理。
Cyc 是這一期間較為出色的項目[3],由 Douglas Lenat 在 1984 年設立,旨在收集生活中常識知識並將其編碼集成到一個全麵的本體知識庫。Cyc 知識庫中的知識使用專門設計的 CycL 進行表示。同其他專家係統一樣,Cyc 不僅包括知識,而且提供了非常多的推理引擎,支持演繹推理和歸納推理。目前 Cyc 知識庫涉及 50 萬條概念的 500 萬條常識知識。OpenCyc 是其開放出來免費供大眾使用的部分知識,包括 24 萬條概念的約 240 萬條常識知識。
對詞匯的理解是解讀自然語言的關鍵,語言學家所創造的詞典為人類而非機器的閱讀提供了便利,雖然有電子詞典的存在,但機器仍無法很好的從中獲取詞匯含義。
1985 年,普林斯頓大學認識科學實驗室在心理學教授喬治·A·米勒的指導下開始建立和維護名為 WordNet 的英語字典[4],旨在為詞典信息和現代計算提供更加有效的結合,為計算機程序提供可讀性較強的在線詞匯數據庫。
在 WordNet 中,名詞、動詞、形容詞以及副詞被按照認知上的同義詞分組,稱為 synsets,每一個 synset 表征一個確定的概念。synset 之間通過概念語義以及詞匯關係鏈接。在漢語中,類似的典型代表有《同義詞詞林》[15]及其擴展版[16]、知網(HowNet)[17]等,都是從語言學的角度,以概念為最基本的語義單元構建起來的可以被計算機處理的漢語詞典。
這些早期的知識圖譜都是利用相關領域專家進行人工構建,具有很高的準確率和利用價值,但是其構建過程耗時耗力而且存在覆蓋性較低的問題。
1989 年萬維網的出現,為知識的獲取提供了極大的方便,1998 年,萬維網之父蒂姆·伯納斯·李再次提出語義網(Semantic Web),其初衷是讓機器也同人類一樣可以很好地獲取並使用知識[5,6,7]。
不同於人工智能中訓練機器使之擁有和人類一樣的認知能力,語義網直接向機器提供可直接用於程序處理的知識表示[5]。但語義網是一個較為宏觀的設想並且其設計模型是“自頂向下”的,導致其很難落地,學者們逐漸將焦點轉向數據本身。
2006 年,伯納斯·李提出鏈接數據(Linked Data)的概念,鼓勵大家將數據公開並遵循一定的原則(2006 年提出 4 條原則,2009 年精簡為 3 條原則)將其發布在互聯網中[8,9],鏈接數據的宗旨是希望數據不僅僅發布於語義網中,而需要建立起數據之間的鏈接從而形成一張巨大的鏈接數據網。其中,最具代表性的當屬 2007 年開始運行的 DBpedia 項目[10],是目前已知的第一個大規模開放域鏈接數據。
DBpdia 項目最初是由柏林自由大學和萊比錫大學的學者發起的,其初衷是緩解語義網當時麵臨的窘境,第一份公開數據集在 2007 年時發布,通過自由授權的方式允許他人使用。Leipzig 等學者[10]認為在大規模網絡信息的環境下傳統“自上而下”地在數據之前設計本體是不切實際的,數據及其元數據應當隨著信息的增加而不斷完善。
數據的增加和完善可以通過社區成員合作的方式進行,但這種方式涉及數據的一致性、不確定性,以及隱式知識的統一表示等諸多問題。Leipzig 等人[10]認為探尋這些問題最首要並高效的方式就是提供一個內容豐富的多元數據語料,有了這樣的語料便可以極大推動諸如知識推理、數據的不確定管理技術,以及開發麵向語義網的運營係統。
朝著鏈接數據的構想,DBpedia 知識庫利用語義網技術,如資源描述框架(RDF)[18],與眾多知識庫(如 WordNet、Cyc 等)建立鏈接關係,構建了一個規模巨大的鏈接數據網絡。

2001 年,一個名為維基百科(Wikipedia)的全球性多語言百科全書協作計劃開啟[11],其宗旨是為全人類提供自由的百科全書,在短短幾年的時間裏利用全球用戶的協作完成數十萬詞條(至今擁有上百萬詞條)知識。維基百科的出現推動了很多基於維基百科的結構化知識的知識庫的構建,DBpedia[10]、Yago[12]等都屬於這一類知識庫。
Yago 是由德國馬普研究所於 2007 年開始的項目,針對當時的應用僅使用單一源背景知識的情況,建立了一個高質量、高覆蓋的多源背景知識的知識庫。前麵介紹的專家構建的 WordNet 擁有極高的準確率的本體知識,但知識覆蓋度僅限於一些常見的概念或實體;相比之下,維基百科蘊含豐富的實體知識,但維基百科多提供的概念的層次結構類似標簽結構並不精確,直接用於本體構建並不適合。
Yago 的主要思路是將 WordNet 與維基百科二者的知識結合,即利用 WordNet 的本體知識補充維基百科中實體的上位詞知識,從而獲取大規模高質量、高覆蓋的知識庫。截至目前,Yago 擁有超過 1 千萬實體的 1.2 億條事實知識,同時近些年也構建起了與其他知識庫的鏈接關係。
DBpedia 主要通過社區成員來定義和撰寫準確的抽取模版,從維基百科中抽取結構化信息(如 infobox)構建大規模知識庫,另外本體(即知識庫的元數據、schema)的構建也是通過社區成員合作完成的。
由於維基百科是社區撰寫,其知識表達難免有不一致的情況,DBpedia 利用 mapping 技術與抽取模版來實現知識描述的統一與一致性。另外,為了實現知識的更新與擴增,DBpedia 開發 DBpediaLive 來保持與維基百科的同步。在 2016 年發行的版本中,DBpedia 擁有超過 6 百萬實體及其數十億事實知識,其中人工構建的本體庫包含 760 種類別信息。同時,DBpedia 擁有大量的跨語言知識,共擁有除英語外的 66 億其他語言事實知識。
2007 年,Freebase[13]開始構建,類似維基百科,其內容主要來自其社區成員的貢獻,但與維基百科最大的不同之處在於 Freebase 中都是結構化的知識,在維基百科中人們編輯的是文章,而在 Freebase 中編輯的是知識。
在 Freebase 中,用戶是其主要核心,除了對實體的編輯,用戶也參與本體庫的構建、知識的校對,以及與其他知識庫的鏈接工作。除人工輸入知識,Freebase 也主動導入知識,如維基百科的結構化知識。Freebase 擁有大約 2 千萬實體,目前被 Google 公司收購,Freebase 的 API 服務已經關閉但仍提供數據的下載。
2012 年,考慮到維基百科中大部分的知識都是非結構組織起來的,帶來諸多問題(如:無法對知識進行有效的搜索與分析,進而知識無法得到很好的重用,甚至存在知識的不一致性的現象),維基媒體基金會推出 Wikidata 項目[14],一個類似於 Freebase 的大規模社區成員合作知識哭,旨在用一種全新的方式管理知識以克服以上的存在於維基百科中的問題。
以上所介紹的知識圖譜都是基於英文語言的,即使是多語言知識圖譜也是以英文為主語言,其他語言知識是用過跨語言知識(如:語言間鏈接(ILLs)、三元組對齊(TWA))鏈接得到。
近些年,國內推出了大量以中文為主語言的知識圖譜,它們主要都是基於百度百科和維基百科的結構化信息構建起來的。如上海交通大學的zhishi.me[19]、清華大學的XLore[20]、複旦大學的CN-pedia[21]。2017 年,由國內多所高校發起 cnSchema.org 項目[23],旨在利用社區力量維護開放域知識圖譜的 Schema 標準。
上述介紹的知識圖譜的構建方式包括人工編輯和自動抽取,但自動抽取方法主要是基於在線百科中結構化信息而忽略了非結構化文本,而互聯網中大部分的信息恰恰是以非結構化的自由文本形式呈現。與鏈接數據發展的同期,很多基於信息抽取技術的知識獲取方法被提出,用以構建基於自由文本的開放域知識圖譜。
2007 年,華盛頓大學 Banko 等人[24]率先提出開放域信息抽取(OIE),直接從大規模自由文本中直接抽取實體關係三元組,即頭實體、關係指示詞,以及尾實體三部分,類似於語義網中 RDF 規範的 SPO 結構。
在 OIE 提出之前,也有很多麵向自由文本的信息抽取被提出,但這些方法主要的思路都是為每個目標關係訓練相應的抽取器。這類傳統的信息抽取方法在麵對互聯網文本中海量的關係類別時無法高效工作,即為每個目標關係訓練抽取器時不現實的,更為嚴重的是很多情況下麵對海量的網絡文本我們無法事先明確關係的類型。
OIE 通過直接識別關係詞組(relation phrases)也稱關係指示詞,即顯式表證實體關係的詞組,來抽取實體關係。基於 OIE 的指導思想,華盛頓大學陸續推出TextRunner[24]、Reverb[25]、OLLIE[26]等基於自由文本的開放域三元組抽取係統;以及卡耐基梅隆大學的 NELL 係統[27,29]、德國馬普研究中心的 PATTY 等[28]。
這些係統有的需要自動構造標注的訓練語料,進而從中提取關係模版或訓練分類器;有的則依據語法或句法特征直接從分析結果中抽取關係三元組。接下來,本文將簡要介紹下具有代表性的 Reverb 和 NELL 係統的實現思想。
Reverb 針對之前的 OIE 係統中存在的兩個問題:不連貫抽取與信息缺失抽取,提出句法約束:對於多詞語關係詞組,必須以動詞開頭、以介詞結束,並且是由句子中毗鄰的單詞組成。該約束可以有效緩解以上兩個問題造成的抽取失敗。進一步,為了避免由句法約束帶來的冗長的並且過於明確的關係指示詞,Reverb 引入了啟發式的詞法約束。
總的來說,Reverb 提出了兩個簡單卻高效的約束,在麵向英文自由文本的開放域知識抽取中取得了不錯的效果,很具啟發意義。
never-ending learning 被定義為是一種不同於傳統的機器學習方式[29],通過不斷地閱讀獲取知識,並不斷提升學習知識的能力以及利用所學知識進行推理等邏輯思維。NELL 就是一種這樣的智能體,其任務是學習如何閱讀網頁以獲取知識。
NELL 的輸入有:
- 定義了類別和二元關係的初始本體庫;
- 對於每個類別和關係的訓練種子數據;
- 網頁數據(從預先準備好的網頁集合中獲取、每天從 Google 搜索 API 獲取);
- 偶爾的人工幹預。
NELL 每天 24 小時不停歇的進行如下操作:
- 從網頁中閱讀(抽取)知識事實用以填充知識庫,並移除之前存在於知識庫中不正確知識事實,每個知識具有一定的置信度以及參考來源;
- 學習如何比前一天更好地閱讀(抽取)知識事實。
NELL 從 2010 年 1 月開始進行上述閱讀過程,目前所產生的知識庫已經擁有超過 8 千萬的相互鏈接的事實,以及上百萬學習到的短語。

上述所介紹的 OIE 係統大多專注於對開放域實體關係三元組的抽取,但忽略了對於知識圖譜不可或缺的同時也是至關重要的本體庫的構建,即知識圖譜元數據或稱為 Schema 的構建,是為三元組賦以語義的關鍵。
2014 年,由哈爾濱工業大學社會計算與信息檢索研究中心發起的《大詞林》項目,麵向包括自由文本的多信息源對實體的類別信息進行自動抽取並層次化,進而實現對實體上下位關係體係的自動構建,而上下位關係體係正是本體庫的核心組成之一。
《大詞林》的構建不需要領域專家的參與,而是基於多信息源自動獲取實體類別並對可能的多個類別進行層次化,從而達到知識庫自動構建的效果。同時也正是由於《大詞林》具有自動構建能力,其數據規模可以隨著互聯網中實體詞的更新而擴大,很好地解決了以往的人工構建知識庫對開放域實體的覆蓋程度極為有限的問題。
另外,相比以往的類別體係知識庫,《大詞林》中類別體係的結構也更加靈活。如《同義詞詞林(擴展版)》中每個實體具有具備五層結構,其中第四層僅有代碼表示,其餘四層由代碼和詞語表示,而《大詞林》中類別體係結構的層數不固定,依據實體詞的不同而動態變化,如“哈工大”一詞有 7 層之多,而“中國”一詞有 4 層;另外,《大詞林》中的每一層都是用類別詞或實體詞表示。

自 2014 年 11 月 27 日上線,《大詞林》不斷添加中文實體及其層次化類別信息,自動構建開放域實體知識庫。目前,《大詞林》中包括約 900 萬實體、約 17 萬類別;平均每個命名實體有 1.77 個不同粒度的優質類別;上下位關係超過 1 千萬對,其中實體與上位詞之間的上下位關係與上位詞之間的上下位關係準確率均達到 90% 以上。
《大詞林》(https://www.bigcilin.com/)係統網站支持用戶查詢任意實體,並以有向圖的形式展現實體的層次化類別,同時支持以目錄方式供用戶瀏覽部分公開的知識庫。
人工智能中關鍵的一步是知識的獲取與構建,《大詞林》作為基於上下位關係的中文知識庫,隨著互聯網中實體詞的增加不斷擴充其數據規模,並即將加入實體間關係、實體屬性等網狀關係結構,這對於基於知識庫的智能係統無疑是一筆巨大的寶藏。
原文發布時間為:2017-11-3
本文作者: 薑天文
本文來自雲棲社區合作夥伴“PaperWeekly”,了解相關信息可以關注“PaperWeekly”微信公眾號
最後更新:2017-11-03 16:05:14