• 1.摘要
  • 2.基本信息
  • 3.Cyc概述
  • 4.知识库
  • 5.推理引擎
  • 6.发布版本
  • 6.1.OpenCyc
  • 6.2.ResearchCyc
  • 7.应用
  • 7.1.恐怖主义知识库项目
  • 7.2.Cyclopedia项目
  • 7.3.克利夫兰临床基金会项目
  • 8.对Cyc项目的批评
  • 9.参考资料

CYC项目

Cyc项目1始于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项目

  • 外文名

    CYC project

  • 始于

    1984年

  • 特点

    计算机技术公司开发

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))