第11章自然语言理解第11章自然语言理解11.1简单句理解11.2复合句理解11.3转换文法和转换网络第11章自然语言理解11.1.1理解的实现过程10.1.1理解的实现过程要理解一个语句,需建立起一个和该简单句相对应的机内表达。而要建立机内表达,需要做以下两方面的工作:(1)理解语句中的每一个词。(2)以这些词为基础组成一个可以表达整个语句意义的结构。第11章自然语言理解第一项工作看起来很容易,似乎只是查一下字典就可以解决。而实际上由于许多单词有不止一种含义,因而只由单词本身不能确定其在句中的确切含义,需要通过语法分析,并根据上下文关系才能最终确定,例如,单词diamond有“菱形”、“棒球场”和“钻石”三种意思,JohnsawSusan’sdiamondshimmeringfromacrosstheroom.中,由于“shimmering”的出现,则显然“diamond”是“钻石”的含义,因为“菱形”和“棒球场”都不会闪光。再如在语I’llmeetyouatthediamond.第11章自然语言理解中,由于“at”后面需要一个时间或地点名词作为它的宾语,显然这里的“diamond”是“棒球场”的含义,而不能是其他含义。第二项也是一个比较困难的工作。因为要以这些单词为基础来构成表示一个句子意义的结构,需要依赖各种信息源,其中包括所用语言的知识、语句所涉及领域的知识以及有关该语言使用者应共同遵守的习惯用法的知识。由于这个解释过程涉及到许多事情,因而常常将这项工作分成以下三个部分来进行:第11章自然语言理解(1)语法分析。将单词之间的线性次序变换成一个显示单词如何与其他单词相关联的结构。语法分析确定语句是否合乎语法,因为一个不合语法的语句就更难理解。(2)语义分析。各种意义被赋予由语法分析程序所建立的结构,即在语法结构和任务领域内对象之间进行映射变换。(3)语用分析。为确定真正含义,对表达的结构重新加以解释。第11章自然语言理解11.1.2要进行语法分析,必须首先给出该语言的文法规则,以便为语法分析提供一个准则和依据。对于自然语言人们已提出了许多种文法,例如,乔姆斯基(Chomsky)提出的上下文无关文法就是一种常用的文法。一个语言的文法一般用一组文法规则(称为产生式或重写规则)以及非终结符与终结符来定义和描述。例如,下面就是一个英语子集的上下文无关文法:第11章自然语言理解11.1.2语法分析要进行语法分析,必须首先给出该语言的文法规则,以便为语法分析提供一个准则和依据。对于自然语言人们已提出了许多种文法,例如,乔姆斯基(Chomsky)提出的上下文无关文法就是一种常用的文法。一个语言的文法一般用一组文法规则(称为产生式或重写规则)以及非终结符与终结符来定义和描述。例如,下面就是一个英语子集的上下文无关文法:第11章自然语言理解〈sentence〉∷=〈nounphrase〉〈verbphrase〈nounphrase〉∷=〈determiner〉〈noun〈verbphrase〉∷=〈verb〉〈nounphrase〉|〈verb〈determiner〉∷=the|a|an〈noun〉∷=man|student|apple|computer〈verb〉∷=eats|operats这个文法有6条文法规则,它们是用BNF范式表示的。其中带尖括号的项为非终结符,第一个非终结符称为起始符,不带尖括号的项为终结符,符号“∷=”的意思是“定义为”,符号“|”是“或者”的意思,而不带“|”的项之间是“与”关系。符号“∷=”也可以用箭头“→”表示。第11章自然语言理解有了文法规则,对于一个给定的句子,就可以进行语法分析,即根据文法规则来判断其是否合乎语法。可以看出,上面的文法规则实际是非终结符的分解、变换规则。分解、变换从起始符开始,到终结符结束。所以,全体文法规则就构成一棵如图11-1所示的与或树,我们称其为文法树。所以,对一个语句进行语法分析的过程也就是在这个与或树上搜索解树的过程。可以看出,搜索解树可以自顶向下进行,也可以自底向上进行。自顶向下搜索就是从起始符sentence出发,推导所给的句子;自底向上搜索就是从所给的句子出发,推导起始符sentence。第11章自然语言理解图11-1文法树第11章自然语言理解例11.1下面是一个基于上述文法的语法分析程序。它采用自顶向下搜索。sentence(X):append(Y,Z,X),noun_phrase(Y),verb_phrase(Z).noun_phrase(X):append(Y,Z,X),determiner(Y),noun(Z).verb_phrase(X):append(Y,Z,X),verb(Y),noun_phrase(Z).verb_phrase(X):verb(X).determiner([the]).noun([H|_]):member(H,[man,student,apple,banana,computer]).verb([H|_]):member(H,[eats,study,programming,operats]).append([],L,L).append([H|T],L,[H|L2]):append(T,L,L2).member(X,[X|_]).member(X,[_|T]):member(X,T).第11章自然语言理解这个程序是先把所给的句子以符号表的形式约束给谓词sentence的变量X,然后对其进行分解和变换。如果最终分解、变换的结果与语言的文法树相符,则证明所给的句子语法正确;否则语法错误。例如,对于句子thestudentoperatsthecomputer要用该程序进行语法分析,则应给出询问:?-sentence([the,student,operats,the,computer]).这时,系统则回答:yes分析这个句子所产生的解树如图11-2所示。这个解树称为该句子的语法分析树。第11章自然语言理解图11-2语法分析树第11章自然语言理解需指出的是,这个程序虽然易于理解,但运行效率较低。因为在用append谓词对句子进行分解时一般要进行多次回溯。为此,我们把这个程序修改为如下形式:sentence(X,Y):noun_phrase(X,Z),verb_phrase(Z,Y).noun_phrase(X,Y):determiner(X,Z),noun(Z,Y).verb_phrase(X,Y):verb(X,Z),noun_phrase(Z,Y).verb_phrase(X,Y):verb(X,Y).determiner([the|T],T).noun([H|T],T):member(H,[man,student,apple,computer]).verb([H|T],T):member(H,[eats,operats]).第11章自然语言理解这个程序的每个谓词有两个参量,它们都是符号表。对于一个给定的句子,后一个表是前一个表的余表。语法分析时,把所给的句子以符号表的形式约束给sentence的第一个变量X,第二个变量约束为空表。?-sentence([the,student,operats,the,computer],[]).则系统仍然回答:yes这个程序虽然难读,但它的运行效率较高。语法分析可判断一个句子的语法结构是否正确,但不能判断一个句子是否有意义。?-sentence([the,computer,operats,the,student],[]).系统则仍然回答:yes。对于诸如此类的问题,语义分析则可解决。第11章自然语言理解11.1.3语义分析就是要识别一个语句所表达的意思。语义分析的方法很多,如运用格文法、语义文法等。语义文法是进行语义分析的一种简单方法。所谓语义文法,就是在传统的短语结构文法的基础上,将名词短语、动词短语等不含语义信息的纯语法类别,用所讨论领域的专门类别来代替。例如,下面就是一个语义文法的例子:第11章自然语言理解S→PRESENTtheATTRIBUTEofSHIPPRESENT→whatis|canyoutellmeATTRIBUTE→length|classSHIP→theSHIPNAME|CLASSNAMEclassshipSHIPNAME→Huanghe|ChangjiangCLASSNAME→carrier|submarine这是一个舰船管理数据库系统自然语言接口的语义文法片段。第11章自然语言理解可以看出,语义文法的重写规则与上下文无关文法的形式是类似的。但这里没有出现像名词短语和动词短语等语法类别,而是用了PRESENT、ATTRIBUTE、SHIP等专门领域中的类别。对于语义文法的分析方法,可以使用与上下文无关文法相类似的方法。利用上面给出的语义文法,可以从语义上识别如下的语句:WhatistheclassoftheChangjiang?CanyoutellmethelengthoftheHuanghe?语义文法可以排除无意义的句子。当然,它只能适应于严格限制的应用领域。第11章自然语言理解11.2复合句理解简单句的理解不涉及句与句之间的关系,它的理解过程首先是赋单词以意义,然后再给整个语句赋予一种结构。而一组语句的理解,无论它是一个文章选段,还是对话节录,句子之间都有相互关系。所以,复合句的理解,就不仅要分析各个简单句,而且要找出句子之间的关系。这些关系的发现,对于理解起着十分重要的作用。句子之间的关系包括以下几种:(1)相同的事物,“小华有个计算器,小刘想用它。”单词“它”和“计算器”指的是同一物体。第11章自然语言理解(2)事物的一部分,“小林穿上她刚买的大衣,发现掉了一个扣子。”“扣子”指的是“刚买的大衣”的一部分。(3)行动的一部分,“王宏去北京出差,他乘早班飞机动身。”乘飞机应看成是出差的一部分。(4)与行动有关的事物,“李明准备骑车去上学,但他骑上车子时,发现车胎没气了。”李明的自行车应理解为是与他骑车去上学这一行动有关的事物。第11章自然语言理解(5)因果关系,“今天下雨,所以不能上早操。”下雨应理解为是不能上操的原因。(6)计划次序,“小张准备结婚,他决定再找一份工作干。”小张对工作感兴趣,应理解为是由于他要结婚,而结婚需要钱而引起的。第11章自然语言理解要能做到理解这些复杂的关系,必须具有相当广泛领域的知识才行,也就是要依赖于大型的知识库,而且知识库的组织形式对能否正确理解这些关系,起着很重要的作用。特别对于较大的知识库,应考虑如何将问题的“焦点”集中在知识库的相关部分。例如,对于下面的一段话:“接着,把虎钳固定到工作台上。螺栓就放在小塑料袋中。”显然,第二句中的螺栓就是第一句中用来固定虎钳的螺栓。所以,如果在理解第一句时,就把需用的螺栓置于“焦点”之中,则全句的理解就容易了。因此,需要表示出与“固定”有关的知识,以便当见到“固定”时,能方便地提取出来。第11章自然语言理解对于描述与行为有关的复合语句,也可采用目标结构的方法帮助理解。即对于常见的一些行为目标,事先制定出其行动规划,这样,当语句所描述的情节中的某些信息省略时,可以调用这些规划,通过推导找到问题的答案。例如对于下面的文章片段:“小王有点饿。他便向行人打听餐馆在哪里。”如果有这样的行动规划:打听地址→去餐馆→吃饭→则就不难理解第二个句子了。第11章自然语言理解11.3转换文法和转换网络11.3.1人们对自然语言句子的结构进行研究,发现同一个意思往往有许多不同的表示形式(说法)。例如语句:Maryreadmeastory.Maryreadastorytome.第11章自然语言理解说法虽然不同,但意思实际是完全一样的。再如主动句和被动句也是常用的两种不同的表示形式。于是,人们就提出了语句的深层结构和表层结构的概念。认为一个句子可以有多个不同的表层结构,但其深层结构都是相同的。鉴于这样的认识,转换文法(transformationalgrammar)便应运而生。第11章自然语言理解转换文法就是可把句