OpenCyc

**Cyc** 是一個致力於將各個領域的本體及常識知識綜合地集成在一起，並在此基礎上實現知識推理的人工智慧項目。其目標是使人工智慧的應用能夠以類似人類推理的方式工作。這個項目是由道格拉斯・萊納特在 1984 年設立的，由 Cycorp（頁面存檔備份，存於網際網路檔案館）公司開發並維護。

該項目的一部分以 **OpenCyc** 形式發布，OpenCyc 項目以開源許可的形式向開發者和使用者提供 API，可下載的數據集（特別是為語義全球資訊網實踐者提供了 OWL 版本的數據集）等。

## 概述

Cyc 項目始於 1984 年，由當時的微電子與計算機技術公司開發。該項目最開始的目標是將上百萬條知識編碼成機器可用的形式，用以表示人類常識。CycL 是 Cyc 項目專有的知識表示語言，這種知識表示語言是基於一階關係的。
1986 年 Douglas Lenat 預測如果想要完成 Cyc 這樣龐大的常識知識系統，這將涉及 25 萬條規則，並將要花費 350 個人年才能完成。1994 年，Cyc 項目從該公司獨立出去，並以此為基礎成立了 Cycorp（頁面存檔備份，存於網際網路檔案館）公司。

"Cyc" 名字的來源是 "encyclopedia"，發音很像 _syke_，是美國德克薩斯州奧斯丁的 Cycorp（頁面存檔備份，存於網際網路檔案館）公司的有效註冊商標，Cycorp 是一家由 Douglas Lenat 領導的致力於實現人工智慧的公司。雖然 Cyc 知識庫本身為 Cycorp 公司所有，但是該公司在開源 Apache 許可證的保證下提供了一個用於自動推理的公共詞彙集，即 OpenCyc。最近，Cyc 還在一個以研究為目的的許可證保證下向人工智慧研究者開放，並以 ResearchCyc 命名。

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 推理引擎效率測試的有意義的標準測試及與其他類似系統的比較；
* 目前該系統在深度和廣度上都有待完善，然而測度該系統的完備性本身就是很困難的；
* 缺乏文檔；
* 缺乏最新的在線培訓材料，不便於初學者學習使用該系統；
* 缺乏對普通對象構成的本體描述的斷言。

## 參考文獻

* DAML
* 語義網

## 進一步閱讀建議

* Alan Belasco et al.（2004）. "Representing Knowledge Gaps Effectively"（頁面存檔備份，存於網際網路檔案館）. In: D. Karagiannis, U. Reimer（Eds.）: _Practical Aspects of Knowledge Management, Proceedings of PAKM 2004, Vienna, Austria, December 2–3, 2004_. Springer-Verlag, Berlin Heidelberg.
* Elisa Bertino, Gian Piero & B.C. Zarria (2001). _Intelligent Database Systems_. Addison-Wesley Professional.
* John Cabral & others (2005). "Converting Semantic Meta-Knowledge into Inductive Bias". In: _Proceedings of the 15th International Conference on Inductive Logic Programming_. Bonn, Germany, August 2005.
* Jon Curtis et al.（2005）. "On the Effective Use of Cyc in a Question Answering System". In: _Papers from the IJCAI Workshop on Knowledge and Reasoning for Answering Questions_. Edinburgh, Scotland: 2005.
* Chris Deaton et al.（2005）. "The Comprehensive Terrorism Knowledge Base in Cyc". In: Proceedings of the 2005 International Conference on Intelligence Analysis, McLean, Virginia, May 2005.
* Kenneth Forbus et al.（2005）."Combining analogy, intelligent information retrieval, and knowledge integration for analysis: A preliminary report". In: _Proceedings of the 2005 International Conference on Intelligence Analysis_, McLean, Virginia, May 2005
* James Masters (2002). "Structured Knowledge Source Integration and its applications to information fusion". In: _Proceedings of the Fifth International Conference on Information Fusion_. Annapolis, MD, July 2002.
* James Masters and Z. Güngördü（2003）. "Structured Knowledge Source Integration: A Progress Report". In: _In Integration of Knowledge Intensive Multiagent Systems_. Cambridge, Massachusetts, USA, 2003.
* Cynthia Matuszek et al.（2005）."Searching for Common Sense: Populating Cyc from the Web". In: _Proceedings of the Twentieth National Conference on Artificial Intelligence_. Pittsburgh, Pennsylvania, July 2005.
* Douglas Lenat and R. V. Guha.（1990）. _Building Large Knowledge-Based Systems: Representation and Inference in the Cyc Project_. Addison-Wesley. ISBN 978-0-201-51752-1.
* Tom O'Hara et al.（2003）. "Inducing criteria for mass noun lexical mappings using the Cyc Knowledge Base and its Extension to WordNet". In: _Proceedings of the Fifth International Workshop on Computational Semantics_. Tilburg, 2003.
* Kathy Panton et al.（2002）. "Knowledge Formation and Dialogue Using the KRAKEN Toolset". In: _Eighteenth National Conference on Artificial Intelligence_. Edmonton, Canada, 2002.
* Deepak Ramachandran P. Reagan & K. Goolsbey (2005). "First-Orderized ResearchCyc: Expressivity and Efficiency in a Common-Sense Ontology". In: _Papers from the AAAI Workshop on Contexts and Ontologies: Theory, Practice and Applications_. Pittsburgh, Pennsylvania, July 2005.
* Stephen Reed and D. Lenat (2002). "Mapping Ontologies into Cyc". In: _AAAI 2002 Conference Workshop on Ontologies For The Semantic Web_. Edmonton, Canada, July 2002.
* Benjamin Rode et al.（2005）. "Towards a Model of Pattern Recovery in Relational Data". In: _Proceedings of the 2005 International Conference on Intelligence Analysis_. McLean, Virginia, May 2005.
* Dave Schneider et al.（2005）. "Gathering and Managing Facts for Intelligence Analysis". In: _Proceedings of the 2005 International Conference on Intelligence Analysis". McLean, Virginia, May 2005._
* Blake Shepard et al.（2005）. "A Knowledge-Based Approach to Network Security: Applying Cyc in the Domain of Network Risk Assessment". In: _Proceedings of the Seventeenth Innovative Applications of Artificial Intelligence Conference_. Pittsburgh, Pennsylvania, July 2005.
* Nick Siegel et al.（2004）. "Agent Architectures: Combining the Strengths of Software Engineering and Cognitive Systems". In: _Papers from the AAAI Workshop on Intelligent Agent Architectures: Combining the Strengths of Software Engineering and Cognitive Systems_. Technical Report WS-04-07, pp. 74–79. Menlo Park, California: AAAI Press, 2004.
* Nick Siegel et al.（2005）. Hypothesis Generation and Evidence Assembly for Intelligence Analysis: Cycorp's Nooscape Application". In Proceedings of the 2005 International Conference on Intelligence Analysis, McLean, Virginia, May 2005.
* Michael Witbrock et al.（2002）. "An Interactive Dialogue System for Knowledge Acquisition in Cyc". In: _Proceedings of the Eighteenth International Joint Conference on Artificial Intelligence_. Acapulco, Mexico, 2003.
* Michael Witbrock et al.（2004）. "Automated OWL Annotation Assisted by a Large Knowledge Base". In: _Workshop Notes of the 2004 Workshop on Knowledge Markup and Semantic Annotation at the 3rd International Semantic Web Conference ISWC2004_. Hiroshima, Japan, November 2004, pp. 71–80.
* Michael Witbrock et al.（2005）. "Knowledge Begets Knowledge: Steps towards Assisted Knowledge Acquisition in Cyc". In: _Papers from the 2005 AAAI Spring Symposium on Knowledge Collection from Volunteer Contributors (KCVC)_. pp. 99–105. Stanford, California, March 2005.

## 外部連結

* Cycorp 主頁 \* （頁面存檔備份，存於網際網路檔案館）
* Opencyc.org（包含培訓材料）
* research.cyc.com
* Cyc 基金會
* 支持瀏覽 OpenCyc 知識庫的伺服器
* SourceForge.net 上的 Cyc, 開源發布的頂層 Cyc 本體（版本 1.0 發布於 2006 年 7 月 14 日）
* OpenCyc C API（頁面存檔備份，存於網際網路檔案館）
* David Whitten 寫的非官方 Cyc 常見問題解答
* 能夠思考的機器進展到什麼程度了？2005 年 4 月 23 日，New Scientist（頁面存檔備份，存於網際網路檔案館）
* 常識 2006 年 4 月 15 日，New Scientist（頁面存檔備份，存於網際網路檔案館）
* Cyc 官方博客
* "Confessions of a Cyclist" - 另一個關於 Cyc 的博客（頁面存檔備份，存於網際網路檔案館）
* Cyc 視頻培訓材料（頁面存檔備份，存於網際網路檔案館）
* 採用 OpenCyc 實現的常識知識獲取系統