Cyc是一个致力于将各个领域的本体及常识知识综合地集成在一起,并在此基础上实现知识推理的人工智能项目。其目标是使人工智能的应用能够以类似人类推理的方式工作。这个项目是由道格拉斯·莱纳特在1984年设立的,由Cycorp(页面存档备份,存于互联网档案馆)公司开发并维护。
该项目的一部分以OpenCyc形式发布,OpenCyc项目以开源许可的形式向开发者和使用者提供API,可下载的数据集(特别是为语义万维网实践者提供了OWL版本的数据集)等。
Cyc项目始于1984年,由当时的微电子与计算机技术公司开发。该项目最开始的目标是将上百万条知识编码成机器可用的形式,用以表示人类常识。CycL是Cyc项目专有的知识表示语言,这种知识表示语言是基于一阶关系的。1986年Douglas Lenat预测如果想要完成Cyc这样庞大的常识知识系统,这将涉及25万条规则,并将要花费350个人年才能完成。1994年,Cyc项目从该公司独立出去,并以此为基础成立了Cycorp(页面存档备份,存于互联网档案馆)公司。
"Cyc"名字的来源是"encyclopedia",发音很像,是美国德克萨斯州奥斯丁的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)”。常量以"#$"开头并区分大小写。常量主要分为以下几类:
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推理引擎支持一般的逻辑演绎推理,包括:
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知识库。
2006年,Cycorp发布了二进制版本的ResearchCyc 1.0,这是向科研社群发布的免费版本的Cyc(ResearchCyc在2004年经过了一整年的测试开发,并于2005年2月发布了测试版)。ResearchCyc中除了包含OpenCyc中的分类信息外,还在知识库中显著增加了许多语义知识(及附加的事实),并加入了一个庞大的词汇表、英文解析与生成工具、及用于编辑、查询知识的Java接口。
恐怖主义综合知识库是一个正在开发中的Cyc应用,该应用的目标是最终创建一个包含所有恐怖组织、相关成员、领袖、其世界观、创建者、赞助者、设施、地点、经费、目的、行为、战术及某次特定恐怖活动事实的知识库。该类知识以数理逻辑表示的声明形式存储。
Cyclopedia是一个正在开发的项目,它致力于用Cyc中的关键词对Wikipedia网页上的内容进行标注。
克利夫兰临床基金会采用Cyc开发了一个生物医学信息的自然语言查询系统。该系统将查询通过开放变量解析为CycL(高阶逻辑)片断构成的集合,随后通过应用各种约束(如医学领域知识、常识、语篇语用学、语法)之后,找到将这些片断结合在一起,形成语义丰富的形式化查询的方法。
Cyc项目被誉为是“人工智能历史上最有争议的项目”之一,因此难免对它有批评的意见,这些意见可以概括为: