自然语言处理第13章 自然语言理解ppt课件.ppt
自然语言理解第十三章 知识表示和推理, 关于上下文知识的两个重要方面是:关于世界的普遍知识及语言交流时的专业知识。 知识表示为了对上下文进行分析,你需要有表示知识和进行推理的一种形式。对于这个领域的研究就是知识表示(knowledge representation)。 对于不同的研究者知识表示意味着不同的事情:对一些人来说,知识表示关心的是用来表示知识的语言的结构或者是逻辑形式、语意网络、框架,或者是其他特殊设计的表示形式。而对另一些人来说,知识表示关心的是句子的内容需要什么样的前提及句子是如何组织的。这两个问题都是很重要的。有时,看起来是一场关于知识表示的激烈争论事实上是争论的双方都只注意到了知识表示的其中一方面而忽略了另一方面。,这一章没有对知识表示的形式进行更广泛的讨论。相反地,主要讨论的是知识表示和推理是如何被用来方便语言理解的。因此,将采用的是一种基于谓词演算的抽象表示。以便使有关知识表示的问题的讨论以最少量的新资料和符号来介绍。这并不意味着用在一个系统中的基本的知识表示必须采用逻辑公式或定理证明的方法做为推理的模型。 基本的知识表示系统可以是语意网络、逻辑描述、基于框架的系统、相互连接的模型或是其他形式,只要系统有起码的表示能力进行描述。,知识表示和推理 13.1 知识表示 13.2 一种基于谓词演算的知识表示 13.3 框架:描述事物各个方面的信息 13.4 自然语言中的量化的表示 13.5 动词的时态和语态 13.6 基于知识表示的自动推理 13.7 过程语意学和问题的求解 13.8 混合知识表示,13.1 知识表示 在任何知识表示系统中有两种知识十分关键:对于世界的普遍知识和当前情况下的特定知识。对于世界的普遍知识的许多方面已经被认识了, 如:典型的统治阶级、部分和全体的联系等等。 这些组成了对于世界中的普遍限制的信息和语言中某些术语的语意定义。对于绝大多数来说,大部分知识是根据世界中各种各样的目标指定的,并不关心特定个体的信息。 例如,OWN1可以译成人和物之间的一种关系,而不是一个特定的人(如:John,owns a particular car.)。 关于个体的信息在语言理解中同样是很重要的,它是我们称之为特定的被理解的句子系列的一个大的组成部分。事实上所有的知识表示系统支持这两者任何一个方面的推导。, 一般的世界知识对于解决许多语言解释问题是必不可少的,最重要的一个是非歧义。 例如: I read a story about evolution in ten minutes. I read a story about evolution in the last million years. 特定情况下的特定知识对于许多问题来说是很重要的,包括确定被引用的名词短语和非歧义词在当前情况下的意义。 我们往往不是很正规地把知识表示看作是用来翻译知识和理解系统的。但只要引入越来越多的术语知识和规则,那越来越多的专门用语将被更精确地科学定义。一个知识表示系统包括一个称为知识库(KB:knowledge base)的句子数据库和一序列可以根据当前知识库组成新句子的推理规则集(inference techniques)。当规则集中的原始句子都是正确的时候它仅能生成正确的新的句子时,我们说这个规则集是好(sound)的。然而并不是要求所有的推理规则都必须是好的,就象我们后面将会看到的一样。,知识表示语言 由知识库中的句子定义的语言称为知识表示语言(KRL)。它很象逻辑形式语言,但有许多实际原因使他们经常不同。这两种语言是根据不同的需要被使用的。逻辑形式语言是为了简化语意解释过程和有效地解决歧义,所以要有很好的表达能力。而知识表示语言在一个特定的领域内必须支持高效的预测推理。换句话说,它必须是相对简单以至可以定义从特定知识库中推导出的句子集,并建立在合理的时间内执行这些推理的计算模型。 例如:对处理数量词而言。 在逻辑形式语言中引入了大范围的数量词,与英语数量词的不同词义严密相对称。这使得非歧义技术(例如当要确定数量词范围的时候)就可以应用实际数量词之间的微妙的区别(如在each和every之间)。然而,在许多知识表示语言中,往往是一个结构只允许一些数量词或经常只是一个而已。这样推理过程可以被很简单地定义。通过保持语言的分离性及在他们之间定义一个映射函数,你可以同时拥有这两个优点。当然,这个方法的成功依赖于这个映射函数是否被高效地定义。,在确定一个满足有含义的逻辑形式和高效的知识表示的最佳方法时,需要实际的研究工作。根据现有知识,保持逻辑形式和知识表示的分离看起来好象是最好的妥协办法。 当根据知识库中的公式知道一个公式P是真的时,或根据公式表示一个句子的意义时,我们说这个知识库(或句子)继承给了P。然而,通过理解语言而得出的许多结论却不是继承的产物,而是句子的隐含的东西。隐含的东西是指可以从句子中典型地推出,但在其他特定的情况下却被明确地被否定的那些结论。 例如,Jack owns two cars. In fact, he owns three cars. 推理的形式 为了理解自然语言需要许多不同的推理形式。推理方法可以被分成演绎和非演绎形式。由逻辑概念的继承性证明了演绎推理形式的正当。由事实的集合,演绎推理过程可以逻辑地从这些事实得出结论。, 非演绎推理分成几类。例如包括从例子中学习一般性的推理规则(归纳推理 inductive inference)和从结论中推出原因的推理规则(展开推理的一种形式 abductive inference)。 展开推理与演绎推理是相反的,可以通过考虑公理 A B。 演绎推理当给定A利用公式可以推出B,展开推理则由B推出A,因为A是B正确的原因。 许多系统允许缺省信息的使用。 缺省规则是一条可能有例外的推理规则,因而它是可废除的。如果你使用表示法 A B 写缺省信息时,那么被缺省的推理规则如下:IF A B,and A is true, and B is not provable, then conclude B. 缺省规则被认为可以对一般的句子提供好的说明。 例如,句子Birds fly可以用FOPC公式描述: xBIRDS(x) FLIES(x),可废除的规则引入了表示法中的新的复杂性。没有这些规则,大多数表示是单调的,因为增加新的断言只是增加必需的公式的数目。特别是,在单调的表示法中,如果知识库KB1推出结论C,并且如果你加入另一个公式到KB1以至形成一个新的一致的知识库KB2时,那么KB2也推出C。然而这对于使用缺省规则的表示法并不适用,因而他们称为非单调的表示法。例如,考虑一个包含以下公式集的知识库K : Cat(Sampson) Sampson is a cat. TabbyCat(Sampson) Sampson is a tabby cat. c.Cat(c) Purrs(c) Cats purr.由这个知识库,你使用缺省规则可以断定Purrs(Sampson) ,因为没有信息和Purrs(s)相矛盾。另一方面,如果你添加一个新的事实:no tabby cats purr.,那么扩展后的知识库就不能再推出Sampson purrs。,除了缺省规则外,有其他有用的方法可以得到非单调的结论。例如,封闭的世界假设(CWA:closed world assumption)声明了知识库KB包含了关于某些谓词的完整信息。例如,对CWA的一个谓词P,如果一个包含P的命题不能从知识库KB中推出,那么它的否定就被认为是真的。对于航空时间表的数据查询应用中,知识库KB存储了关于存在的航班信息如从Rochester到Boston的FDG100航班但它并没有明确包含否定信息即航班FDG100不飞到Chicago或没有航班FDG455。只有推理过程建立在关于航班的封闭世界假定中这样的信息才能被得出。 推理规则在知识表示系统中有两类主要的推理方法:过程式和陈述式。大多数系统在某种程度上混用这两种方法,形成一个从纯粹的陈述式表示法到纯粹的过程式表示法的联合体。联合体的陈述式结果可能是一个基于逻辑的定理证明器。知识库被表示成公式集合,推理则按照演绎推理的定理证明算法执行。在一个强大的陈述式系统中,强调的是把形式语义赋值给独立于推理的表示法中的表达式。,而过程推理系统强调的是表示法中的推论性的方面。特别是它不关心知识库中的表达式在程序中如何处理。关于过程表示法的一个实例是一个使用计算机自己内置的算术过程来计算算术表达式的系统,它没有任何关于数学的明确的知识表示。实际上,过程系统用在那些经过很好的定义过的领域中的特定的推理任务时具有很高的问题求解效率,但常常因为不够形式化而很难进行分析。 举个例子。继承技术在第十章就被用于语义网络中了。这种推理过程可以用过程化或陈述化的表达方法来实现。纯粹的陈述化表达方法将把关于每一个事实的子类和作用建模为一个公式,并且从标准的演绎推导中获得继承属性。如图:,ACTION,ANIMATE,AGENT,OBJ/ACTION,THEME,PHYSOBJ,上图的信息可以用以下的谓词公式来表示: 1、 x . ACTION(x) a . AGENT(x , a) & ANIMATE(a) 2、 a x . ACTION(x) & AGENT(x , a) ANIMATE(a) 3、 x . OBJ/ACTION(x) ACTION(x) 4、 x . OBJ/ACTION(x) o . THEME(x , o) & PHYSOBJ(o) 5、 o x . OBJ/ACTION(x) & THEME(x , o) PHYSOBJ(o) 用这些公理,你可以证明类OBJ/ACTION继承了AGENT的角色。换句话说,对任一个对象A,如果OBJ/ACTION(A)是真的,就可以证明A也起了AGENT的作用。即: a.AGENT(A , a)&ANIMATE(a) 用公理3和1。 而过程式的表达方法是一个程序:它开始于某个特定的结点OBJ/ACTION,然后寻找和这个结点相连的所有的作用边。再由弧S向上到子类ACTION,在那得到与之相连的所有作用边。因而任何OBJ/ACTION都有一个从类ACTION继承来的的AGENT作用边。,这两种方法得到的是相同的结果,但陈述式的表达是通过在逻辑公式上应用演绎推导,而过程式的表达则是使用一个执行转换图的程序。第一种方法看起来更加严格定义,但第二种可能更加有效。在这种情况下,你可以证明两种方法获得相同的结果,从而充分利用两种方法的优点,即:一个严格定义的语义和执行推理形式的高效程序。 返 回,13.2 基于FOPC的表示 这本书使用的知识表示语言(KRL)将是一阶的谓词演算的一个扩大的版本。注意通过选择语言,你不必一定要用推理的某一种特别的形式。例如, 后面的章节将显示出 KRL是怎么与演绎推理和过程推理两种技术一起使用的。 谓词演算 的语法已被介绍,这里不再描述。我们将集中于对描述自然语言句子意思时需要的标准的的谓词演算进行扩展,并介绍这种语言和逻辑形式语言之间的差别。语言的术语由常量(例如 :John1),函数(例如:父亲( John1 )),及变量(例如: x 和 y)组成。而逻辑形式语言没有使用常量,相反,它是以一对不同的变量来使得描述的上下文互相独立地来表达每件事情。在知识库中,常量被用来代表特定的个体。例如, 逻辑形式项(NAME j1 “John”)是一个短语的意思,它代表其被谈到的人物名为“John”。在给定的上下文中被谈到的真正的人可能被表示成知识库中的常量 John1。,在 KRL 中使用受限量化是很方便的,它与逻辑形式语言中一般量词表示法是很相似的。限制条件由一个冒号隔开接在量词变量后面。正如第八章所提及的,对于存在和全称量词,这种表示法可以进行缩写,但并不扩大语言的表达能力。因而: x : Man(x) Happy(x) is equivalent to x : Man(x)Happy(x) x : Man(x) Happy(x) is equivalent to x : Man(x) Happy(x) 我们也需要等价谓词(a=b),它说明了a和b有同样的指示。给定一个包含常量a 的简单命题Pa ,如果 Pa 是真的并且a=b,那么Pb一定也是真的,且 Pb 和 Pa 一样,只不过 a 被 b 替换掉了。 许多知识表示系统没有明确使用量词。就象有广阔辖域的全程量词变量一样,量词中也包括变量。例如,知识库中的一个公式如(P ? x A)在意义上与谓词演算公式 x. P( x , A)是一致的。, skolem 化 存在量词变量用skolem 标准化的的方法来处理,就是用一个以前从未用过的新的常量来替换变量。例如:公式 y x . P(x , y) 在知识库中可能被解释成象 ( P ?x Sk1) 这样的公式,其中Sk1是一个没用过的新的常量,它表示一个已知存在的对象。 量词限定域用Skolem函数来指示。例如:公式 y x . P(x , y) 在知识库中将被解释成象(P( Sk2 ?y) ?y) 这样的公式,其中Sk2 是一个新的函数,对于每一个?y的值都会相应产生一个不同的对象。 公式常常以两种方法的结合的形式来描写,即全称量词仍然存在的,而存在量词已被Skolem化了。例如:公式 y x . P(x , y) 可能被写成 y P(Sk1(y) , y)。 可以证明所有这些不同形式的表示法是等价的。, 对于基本的知识表示语言来说谓词演算在表示的形式上没有过多的限制。特别地,对于谓词代表的意思也没有过多的解释,因而在选择谓词上有很宽的可能性。一方面对于每一个词的意义你可以有一个不同的谓词,必须使用形式逻辑语言中的策略。另一方面你可以预制一谓词的集合,称为原始集,每一个词意都根据原始集来定义。考虑每一种方法的优点,通过一个词义使用一个谓词,就可以抓住语义与词条之间的微妙的区别。例如:你可能有这样的信息,在知识库中定义的动作SAUNTERS1 ,包含慢慢地走,作为一个人的一种无忧无虑的状态。因而句子Jack sauntered down the street.可能与Jack walked down the street.有不同的含义。当然,要拥有大范围的谓词,且绝大多数有相似的公式定义它们,那你必须付出一定代价。尤其是对于SAUNTERS1和WALKS1有一定的重叠。 使用原始集的方法时,两种意义都会产生获得基本动作的谓词或谓词集合,如MOVEBYFOOT。然后推理规则就在原始谓词集上定义。这种方法允许获得非常简洁的词之间的一般性。然而,如果没有词义上的推理规则,就很难获得词义之间微妙的区别。, 可以定义一个新的原始词以区别sauntering 和walking , 我们认为新的原始词与思想状态有关。Sauntering可能被定义成MOVEBYFOOT和CAREFREESTATE。而词义组合越复杂,原始集的表示法就显得越不利,因为原始词的数目会随着例子的增加而绝对增加。更可怕的是,推理规则也不得不建立在复杂的原始集上而不是简单的谓词上了,所以推理过程也不再是简单的定义。 随着许多问题的出现,找到了一个折中的办法。特别是,基于原始集的表示法的许多优点可以通过类型继承而获得。如果你断定SAUNTERS1和WALKS1是更抽象动作MOVEBYFOOT的两个子类,那么他们可以从MOVEBYFOOT继承他们的最一般的属性,而无需额外的公式。因而当你要添加其他的公式以附上特殊的属性给SAUNTERS1时,就变的很方便了。 这种方法允许你对不完全的知识进行处理。如系统只知道SAUNTERS1是WALKING的一种类型,它不知道任何关于这个词的附加信息,但仍然可以用从MOVEBYFOOT继承的信息产生所需的许多推理规则。另外,我们知道两个词多少有些不同,但是当系统需要关于sauntering的额外的知识时,这可被增加进来。, 除了继承关系,知识表示也可以利用定义词义的其他方法。如已知一个词的完整定义。你就可以定义谓词father是male parent ,即 x . FATHER(x) y PARENT(x , y) & MALE(x) 但大多数词没有精确定义。比如说没有一个属性集精确定义大多数自然种类,如dogs,cats,chairs等等。这些可以被归类成类型继承,而描述必要条件的公式可以被说明,但没有绝对的定义是可能的。作为谓词演算公式来说,这意味着这种定义只包含了一个方面的含义。例如:关于DOG1的公式可能是 x . DOG1(x) CANINE(x) & DOMESTIC-PET(x)其中CANINE本身被定义成MAMMAL的子类。这样的公理获得了作为一只狗的许多重要的属性,但没有完整的定义概念。例如:某人可能有一只宠物狼满足作为一只狗的所有属性,但它仍然不是一只狗。 从产生句子的观点来看,在知识表示语言中从语言的词中抽象出来的谓词越多,越难产生基于意思的句子。,如以下的公式: p : (MaleHuman p) & c . Parent(p , c) . MoveByCar(p , L1) & Buildding(L1) & Used-for-teaching(L1) 它很自然的能实现句子All father drove to the school。为产生这样一个句子,系统不得不识别公式(Male p) & c . Parent(p , c) ,它可能逐字被识别成 male humans who have a child 作为词father 的意思,而命题 MoveByCar(p , L1) & Building(L1) & Used-for-teaching(L1) , 它将逐字被识别成 moved by car to a building used for teaching , 作为短语drove to school 的解释。 很清楚地,这需要关于特定词father 和drive 的意义的实质性知识和一个将KRL中的公式与谓词相匹配的复杂的过程。如果没有谓词和KRL中的这些词义相匹配,那么这个过程将特别复杂。如果这些谓词被包括了,继承组织将建议使用可以识别一个公式如何实现的方法。特别是,若给定一抽象谓词MaleHuman,你可以考虑抽象继承里在其之下的所有谓词中,是否有更精确的表达这个意思的谓词。在这样的情况下Father是一个好的选择,它不仅包含了MaleHuman而且还有意思的另一部分,即: c . Parent(p , c),总之,设计高效的知识表示的一个技巧是选择一个可以使继承关系更加高效的谓词集合。通常,最好的表示法可以和语言学的综合形成一一映射关系。这不仅帮助我们解释句子,也帮助我们从知识库的表达式中产生句子。 返 回,13.3 框架:描述固定格式的信息 框架的构成: 自然语言理解的许多推理涉及到假定所讨论的对象或事件在一般情况下都是真的。这种信息经常用称为框架的结构来解释。以最明确的表达方式,框架仅仅是一个集合,其中包含了 描述某些典型的事物或事件的事实和对象及关于这些事件的推理的特定推导策略。被描述的事件可以包括从可视的情景到复杂的物质对象的结构,到一些动作被执行的典型方法。基于框架等的系统可以提供如缺省推理、由上下层关系自动继承属性和附加过程等方便。在某些实现策略中,所有推理都是由附加在框架上的特定推理过程来完成,而另一些中,框架对于知识大多是描述性的,并且用较为统一的推理过程来解释。不管哪种方法,主要思想就是收集信息去描述通常发生在对象和事件上的情况。 框架中的主要对象用槽(slots)或角色(roles)来表示(和逻辑形式中的主题角色相似)。例如:一座房子的框架可能由各个方面的槽组成,如:厨房、卧室、门厅、前门等等。, 框架也强调了位置和框架所表示的对象之间的关系。如:房子框架的厨房成分,按规律必须位于房子内部,且它包含各种各样的做饭的器皿。你可以把每一个槽当作一个函数,这个函数含有参数:由框架所描述的对象(即框架的一个实例),并且提供适当的槽值。因而房子框架的一个典型实例如H1包含了厨房的一个典型实例,它可以被表示成“the kitchen_slot of H1”或kitchen(H1),加到其它成分的典型实例同样适用。 举个例子:个人计算机的框架定义可能如下所示:Define Object class PC(e):Roles: Keyb , Disk1 , MainBoxConstraints: Keyboard(Keyb) , DiskDrive(Disk1) , CPU(Mainbox)这个结构意味着类PC的所有对象都含有成分:键盘、磁盘和CPU(可以用函数Keyb,Disk1和Mainbox分别表示)。这与在许多语义网络系统中所使用的表示法是有相似的形式。事实上,你可以很容易地用语义网络表示符号来表示这种结构,如图13.2所示:,如一个PC类型的例子设为PC3有子成分KEYS13 , DD11和CPU00023,它可以用如下的框架表示法来表示:( PC3 isa PC with Keyb=KEY13, Disk1=DD11, MainBox= CPU00023)这种定义可以看作下面的FOPC公式的一个缩写形式 :PC(PC3) Keyb(PC3)=KEY13 Disk1(PC3)=DD11 MainBox(PC3)=CPU00023,PC,Keyboard,Disk Drive,CPU,Keyb,Disk1,MainBox, 受限槽: 一般来说,你需要比PC的结构成分这种表面知识更多的东西。如:PC框架可以包含关于各槽值是如何相互关联的更多信息。你可能想把每一个槽当成一个子部分及指示这些部分如何关联:如键盘和磁盘用适当的连接器加到CPU盒子中。为了确认这一点,你得定义CPU为一个含有如键盘插头、磁盘端口、电源插头等等槽的框架结构。定义被扩展成如以下重新定义的PC类,以至键盘和磁盘是子成分且被直接连接到CPU上。Define Object Class PC(p):Roles: Keyb, Disk1, MainBoxConstraints: Keyboard( Keyb) PART-OF( Keyb, p) CONNECTED-TO( Keyb, KeyboardPlug( MainBox) DiskDrive( Disk1) PART-OF( Disk1, p) CONNECTED-TO( Disk1, DiskPort( MainBox) CPU( MainBox) PART-OF( MainBox, p),由这个定义,举PC的一个例子设为PC4具有槽值KEY14,DD12和CPU07,可被写成:(PC4 isa PC with Keyb =KEY14, Disk1=DD12, MainBox=CPU07)它包含了以下所有信息: PC( PC4) Keyb(PC4)=KEY14 PART-OF( Key14, PC4) CONNECTED-TO( Key14, KeyboardPlug( CPU07) Disk1( PC4)=DD12 PART-OF( DD12, PC4) CONNECTED-TO( DD12, DiskPort( CPU07) MainBox(PC4)=CPU07 PART-OF( CPU07, PC4) 即然框架是解释关于对象集的一种方法,它就可以对框架信息通过类型层次结构来继承这一点作出解释。如:你定义了PC的一个子类:PCwithsecondDisk,这种类型应该继承所有的PC的槽。如果为这种类型定义了一个新槽设为DISK2那么所有实例都将有4个槽:keyb,disk1,mainbox和disk2。, 注意框架中的信息应被看作缺省条件,如:可能有一个PC,为PC5,其中键盘没有和计算机相连,这个属性被分割的子类并没有让PC5被排除于PC类之外,只不过它不是一个典型的PC。 基于框架的表示法可用来解释关于它们子成分之外的事件的附加信息。对于自然语言理解的关于这方面的最有用的实例是表示动作时。正如在后面的章节中你将看到的,对于一个动作常在什么情况下发生的知识在翻译语言中很有用。 特别是, 关于偶然性知识影响动作发生的因素通常有偶然性,及什么样的条件对于事件的发生是必不可少的,这些知识都十分重要,槽表示法被扩展成允许框架实例和其它命题或事件的关系存在。对于动作,以下关系是有用的:preconditionsproperties that typically enable the action.effectsproperties that are typically caused by the action.decompositionthe way in which an action is typically performed (usually defined in terms of a sequence of subactions).,例如:图13.3定义了buying something这个动作。,The Action Class BUY(b):Roles: Buyer, Seller, Object, MoneyConstraints: Human(Buyer), SalesAgent(Seller),IsObject(Object) Value(Money, Price(Object)Preconditions: OWNS(Buyer, Money) OWNS(Seller, Object)Effects: OWNS(Buyer, Money) OWNS(Seller, Object) OWNS(Buyer, Object) OWNS(Seller, Money)Decomposition: GIVE(Buyer,Seller, Money) GIVE(Seller, Buyer, Object),Buy something 这个动作包含了四个对象:the buyer, the seller, the object 和 an amount of many equal to the price of the object。此外,这个定义还说明了买的动作仅发生在当买者有足够钱和卖者有这件物品时(前提条件)。并且通常最后买者拥有了这件物品,而卖者拥有了钱(结果)。最后,通常买东西的一个方法是买者给卖者钱,而卖者给买者物品(分解decomposition)。在日常信息中这可能看起来比较世俗的,但是对理解动作和句子描述的语句之间的关系时这个知识又是关键的。同样对于二义性的解决也是至关重要的。 返 回,13.4 自然语言中的量化的表示 由已定义的KRL,你可能已认识到将逻辑形式语言映射成KRL 时的一些问题。两个语言之间最明显的区别是对量词的处理上。逻辑形式语言包含许多与英语数量词相应的数量表示形式,而KRL只允许全称和存在量词。要协调这种区别初看起来好象毫无希望。然而,利用扩展KRL的实体使之允许集合作为对象的方法,为减少这种差别取得了巨大进步。一个集合是一个被看作单元的对象的集合。1、集合一般来说可能是有限的(如由John和Mary组成的集合)或无限的(由比 7 大的数组成的集合)。我们在KRL中只使用有限的集合。2、一个集合可以用在大括号中对成员进行列表来表示: 如 John1, Mary1 指由名称John1和Mary1组成的集合。先后顺序没有关系:John1, Mary1= Mary1, John1。3、我们也允许常量来表示集合。因而S1也表示一个由公式S1=John1,Mary1定义的集合。,4、完整的集合定理中允许集合作为其它集合的成员。在KRL中我们不允许这样的集合存在。集合常常是根据属性来定义的。这可以写成形式y|Py,它是满足表达式Py的所有对象的集合。如:所有的男人的集合是y|Man(y)。 另外,我们引入以下关于集合和个体之间关系的假设。 S1 S2 iff all the elements of S1 are in S2 x S iff x is a member of the set S 在表示法中通过象集合一样的对象,句子Some men met at three.可以解释如下: M: M x | Man(x) . Meet(M, 3PM) 即有一个男人的子集M的大小正好是3。 通常情况下,我们总是用大写字母表示集合中的变量。原则上,在任何个体成立的情况下集合也是成立的。在实际上,在某些参数位置,一些动词只需要集合或只需要个体。例如meet要求它的施事者是一个元素不少于1个个体的集合,因为单独一个的个体不可能meet。另一些的动词则是需要个体而排斥集合,还有一些同时允许集合和个体作为论据。, 考虑产生于集合论/分配论中的不同公式。对于句子Some men bought a suit有两种解释,在逻辑形式中( 忽略时态)是: ( SOME m1: (PLUR MAN1) (A s1: SUIT1 (BUY1 m1 s1 )1、 集合论将它映射成: M1: M1 z| Man(z) s : Suit(s) . Buy1(M1 , s)即在所有男人的集合中有一子集一起合买了一套衣服。2、分配论指一些男人个别去买衣服,可以表示如下: M2: M2 z| Man(z) m : m M2 s : Suit(s) . Buy1(M1 , s) 注意集合论和分配论都包含了一个核心的意义:男人的子集。唯一区别的是你把集合中的所以成员看成一个单位或是将其量化。, 基于集合的表示法也可用来确保不止一个人买一套衣服。为做到这一点我们引入一个新的函数返回集合的主要信息。对任何给定的集合S,|S|表示了S中元素的数目。使用算术运算符,我们现在可以对关于集合大小的限制进行表示。如:Three men entered the room. 的解释可以如下所示(同样我们忽略了时态信息): M : (M y| Man(y)& |M|=3) m: m M . Enter1(m , Room1) 通过将限制改变成|M| 3,你获得At least three men entered the room. 的解释,等等。 越来越多不确定的量词可以使用集合给出适当的解释。例如:假如我们定义most是真的,当一半以上的集合有给定的属性,那么,Most men laughed. 可以解释成: M: ( M y| Man(y)&|M| |y| Man(y)| 2 ) m: mM . Laughed( m), 在实际论述中,对于被量化的项的解释经常和一些以前定义的集合有关。 如:Most men laughed . 通常指在以前定义的集合中的大多数人,而不是世界上的大多数人。换句话说,这个句子不是说所有的男人的一半以上笑了,而是由给定上下文(如在一给定的房间里)的男人的一半以上笑了。这种解释类型将在14章进行更进一步讨论。 你可能已看出在表示法中通过把集合当作明确的对象,可以以一种直观令人满意的途径获得许多量化的结构。而既然这里的进步是基于对FOPC的扩展,那么在任何一个表示法中为获得同样的信息需要类似的性能。如:假设你正使用的是语义网络表示法。为处理数量关系,你必须有表示集合的结点,可以在这些结点上说明主要限制条件。可以应用分配论在这些集合上进行量化。 返 回,13.5 动词的时态和语态类 任何支持自然语言理解的知识表示的主要成分之一是对动词和时间的处理。语言的大部分含有时间,包括蕴含在句子时态和语态中的临时信息和由许多临时副词所表达的明确的临时信息。如:For five minutes, yesterday, at 3 oclock, after they had left)。 在逻辑形式语言中,临时性信息可以用几种方法来处理。1、用model 运算符表示时态(如:PAST, PRES, PROG, FUT)2、临时的连接词(如:BEFORE, DURING)3、可以带时间参数的所有谓词。为处理这些现象,我们需要对FOPC进行扩展来表示时间。 有几种不同的时间类型。1、某一时间点(A time point)是与世界中的一些转变普遍联系的瞬间的时刻,如打开电灯或某人发现一丢失的钢笔。,2、某一时间间隔是一些事件持续发生的一段时间。所有的时间间隔都有一持续的时间(如五分钟长),而点则不能有持续期。许多断言可以仅用时间间隔来定义。如:考虑句子:John drove his car to work at a certain time. 这只能在一时间间隔内才是真的,因为开车到一个目的地必须花费时间,你不能在某一时间点开车出去。必须区分时间点和间隔,因为在它们之间可以获得不同的关系。如:两个时间间隔可能重叠,但点之间则不可能重叠。另外,两个时间间隔可能相遇:一个的结束正好是另一个的开始,但此时两者在时间上不重叠或说两者之间没有时间。一个点或一个间隔可能被包括在另一个间隔中,但没有时间点或间隔可以包含在一个点中。在临时关系下允许以下的谓词:t1 t2 point/interval t1 is before point/interval t2 t1 : t2 interval t1 meets interval t2 , or point t1 defines the beginning of interval t2, or point t2 defines the end of interval t1 t1 t2 point/interval t1 is contained in interval t2,正如以前所提到的,一些断言只有在时间间隔内才是正确的,而另一些只在时间点上是真的,还有一些是在两种情况下都是成立的。谓词的分类和动词短语的不同语态一致。 句子所描述命题至少可以分成不同的三类:1、表达状态的命题(静态命题);2、定义正在进行的活动的命题(动态命题);3、描述已完成的事件的那些命题(叙述命题)。 静态命题描述了在一个瞬间或无限扩展的时间内成立的世界的一些属性,如句子:Jack is happy. I believe the world is flat.静态命题描述的是没有明确定义结束点的情形,它不能出现在某些有语言上下文的情况中。如:他们不能以进行的形式出现: *Jack is being happy. *I am believing that the world is flat., 动态命题描述了发生在一时间段上的活动。活动经常以进行时态来表达,如句子:Jack is running. The door was swinging and fro. 描述状态和动作的句子经常不允许临时修饰语,如in five minutes,但它们允许时间间隔修饰语:如 for five minutes. 叙述命题描述了已完成的事件,如: Jack fell asleep. Jack climbed the mountain. 在上述两个句子中,事件在某一时间结束(称为culmination point),你可以知道一些结论属性开始于这个终止点。例如:由第一个句子你知道Jack在事件结束时睡着了,而由第二个句子,你知道Jack在山顶了。叙述命题的句子中可以包含象in an hour的临时修饰语,如:The climbed the mountain in two days. Jack fell asleep in an hour., (叙述命题)描述可能发生的事件经常可以分成两个子类,即根据他们是只基本地描述一个转变(achievement类)或包括导致到达终止点的某些动作(accomplishment类)。以下前一个例子描写了accomplishments类,而后一个描述了achievements类: Jack recognized the man. Helen woke up. 四种命题类型可以用不同的类型的临时参数来区分。特别是,静态命题在某个点或时间间隔内都可以是真的。例如,说一个球是红色的在一个特定的时