Cyc概述
Cyc知識庫中表示的知識一般形如“每棵樹都是植物”、“植物最終都會死亡”。當提出“樹是否會死亡”的問題時,推理引擎可以得到正確的結論,並回答該問題。該知識庫中包含了320萬條人類定義的斷言,涉及30萬個概念,15000個謂詞。這些資源都採取CycL語言來進行描述,該語言採取謂詞代數描述,語法上與Lisp程式設計語言類似。
目前Cyc項目大部分的工作仍然是以知識工程為基礎的。大部分的事實是通過手工添加到知識庫中,並在這些知識基礎上進行高效推理的。最近Cycorp正致力於使Cyc系統能夠和最終用戶用自然語言進行交流,並通過具機器學習來輔助形成知識的工作。
Cyc公司與很多公司具有相同的夢想,即採用Cyc自然語言理解工具解析整個網際網路並從中抽取結構化數據。
2008年,研究人員將Cyc資源被映射到許多維基百科的文章上,這使得Cyc與類似於DBpedia、Freebase這樣的數據集進行連線變得更為容易。
知識庫
Cyc中的概念 被稱為“常量(constants)”。常量以"#$"開頭並區分大小寫。常量主要分為以下幾類:
個體,即 individuals:例如 #$BillClinton 又如 #$France。
集合,即 Collections:例如 #$Tree-ThePlant (包含所有的樹),又如 #$EquivalenceRelation (包含所有的等價關係)。集合中的個體被稱為該集合的實例( instance)。
真值函式,即 Truth Functions:該函式可被套用於一個或多個概念,並返回“真”或“假”。例如 #$siblings 表示兄弟姐妹關係,若兩個參數對應的內容為兄弟姐妹關係,則該概念返回真值。約定真值函式以小寫字母開頭,並且可以被拆分為若干個邏輯連線詞(例如 #$and、#$or、#$not、#$implies)、量詞(#$forAll, #$thereExists 等等)以及謂詞。
函式,即 Functions:用於以現有術語為基礎產生新的術語。例如 #$FruitFn 具有以下作用:若接收到用於描述一種(或一個集合)植物的聲明,則會返回其果實。約定函式常量以大寫字母開頭,並以“Fn”作為結尾。
Cyc中的謂詞最重要的是 #$isa 以及 #$genls。#$isa 表示某個對象是某個集合的個體(instance),#$genls 表示某個集合是另外一個集合的子集合。由概念構成的事實採用CycL語言描述的“句子”表示。謂詞則寫在與其相關的對象之前,並以括弧括起來:
(#$isa #$BillClinton #$UnitedStatesPresident) 表示 “Bill Clinton屬於美國總統集合”;
(#$genls #$Tree-ThePlant #$Plant) 表示“所有的樹都是植物”;
(#$capitalCity #$France #$Paris) 表示“巴黎是法國的首都”。句子中可以包含變數,變數字元串以 "?"開頭,這些句子被稱為“規則”。與#$isa謂詞有關的一條規則如下所示:
(#$implies
(#$and
(#$isa ?OBJ ?SUBSET)
(#$genls ?SUBSET ?SUPERSET))
(#$isa ?OBJ ?SUPERSET))
上面的規則可解釋為:"若OBJ為集合SUBSET中的一個實例,並且SUBSET是SUPERSET的子集,則OBJ是集合SUPERSET的一個實例。下面再給出另外一個典型的示例:
(#$relationAllExists #$biologicalMother #$ChordataPhylum #$FemaleAnimal) 上面的規則可解釋為:對於脊索動物(chordate)集合#$ChordataPhylum中的所有實例,都存在一個母性動物(為#$FemaleAnimal的實例)作為其母親(通過謂詞#$biologicalMother描述)。
Cyc知識庫是由許多“microtheories” (Mt)構成的,概念集合和事實集合一般與特定的Mt關聯。與整體的知識庫有所不同的是,每一個Mt相互之間並不矛盾,每一個Mt具有一個常量名,Mt常量約定以字元串 "Mt"結尾。例如:#$MathMt 表示包含數學知識的Mt,Mt之間可以相互繼承得到並組織成一個層次化的結構。例如#$MathMt 特化到更為精細的層次便包含了如 #$GeometryGMt,即有關幾何的Mt。
推理引擎
推理引擎是從知識庫中經過推理獲取答案的電腦程式。Cyc推理引擎支持一般的邏輯演繹推理 ,包括:
肯定前件假言推理(Modus ponens)
否定後件假言推理(Modus tollens)
全稱量化(universal quantification)
存在量化(existential quantification)
發布版本
OpenCyc
OpenCyc的最近一個版本是於2009年7月發布的OpenCyc 2.0版。OpenCyc 1.0版涵蓋了完整的Cyc本體,其中包含了47000個概念、306000個事實,主要是分類斷言,並不包含Cyc中的複雜規則。
OpenCyc的第一個版本發布於2002年春天,該版本僅包含6000個概念、60000條事實。該知識庫是在Apache許可證保護下發布的。Cycorp公司已表示有意採用無限制的授權形式及多種授權形式滿足其用戶的需求。CycL和SubL解釋器(允許用戶瀏覽並編輯知識庫、並具有推理功能)是免費發布給用戶的,但是僅包含二進制檔案,並不包含原始碼。OpenCyc具有針對Linux作業系統及微軟Windows作業系統的發行版。開源項目Texai項目發布了RDF版本的OpenCyc知識庫。
ResearchCyc
2006年,Cycorp發布了二進制版本的ResearchCyc 1.0,這是向科研社群發布的免費版本的Cyc(ResearchCyc在2004年經過了一整年的測試開發,並於2005年2月發布了測試版)。ResearchCyc中除了包含OpenCyc中的分類信息外,還在知識庫中顯著增加了許多語義知識(及附加的事實),並加入了一個龐大的辭彙表、英文解析與生成工具、及用於編輯、查詢知識的Java接口。
套用
恐怖主義知識庫項目
恐怖主義綜合知識庫是一個正在開發中的Cyc套用,該套用的目標是最終創建一個包含所有恐怖組織、相關成員、領袖、其世界觀、創建者、贊助者、設施、地點、經費、目的、行為、戰術及某次特定恐怖活動事實的知識庫。該類知識以數理邏輯表示的聲明形式存儲。
Cyclopedia項目
Cyclopedia是一個正在開發的項目,它致力於用Cyc中的關鍵字對Wikipedia網頁上的內容進行標註。
克利夫蘭臨床基金會項目
克利夫蘭臨床基金會採用Cyc開發了一個生物醫學信息的自然語言查詢系統。該系統將查詢通過開放變數解析為 CycL(高階邏輯)片斷構成的集合,隨後通過套用各種約束(如醫學領域知識、常識、語篇語用學、語法)之後,找到將這些片斷結合在一起,形成語義豐富的形式化查詢的方法。
對Cyc項目的批評
Cyc項目被譽為是“人工智慧歷史上最有爭議的項目”之一 ,因此難免對它有批評的意見,這些意見可以概括為:
系統的複雜度:該系統具有創建百科全書式知識庫的野心,卻手動添加所有的知識到系統中;
知識表示廣泛的具體化引發的可擴展性問題,特別是以常量的形式進行;
對物質概念的解釋難以令人滿意,對內在屬性和外在屬性區分不清晰;
缺乏對Cyc推理引擎效率測試的有意義的標準測試及與其他類似系統的比較;
目前該系統在深度和廣度上都有待完善,然而測度該系統的完備性本身就是很困難的;
缺乏文檔;
缺乏最新的線上培訓材料,不便於初學者學習使用該系統;
缺乏對普通對象構成的本體描述的斷言。