第八章 自然语言理解

  语言理解和处理是人工智能早期的和活跃的研究领域之一。由于它的难度很大,至今仍未能达到很高的水平。
  本章将首先讨论自然语言理解的概念、发展简史以及系统组成与模型等;然后,逐一研究语言的自动分析、句子的自动理解、语言的自动生成、机器翻译和语音识别等重要问题;最后举例介绍自然语言理解系统。
8.1 语言及其理解的一般问题
  什么是语言和语言理解?自然语言理解与人类的哪些智能有关?自然语言理解研究是如何发展的?理解自然语言的计算机系统是如何组成的以及它们的模型为何?等等。这些问题是我们开始研究自然语言理解时感兴趣的。
8.1.1 语言和语言理解
  语言是用于传递信息的表示方法、约定和规则的集合,它由语句组成,每个语句又由单词组成;组成语句和语言时,应遵循一定的语法与语义规则。如果没有各种口语和书面语,如英语、华语、法语和德语等,人类之间的充分和有效交流就难以想象。语言是随着人类社会和人类自身的发展而不断进化的。现代语言允许任何一个具有正常语言能力的人与他人交流思想感情和技术等。
  要研究自然语言理解,首先必须对自然语言的构成有个基本认识。
  语言是音义结合的词汇和语法体系,是实现思维活动的物质形式。语言是一个符号体系,但与其他符号体系又有所区别。
  语言是以词为基本单位的,词汇又受到语法的支配才可构成有意义的和可理解的句子,句子按一定的形式再构成篇章等。词汇又可分为词和熟语。熟语就是一些词的固定组合,如汉语中的成语。词又由词素构成,"教师"是由"教"和"师"这两个词素所构成的。词素是构成词的最小的有意义的单位。"教"这个词素本身有教育和指导的意义,"师"则包含了"人"的意义。
  语法是语言的组织规律。语法规则制约着如何把词素构成词,词构成词组和句子。语言正是在这种严密的制约关系中构成的。用词素构成词的规则叫构词规则,如教+师-→教师。一个词又有不同的词形、单数、复数、阴性、阳性等等。这种构造词形的规则称为构形法,如教师+们-→教师们。这里只是在原来的词后面加上一个复数意义的词素,所构成的并不是一个新的词,而是同一词的复数形式。构形法和构词法称为词法。   
  词法中的另一部分就是句法。句法也可分成两部分:词组构造法和造句法。词组构造法是词搭配成词组的规则,如红+铅笔-→红铅笔。这里"红"是一个修饰铅笔的形容词,它与名词"铅笔"组合成了一个新的名词。造句法则是用词或词组造句的规则,"我是计算机科学系的学生",这是按照汉语造句法构造的句子。图8.1就是上述构造的一个完整的图解。
  另一方面,语言是音义结合的,每个词


8.1 语言的构成
汇有其语音形式。一个词 的发音由一 个或多个音节组合而成,音节又由音素构成,音素分为元音音素和辅音音素。音素是指一个发音动作所构成的最小的语音单位。
  迄今为止,对语言理解尚无统一的和权威的定义。按照考虑问题的角度不同而有不同的解释。从微观上讲,语言理解是指从自然语言到机器(计算机系统)内部之间的一种映射。从宏观上看,语言理解是指机器能够执行人类所期望的某些语言功能。这些功能包括:(1)回答有关提问;(2)提取材料摘要;(3)不同词语叙述;(4)不同语言翻译。
  然而,对自然语言的理解却是一个十分艰难的任务。即使建立一个只能理解片言断语的计算机系统,也是很不容易的。这中间有大量的极为复杂的编码和解码问题。一个能够理解自然语言的计算机系统就像一个人那样需要上下文知识以及根据这些知识和信息进行推理的过程。自然语言不仅有语义、语法和语音问题,而且还存在模糊性等问题。具体地说,自然语言理解的困难是由下列3个因素引起的:(1)目标表示的复杂性;(2)映射类型的多样性;(3)源表达中各元素间交互程度的差异性。
  自然语言理解是语言学、逻辑学、生理学、心理学、计算机科学和数学等相关学科发展和结合而形成的一门交叉学科;它能够理解口头语言或书面语言。语言交流是一种基于知识的通信。
8.1.2 自然语言理解研究的进展
  计算机的出现使得自然语言理解研究成为可能,随着计算机技术和人工智能总体技术的发展,自然语言理解不断取得进展。机器翻译是自然语言理解最早的研究领域。美苏两国在1949年开始俄-英和英-俄文字的机器翻译研究。由于早期研究中理论和技术的局限,所开发的机译系统的技术水平较低,不能满足实际应用的要求。
  到了70年代初期,对语言理解对话系统的研究取得进展。伍兹(Woods)的LUNAR系统、威诺甘德(Winogand)的SHRDLU系统和香克(Schank)的MARGIE系统等是语言理解对话系统的典型实例。其中,SHRDLU系统是一个限定性的人机对话系统,它把句法、语义、推理、上下文和背景知识灵活地结合于一体,成功地实现了人-机对话,并被用于指挥机器人的积木分类和堆迭试验。机器人系统能够接受人的自然语言指令,进行积木的堆迭操作,并能回答或者提出比较简单的问题。
  进入80年代之后,自然语言理解的应用研究广泛开展,机器学习研究又十分活跃,并出现了许多具有较高水平的实用化系统。其中比较著名的有美国的METAL和LOGOS,日本的PIVOT和HICAT,法国的ARIANE以及德国的SUSY等系统;这些系统是自然语言理解研究的重要成果,表明自然语言理解在理论上和应用上取得了突破性进展。80年代以来提出和进行的智能计算机研究,也对自然语言理解提出了新的要求。近年来又提出了对多媒体计算机的研究。新型的智能计算机和多媒体计算机均要求设计出更为友好的人机界面,使自然语言、文字、图象和声音等信号都能直接输入计算机。要求计算机能以自然语言与人进行对话交流,就需要计算机具有自然语言能力,尤其是口语理解和生成能力。
  口语理解研究促进人机对话系统走向实用化。自然语言是表示知识最为直接的方法。因此,自然语言理解的研究也为专家系统的知识获取提供了新的途径。此外,自然语言理解的研究已促进计算机辅助语言教学(CALI)和计算机语言设计(CLD)等的发展。可以预料,进入21世纪之后,自然语言理解的研究有可能取得新的突破,并获得广泛应用。
8.1.3 自然语言理解过程的层次
  语言虽然表示成一连串的文字符号或者一串声音流,但其内部事实上是一个层次化的结构,从语言的构成中就可以清楚的看到这种层次性。一个文字表达的句子是由词素-→词或词形-→词组或句子,而用声音表达的句子则是由音素-→音节-→音词-→音句,其中每个层次都是受到语法规则的制约。因此,语言的分析和理解过程也应当是一个层次化的过程。许多现代语言学家把这一过程分为5个层次:语音分析、词法分析、句法分析和语义分析和语用分析。虽然这种层次之间并非是完全隔离的,但是这种层次化的划分的确有助于更好地体现语言本身的构成。
  语音分析 在有声语言中,最小可独立的声音单元是音素,音素是一个或一组音,它可与其他音素相区别。语音分析则是根据音位规则,从语音流中区分出一个个独立的音素,再根据音位形态规则找出一个个音节及其对应的词素或词。
  词法分析 其主要目的是找出词汇的各个词素,从中获得语言学信息。

  句法分析 是对句子和短语的结构进行分析。自动句法分析的方法很多,有短语结构语法、格语法、扩充转移网络、功能语法等等。句法分析的最大单位就是一个句子。分析的目的就是找出词、短语等的相互关系以及各自在句子中的作用等,并以一种层次结构来加以表达。这种层次结构可为反映从属关系,直接成分关系,也可是语法功能关系。
  语义分析 就是通过分析找出词义、结构意义及其结合意义,从而确定语言所表达的真正含义或概念。在语言自动理解中,语义愈来愈成为一个重要的研究内容。
  语用分析 就是研究语言所在的外界环境对语言使用所产生的影响。它描述语言的环境知识、语言与语言使用者在某个给定语言环境中的关系。

8.2 句法和语法的自动分析
  我们知道了语言分析和理解可分为5个层次,本节将讨论其中的句法和语法的自动分析问题。
8.2.1 句法模式匹配和转移网络
  句法模视匹配就是采用句法模式来对语言的句子进行匹配从而进行的句法分析。但是自然语言是非常多样化的,因而需要有许多模式。这些模式可用状态转移图来表示,这种用状态转移图来表示的表达方式称之为转移网络(TN,transition network)。如图8.2所示,图中,q0,q1,…,qT是状态,q0是初态,qT是终态。弧上给出了状态转移的条件以及转移的方向。该网络可用于分析句子也可用于生成句子。用TN来识别句子The little orange ducks swallow flies 的过程如表8.1。


     图 8.2 转移网络(TN)
 
词典
ducks
noun,verb
flies
noun,verb
little
adj.
orange
adj.,noun
swallow
noun,verb
the
det
这里忽略了词法分析,网络如图8.3所示
图 8.3 转移网络实例

  识别过程到达f状态(终态),所以该句子被成功地识别了。分析结果如图8.4所示。从上述过程中可以看出,这个句子还可以在网络中走其他弧,如词ducks也可以走弧,但接下来的swallow就找不到合适的弧了。此时对应于这个路径,该句子就被拒识了。由此看出,网络识别的过程中应找出各种可能的路径,因此算法要采用并行或回溯机制。
     图 8.4 TN分析树

表 8.1 句子识别过程
  1.并行算法
  并行算法的关键是在任何一个状态都要选择所有可以到达下一个状态的弧,同时进行试验。
  2.回溯算法
  回溯算法则是在所有可以通过的弧中选出一条往下走,并保留其他的可能性,以便必要时可回过来选择之。这种方式需要一个堆栈结构。
8.2.2 扩充转移网络
  扩充转移网络ATN是由伍兹(Woods)在1970年提出的,1975年卡普兰( Kaplan)对其作了一些改进。ATN是由一组网络所构成的,每个网络都有一个网络名,每条弧上的条件扩展为条件加上操作。这种条件和操作采用寄存器的方法来实现,在分析树的各个成分结构上都放上寄存器,用来存放句法功能和句法特征,条件和操作将对它们不断地进行访问和设置。ATN弧上的标记也可以是其他网络的标记名,因此ATN是一种递归网络。在ATN中还有一种空弧jump,它不对应一个句法成分也不对应一个输入词汇。
  ATN的每个寄存器由两部分构成:句法特征寄存器和句法功能寄存器。在特征寄存器中,每一维特征都有一个特征名和一组特征值,以及一个缺省值来表示。如"数"的特征维可有两个特征值"单数"和"复数",缺省值可以是空值。英语中动词的形式可以用一维特征来表示:
Form:present,past,present-participle,past-participle.Default:present.
功能寄存器则反映了句法成分之间的关系和功能。
   分析树的每个节点都有一个寄存器,寄存器的上半部分是特征寄存器,下半部分是功能寄存器。图8.5所示是一个简单的名词短语(NP)的扩充转移网络,网络中弧上的条件和操作如下:
  图 8.5 名词短语(NP)的扩充转移网络
NP-1:fg
    A:Number*Number
NP-4:gNounh
    C:Number=* Number or φ
    A:Number* Number
NP-5:fpronounh
    A:Number*Number
NP-6:fproperh
    C:Number=* Number or φ
  该网络主要是用来检查NP中的数的一致值问题。其中用到的特征是Number(数),它有两个值Singular(单数)和plural(复数),缺省值是φ(空)。C是弧上的条件,A是弧上的操作,*是当前词,proper是专用名词,Det是限定词,PP是介词短语,*Number当前词的"数"。该扩充转移网络有一个网络名NP。网络NP可以是其他网络的一个子网络,也可包含其他网络,如其中的PP就是一个子网络,就这是网络的递归性。弧NP-1将当前词的Number放入当前NP的Number中,而弧NP-4则要求当前noun的Number与NP的Number是相同时,或者NP的Number为空时,将noun作为NP的Number,这就要求det的数和noun的数是一致的。因此,this book,the book,thebooks,these books都可顺利通过这一网络,但是this books,或these book就无法通过。如果当前NP是一个代词(Pron.)或者专用名词(Proper),那么网络就从NP-5或NP-6通过,这时NP的数就是代词或专用名词的数。PP是一个修饰前面名词的介词短语,一旦到达PP弧就马上转入子网络PP。
图 8.6 句子的扩充转移网络
  图8.6是一个句子的ATN,主要用来识别主、被动态的句子,从中可以看到功能寄存器的应用。S网络中所涉及的功能名和特征维包括:
功能名:
Subject(主语),Direct Obj(直接宾语), Main-Verb(谓语动词) Auxs(助动词), Modifiers(修饰语)。
特征维:
Voice(语态):Active(主动态),Passive(被动态),缺省值是Actire Type(动词类型): Type(动词类型):Be,Do,Have,Modal,Non-Aux,缺省值是Non-Aux。 Form(动词式):Inf(不定式),Present(现在式),Past(过去式),pres-part(现在分词),Past-Part(过去分词),缺省值是Present。
   当然作为一完整的ATN是相当复杂的,在实现过程中还必须解决许多问题,如非确定性分析、弧的顺序、非直接支配关系的处理等等。ATN方法在自然语言理解的研究中得到了广泛的应用。
8.2.3 词汇功能语法(LFG)
  词汇功能语法是由卡普兰和布鲁斯南(Bresnan)在1982年提出的,它是一种功能语法,但是更加强调词汇的作用。LFG用一种结构来表达特征、功能、词汇和成分的顺序。ATN语法和转换语法都是有方向性的,ATN语法的条件和操作要求语法的使用是有方向的,因为寄存器只有在被设置过之后才可被访问。LFG的一个重要工作就是通过互不矛盾的多层描述来消除这种有序性限制。
  LFG对句子的描述分为两部分:直接成分结构(Constituent Structure,简称C-Structure)和功能结构(Functional Structure,简称F-structure),C-structure是由上下文无关语法产生的表层分析结果。在此基础上经一系列代数变换产生F-structure。LFG采用两种规则:加入下标的上下文无关语法规则和词汇规则。表8.2给出了一些词汇功能语法的规则和词条,其中↑表示当前成分的上一层次的直接成分,如规则中NP的↑就是S,VP的↑也是S;↓则表示当前成分。因此,(↑Subject)=↓就表示S的主语是当前NP。"<>"中表达的是句法模式,'Hand=<(↑Subject),(↑Object),(↑Object-2)>,表示谓语动词hand要有一个主语、一个直接宾语和一个间接宾语。
表 8.2 LFG语法与词典

  用LFG语法对句子进行分析的过程如下:
   (1)用上下文无关语法分析获得C-structure,不考虑语法中的下标;该C-structure就是一棵直接成分树;
   (2)将各个非叶节点定义为变量,根据词汇规则和语法规则中的下标,建立功能描述(一组方程式);
   (3)对方程式作代数变换,求出各个变量,获得功能结构F-structure。
  上述过程如果能够得到一组以上解,则句子就是可识别的,并获得一个以上分析结果。分析获得多个解则说明原句子中存在着歧义现象,无解则说明无法识别。图8.7就是句子A girl handed her baby the toys的分析过程。方程的建立只要将↑用父节点变量来替代,↓用当前节点来代替即可。规则S→NP VP的下标有两组:一是(↑Subject)=↓,替换得到(x1∨Subject)=x2;另一是↑=↓即x1=x3。方程式(x1∨Subject)=x2的意义就是"x1的主语是x2",因此,上面两个方程式直接可用方程变换得到x1=x3=[Subject=x2]。在词汇规则中,词a对应了两条规则(↑Definiteness)=Indefinite,(↑Number)=Singular,词a的父节点就是NP,即x2,所以得到方程式(x2Definiteness)=Indefinite,(x2Number)= Singular。上述方程式通过解的合并和替代最终就可以获得中的F-structure。
  LFG同样也可以用于句子的生成。分析和生成的区别仅在于第一步,分析是由句子到C-structure,而生成则是由上下文无关语法直接产生C-structure和句子。同样如果通过求解最终可有一个以上的解,则该句子就是正确的。
8.2.4 语义的解析
  建立句法结构只是语言理解模型中的一个步骤,进一步则要求获得语言所表达的意义。第一步是要确定每个词在句子中所表达的词义,这涉及到词义和句法结构上的歧义问题,如英语词go可有50种以上的意义。但即使一个词的词义很多,在一定的上下文条件下,在词组中,其意义通常是唯一的。这是由于受到了约束的原因。这种约束关系可以用一个逻辑形式来表示,通过这种逻辑形式来获得词义和句子的意义。第二步则更为复杂,那就是要根据已有的背景知识来确定语义,这就需要进一步的推理从而得出正确的结果。如已知"张经理开车去了商店",要回答"张经理是否坐进汽车?"这样的问题,就首先要从"开车"这个词义中得出"开车"与"坐进汽车"这两个概念之间的关系,只有这样才能正确地回答这个问题。
  逻辑形式表达是一种框架式的结构,它表达一个特定形式的事例及其一系列附加的事实,如"Jack kissed Jill",可以用如下逻辑形式来表达:
(PAST S1 KISS-ACTION[AGENT(NAME j1 PERSON"Jack")][THEM ENAME(NAME j2 PERSON"Jill")])
它表达了一个过去的事例S1。PAST是一个操作符,表示结构的类型是过去的,S1是事例的名,KISS-ACTION是事例的形式,AGENT和THEME是对象的描述,有施事和主位。
  逻辑形式表达对应的句法结构可以是不同的,但表达意义应当是不变的。the arrival of George at the station 和George arrived at the station在句法上一个是名词短语,而另一个是句子,但它们的逻辑形式是相同的。
(DEF/SING a1 ARRIVE EVENT(AGENT a1 (NAME g1 PERSON"George"))(TO-LOC a1(DEF S4 STATION)))
(PAST a2 ARRIVE-EVENT[AGENT a1(NAME g1 PERSON "George")][TO-LOC a1 (NAME S4 STATION)])
在句法结构和逻辑形式的定义基础上,就可以运用语义解析规则,从而使最终的逻辑形式能有效地约束歧义。解析规则也是一种模式的映射变换。
(S
SUBJ
+animate
MAIN-V
+action-verb) 这一模式可以匹配任何一个有一个动作和一个有生命的主语体的句子。映射规则的形式为:
(S SUBJ+animate MAIN-V+action-verb)→(?*T(MAIN-V))[AGENT V (SUBJ)]
其中?表示尚无事件的时态信息,*代表一个新的事例。如果有一个句法结构:
(S
MAIN-V
ran
SUBJ(NP
TDE the HEAD man)
TENSE
past) 运用上述映射(这里假设NP的映射是用其他规则)得到:
                       (? r1 RUN1 [AGENT (DEF/SING m1 MAN)])
时态信息可采用另一个映射规则:
                               (S TENSE past)→(PAST ? ?)
合并上述的映射就可最终获得逻辑形式表示:
   (PAST r1 RUN1 [AGENT(DEF/SING m1 MAN)])
这里只是一个简单的例子。在规则的应用中,还需要有很多的解析策略。
8.3 语言理解
  句子一般有简单句和复合句之分。简单句的理解比复合句要容易,又是理解复合句的基础。因此,我们首先讨论简单句的理解,然后讨论复合句的理解。
8.3.1. 简单句的理解方法
  由于简单句是可以独立存在的,因而为了理解一个简单句,即建立起一个和该简单句相对应的机内表达,需要做以下两方面的工作:
            (1) 理解语句中的每一个词。
            (2) 以这些词为基础组成一个可以表达整个语句意义的结构。
  第一项工作看起来很容易,似乎只是查一下字典就可以解决。而实际上由于许多单词有不止一种含义,因而只由单词本身往往不能确定其在句中的确切含义,需要通过语法分析和上下关系等才能最终确定。例如,单词diamond有"菱形"、"棒球场"和"钻石"三种意思,在语句"John saw Susan′s diamond shimmering from across the room.
" 中,由于"shimmering"的出现,则显然"diamond"是"钻石"的含义,因为"菱形"和"棒球场"都不会闪光。再如在语句"I′ll meet you at the diamond." 中,由于"at"后面需要一个时间或地点名词作为它的宾语,因而显然这里的"diamond"是"棒球场"的含义,而不能是其它含义。
  第二项也是一个比较困维的工作。因为要联合单词来构成表示一个句子意义的结构,需要依赖各种信息源,其中包括所用语言的知识、语句所涉及领域的知识以及有关该语言使用者应共同遵守的习惯用法的知识。由于这个解释过程涉及到许多事情,因而常常将这项工作分成以下3个部分来进行:
  句法分析 将单词之间的线性次序变换成一个显示单词如何与其它单词相关联的结构。
  语义分析 各种意义被赋于由句法分析程序所建立的结构,即在句法结构和任务领域内对象之间进行映射变换。
  语用分析 为确定真正含义,对表达的结构重新加以解释。

  实际上这3个阶段之间是相互关联的,总是以各种方法相互影响着。尽管在某种程度上把它们分开是有效的,但绝对分开是不可能的。
  1.关键字匹配法
  最简单的自然语言理解方法,也许要算是关键字匹配法了,它在一些特定场合下是有效的。其方法简单归纳起来是这样的:在程序中规定匹配和动作两种类型的样本。然后建立一种由匹配样本到动作样本的映射。当输入语句与匹配样本相匹配时,就去执行相应样本所规定的动作,这样从外表看来似乎机器真正实现了能理解用户问话的目的。例如在一个列车运行数据库系统中,规定了以下几个匹配样本:

    (a) 从<处所>到<处所>有<车种>吗?
    (b) 从<处所>到<处所>有<车种>?
    (c) 从<处所>到<处所>有<车种>?
    (d) <车次>在<处所>停吗?
    (e) <车次>经过<处所>吗?
    (f) <车次>有<车组>吗?
    (g) 到<处所>的<车种>都有<车组>吗?
    (h) <车次>没有<车组>?
    (i) <车次>有<车组>?
    (j) <车次>从<处所>开出?
    (k) <车次>到达<处所>?
    (l) 从<处所>到<处所><车次>最快?

  其中,<…>可与任何具有规定特性的单词匹配,如<处所>可以和"北京"、"上海"等表示地点的单词匹配;<车种>可以和"特快"、"直快"等匹配;可与"几趟"等匹配;可与"哪几趟"等匹配;<车组>可与"餐车"、"卧铺"等匹配,可与"为什么"、"怎么"等匹配;可与"什么时候"、"几点"等匹配。
如果你输入
            从北京到上海有特快吗?
该语句刚好与第一个匹配样本相匹配,从而系统也就"理解"了你的问话,并去检索数据库,查看从北京到上海是否有特快,然后给出回答。
  这种关键字匹配的方法,在类似的数据库咨询系统中作为自然语言接口,显得特别有效,虽然它不具有任何意义下的理解。
2.句法分析树法
  关键字匹配法虽然简单,但却忽略了语句中的大量信息,为确保语句含义的细节不被忽略,必须确定其语句结构上的细节,这就是要进行文法分析。为此,必须首先给出说明该特定语言中符号串结构的文法,以便为每个符合文法规则的语句产生一个称为文法分析树的结构。
  关于文法的形式,在许多自然语言处理程序中提出过很多各不相同的定义,作为一个例子,下面我们给出一种文法的形式化定义。
  文法G在其形式上为如下的四元组:
G=(V,Σ,P,S)
其中,V为有穷非空集,称作总词汇表;Σ为V的一个非空子集,称作终结字母表,而N=V-Σ称作非终结字母表;P为如下形式的有穷产生式集:
α→β
式中,α∈V*NV*,β∈V*,*表示它前面的字符可以重复出现任意次;S为非终结字母表的一个元素,称为起始符。下面给出的是一个英语子集的简单文法:
图 8.8 文法分析树示例
   SNP VP
   NPthe NP1
   NPNP1
   ADJS∈|ADJ ADJS
   VPV
   VPV NP
   NJoe|boy|ball
   ADJlittle|dig
   Vhit|ran
   其中,大写的是非终结符,
   而小写的是终结符,
   ∈表示空字符串。

 
  图8.8是使用该文法对语句“Joe hit the ball.”进行句法分析而 建立的文法分析树。
  使用给定文法,对输入语句进行分析找到一个文法分析树的过程,可以看成是一个搜索过程。为实现该过程,可以使用自顶向下的处理方法,这和正向推理有些相象,它首先从起始符开始,然后应用P中的规则,一层一层地向下产生树的各个分支,直到一个完整的句子结构被生成出来为止。如果该结构与输入语句相匹配,则成功结束;否则,便从顶层重新开始,生成其它的句子结构,直到结束为止。也可以使用自底向上的处理方法,这和逆向推理有些相象,它以输入语句的词为基础,首先从P中查找规则,试图把这些词归并成较大的结构成分,如短语或子句等,然后再对这些成分进行进一步的组合,反向生成文法分析树,直到树的根节点是起始符为止。
   不管使用哪种处理方法,都要遇到象词性选择这类的问题,比如can这个词,既可以是助动词,又可以是名词,对于这样的从多重选择中作出判断的问题,可以使用与搜索过程相似的控制策略,比如使用回溯策略,可首先假定can是一个助动词,当在以后的分析出现矛盾时,再进行回溯,重新选择can的词性为名词。
   3. 语义分析
   只是根据词性信息来分析一个语句文法结构,是不能保证其正确性的,这是因为有些句子的文法结构,需要借助于词义信息来确定,也就是要进行语义分析。进行语义分析的一种简单方法是使用语义文法。所谓语义文法,是在传统的短语结构文法的基础上,将N(名词)、V(动词)等语法类别的概念,用所讨论领域的专门类别来代替。下面给出的是为舰船管理数据库系统提供自然语言接口的示例系统中的语义文法片断:
    S→what is SHIP-PROPERTY of SHIP?
    SHIP-PROPERTY→the SHIP-PROP|SHIP-PROP
    SHIP-PROP-speed|length|draft|beam|type
    SHIP→SHIP-NAME|the fastest SHIP2|the biggest SHIP2 |SHIP2
    SHIP-NAME→Huanghe|changjiang|Jinshajiang|…
    SHIP2→COUNTRYS SHIP3|SHIP3
    SHIP3→SHIPTYPE LOC|SHIPTYPE
    SHIPTYPE→carrier|submarine|rowboat
    COUNTRYS→American|French|British|Russian|…
    LOC→in the pacific|in the Mediterranean|…
  从上例可以看出,该文法使用的语义类别为SHIP和LOC,而不包括文法的非终结类别,如NP和VP等。
  对于语义文法的分析方法,可以使用和分析纯的文法结构相类似的方法。
  以上介绍的只是处理简单句理解问题的一些较简单的方法,使用这些方法,能够解决一些实际问题,但也存有很多的不足,如关键字匹配法要遗失语句中的很多信息,语义文法由于要用语义类别来代替文法类别,从而失去了许多文法上的高度概括,从而使得规则数量庞大,导致文法分析过程变得昂贵起来。
8.3.2 复合句的理解方法
   正像上述介绍的,简单句的理解不涉及句与句之间的关系,它的理解过程是首先赋单词以意义,然后再给整个语句赋以一种结构。而一组语句的理解,无论它是一个文章选段还是一段对话节录,均要求发现句子之间的相互关系。在特定的文章中,这些关系的发现,对于理解起着十分重要的作用。
这种关系包括以下几种:
   (a) 相同的事物,例如
     "珊珊有只红气球。莎莎想要它。"单词"它"和"红气球"指的是同一物体。
   (b) 事物的一部分,例如
     "小琴翻开她刚买的书。扉页已被撕坏了。"
     "扉页"指的是"刚买的书"的一部分。
   (c) 行动的一部分,例如
     "王刚出差去上海。他乘早班飞机动身"。
     乘飞机应看成是出差的一部分。
   (d) 与行动有关的事物,例如
     "李明决定骑车去商店。他走到车棚,可是发现他的自行车没气了。"
     李明的自行车应理解为是与他骑车去商店这一行动有关的事物。
   (e) 因果关系,例如
     "昨天有一场暴风雪。所以学校今天停课"。
     下雪应理解为是停课的原因。
   (f) 计划次序,例如
     "小丽想买辆新车。她决定找一份工作干。"
     小丽突然对工作感兴趣,应理解为是由她想买一辆新车,买新车需要钱而引起的。
   要能做到理解这些复杂的关系,必须具有相当广泛领域的知识才行,也就是要依赖于大型的知识库,而且知识库的组织形式对能否正确理解这些关系,起着很重要的作用。
如果知识库的容量较大。则有一点是比较重要的。即如何将问题的焦点集中于知识库的相关部分。第二章介绍的一些知识表示方法,如语义网络和剧本等将有助于这项工作的进行。
例如,我们来看一下如下的文章片段:
         "接着,把水泵固定到工作台上。螺栓就放在小塑料袋中。"
   第二句中的螺栓,应该理解为是用来固定水泵的螺栓。因此,如果在理解第全句时,就把需用的螺栓置于"焦点"之中,则全句的理解就不成什么问题了。为此,我们需要表示出和"固定"有关的知识,以便当见到"固定"时,能方便地提取出来。图8.9给出的是一个和固定水泵有关的分区语义网络。所谓分区语义网络,就是将语义网络中的有关弧和节点集中起来,组成一个分区。图8.9所示的分区语义网络具有4个分区:S0分区含有一些一般的概念,如美元、兑换和螺栓等;S1分区含有与购买螺栓有关的特殊实体;S2分区含有与把水泵固定在工作台上这一操作有关的特殊实体;S3分区含有与同一固定操作有关的特殊实体等。运用分区语义网络,利用其分区在某些层次上的关联,可以较好地处理集中焦点的问题。当某一分区为焦点时,则某高层分区内的元素即变为可观察的了。对于上例,当第二句被理解时,因其讲的?quot;将水泵固定在工作台上"这一事件,因而图8.9分区语义网络示例焦点处于S2分区。由于S0分区的层次高于S2分区,所以S0分区是可以观察的。当理解第二句时,显然"螺栓"不能与S2分区的任何元素匹配,因而焦点区由S2变成更低一级的S3分区,并且使得"螺栓"与B1匹配,匹配的结果使得第二句中的"螺栓"必定是第一句中用来进行固定的螺栓,从而使得前后两个句子成为一个前后连贯的文章片断。

图 8.9 分区语义网络示例

   当输入的文章片断描述的是有关人或物的行为等情节时,可以使用目标结构的方法来帮助理解。例如
            "王强很想喝汽水。他向行人打听最近的冷饮店在哪里。"
   对于这样的情节,弄清楚人物的目标及其如何达到目标是理解的重点所在。在上例中,目标是得到汽水喝,为此,王强必须去冷饮店,而要去冷饮店则必须知道冷饮店的位置,为达到这一新的子目标,王强应该去询问别人。从而得出达到目标的行为规则:
     询问某人 得知冷饮店 去冷饮店 买汽水 喝汽水
   为了便于理解,对于这些常常出现的各种目标,可以编写好相应的规划,一旦需要时就去调用它们,这样,当情节中某些信息省略时,也可以通过这些规划推导出来。
8.4 机器翻译
  电子计算机出现之后不久,人们就想使用它来进行机器翻译。只有在理解的基础上才能进行正确的翻译,否则,将遇到一些难以解决的困难。
如果不能较好地克服这些困难,就不能实现真正的翻译。
  机器翻译,就是让机器模拟人的翻译过程。人在进行翻译之前,必须掌握两种语言的词汇和语法。机器也是这样,它在进行翻译之前,在它的存储器中已存储了语言学工作者编好的并由数学工作者加工过的机器词典和机器语法。人进行翻译时所经历的过程,机器也同样遵照执行:先查词典得到词的意义和一些基本的语法特征(如词类等),如果查到的词不止一个意义,那么就要根据上下文选取所需要的意义。在弄清词汇意义和基本语法特征之后,就要进一步明确各个词之间的关系。此后,根据译语的要求组成译文(包括改变词序、翻译原文词的一些形态特征及修辞)。

  机器翻译的过程一般包括4个阶段:原文输入、原文分析(查词典和语法分析)、译文综合(调整词序、修辞和从译文词典中取词)和译文输出。下面以英汉机器翻译为例,简要地说明一下机器翻译的整个过程。

  1.原文输入
  由于计算机只能接受二进制数字,所以字母和符号必须按照一定的编码法转换成二进制数字。例如 What are computers这3个词就要变为下面这样3大串二进制代码:
What
110110
100111
100000
110011
are
100000
110001
110100
computers
100010
101110
101100
101111 110100
110011
100100
110001
110010
  2.原文分析
  原文分析包括两个阶段:查词典和语法分析。
  (a) 查词典
  通过查词典,给出词或词组的译文代码和语法信息,为以后的语法分析及译文的输出提供条件。机器翻译中的词典按其任务不同而分成以下几种: 

  ① 综合词典:它是机器所能翻译的文献的词汇大全,一般包括原文词及其语法特征(如词类)、语义特征和译文代码,以及对其中某些词进一步加工的指示信息(如同形词特征、多义词特征等)。
  ② 成语词典:为了提高翻译速度和质量,可以把成语词典放到综合词典前面。
  ③ 同形词典:专门用来区分英语中有语法同形现象的词。
   (分离)结构词典:某些词在语言中与其他词可构成一种可嵌套的固定格式,我们给这类词定为分离结构词。根据这种固定搭配关系,可以简便而又切实地给出一些词的词义和语法特征(尤其是介词),从而减轻了语法分析部分的负担。例如:effect of…on
  ⑤ 多义词典:语言中一词多义现象很普遍,为了解决多义词问题,我们必须把源语的各个词划分为一定的类属组。
  通过查词典,原文句中的词在语法类别上便可成为单功能的词,在词义上成为单义词(某些介词和连词除外)。这样就给下一步语法分析创造了有利条件。
  (b) 语法分析
  在词典加工之后,输入句就进入语法分析阶段。语法分析的任务是:进一步明确某些词的形态特征;切分句子;找出词与词之间句法上的联系,同时得出英汉语的中介成分。一句话,为下一步译文综合做好充分准备。
  根据英汉语对比研究发现,翻译英语句子除了翻译各个词的意义之外,主要是调整词序和翻译一些形态成分。为了调整词序,首先必须弄清需要调整什么,即找出调整的对象。根据分析,英语句子一般可以分为这样一些词组:动词词组,名词词组,介词词组,形容词词组,分词词组,不定式词组,副词词组。正是这些词组承担着各种句法功能:谓语,主语,宾语,定语,状语……,其中除谓语外,都可以作为调整的对象。
  如何把这些词组正确地分析出来,是语法分析部分的一个主要任务。上述几种词组中需要专门处理的,实际上只是动词词组和名词词组。不定式词组和分词词组可以说是动词词组的一部分,可以与动词同时加工:动词前有to,且又不属于动词词组,一般为不定式词组;-ed词如不属于动词词组,又不是用作形容词,便是分词词组;-ing词比较复杂,如不属于动词词组,还可能是某种动名词,如既不属动词词组,又不为动名词,则是分词词组。形容词词组确定起来很方便,因为可以构成形容词词组的形容词在词典中已得到"后置形容词"特征。只要这类形容词出现在"名词+后置形容词+介词+名词"这样的结构中,形容词词组便可确定。介词词组更为简单,只要同其后的名词词组连结起来也就构成了。比较麻烦的是名词词组的构成,因为要解决由连词and和逗号引起的一系列问题。
  3.译文综合  

  译文综合比较简单,事实上它的一部分工作(如该调整哪些成份和调整到什么地方)在上一阶段已经完成。这一阶段的任务主要是把应该移位的成分调动一下。
  如何调动,即采取什么加工方法,是一个不平常的问题。根据层次结构原则,下述方法被认为是一种合理的加工方法:首先加工间接成分,从后向前依次取词加工,也就是从句子的最外层向内层加工;其次是加工直接成分,依成分取词加工;如果是复句,还要分别情况进行加工:对一般复句,在调整各分句内部各种成分之后,各分句都作为一个相对独立的语段处理,采用从句末(即从句点)向前依次选取语段的方法加工;对包孕式复句,采用先加工插入句,再加工主句的方法。因为如不提前加工插入句,主句中跟它有联系的那个成分一旦移位,它就失去了自己的联系词,整个关系就要混乱。
  译文综合的第二个任务是修辞加工,即根据修辞的要求增补或删掉一些词,譬如可以根据英语不定冠词、数词与某类名词搭配增补汉语量词"个"、"种"、"本"、"条"、"根"等;再如若有even(甚至)这样的词出现,谓语前可加上"也"字;又如若主语中有every(每个)、each(每个)、all(所有)、everybody(每个人)等词,谓语前可加上"都"字等等。
  译文综合的第三个任务是查汉文词典,根据译文代码(实际是汉文词典中汉文词的顺序号)找出汉字的代码。
  
4.译文输出
  通过汉字输出装置将汉字代码转换成文字,打印出译文来。
  目前世界上已有十多个面向应用的机器翻译规则系统。其中一些是机助翻译系统,有的甚至只是让机器帮助查词典,但是据说也能把翻译效率提高50%。这些系统都还存在一些问题,有的系统,人在其中参与太多,有所谓"译前加工"、"译后加工"、"译间加工",离真正的实际应用还有一段距离。


3.译文综合
  译文综合比较简单,事实上它的一部分工作(如该调整哪些成份和调整到什么地方)在上一阶段已经完成。这一阶段的任务主要是把应该移位的成分调动一下。
  如何调动,即采取什么加工方法,是一个不平常的问题。根据层次结构原则,下述方法被认为是一种合理的加工方法:首先加工间接成分,从后向前依次取词加工,也就是从句子的最外层向内层加工;其次是加工直接成分,依成分取词加工;如果是复句,还要分别情况进行加工:对一般复句,在调整各分句内部各种成分之后,各分句都作为一个相对独立的语段处理,采用从句末(即从句点)向前依次选取语段的方法加工;对包孕式复句,采用先加工插入句,再加工主句的方法。因为如不提前加工插入句,主句中跟它有联系的那个成分一旦移位,它就失去了自己的联系词,整个关系就要混乱。
  译文综合的第二个任务是修辞加工,即根据修辞的要求增补或删掉一些词,譬如可以根据英语不定冠词、数词与某类名词搭配增补汉语量词"?quot;、"种"、"本"、"条"、"根"等;再如若有even(甚至)这样的词出现,谓语前可加上"也"字;又如若主语中有every(每个)、each(每个)、all(所有)、everybody(每个人)等词,谓语前可加上"都"字等等。
译文综合的第三个任务是查汉文词典,根据译文代码(实际是汉文词典中汉文词的顺序号)找出汉字的代码。
   4.译文输出
  通过汉字输出装置将汉字代码转换成文字,打印出译文来。
  目前世界上已有十多个面向应用的机器翻译规则系统。其中一些是机助翻译系统,有的甚至只是让机器帮助查词典,但是据说也能把翻译效率提高50%。这些系统都还存在一些问题,有的系统,人在其中参与太多,有所谓"译前加工"、"译后加工"、"译间加工",离真正的实际应用还有一段距离。

8.5 语音识别
  语音识别以语音为研究对象,它是语音信号处理的一个重要研究方向,是模式识别的一个分支,涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),其最终目标是实现人与机器进行自然语言通信。
8.5.1 语音识别的发展历史
  语音识别的研究工作大约开始于50年代,Bell实验室的David等人研制成功了第一个可识别十个英文数字的语音识别系统---Audry系统。这是语音识别研究工作的真正开端。
  60年代,计算机的应用推动了语音识别的发展。这时期的重要成果是提出了动态规划(DP)和线性预测分析技术(LP),对整个语音识别、语音合成、语音分析、语音编码的研究发展产生了深远影响。
  70年代,语音识别领域取得了突破。在理论上,LP技术得到进一步发展,动态时间归正技术(DTW)基本成熟,特别是提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论。在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。
  80年代,语音识别研究进一步走向深入,其显著特征是HMM模型和人工神经元网络(ANN)在语音识别中的成功应用。1988年美国卡内基-梅隆大学运用VQ和HMM技术研制出了非特定人、大词汇量、连续语音识别系统-SPHINX系统,它可以理解由1000个单词构成的4200个句子,被认为是语音识别历史的一个里程碑。
  进入90年代,随着多媒体时代的来临,迫切要求语音识别系统从实验室走向实用。许多发达国家如美国、日本、韩国以及IBM、Apple、AT&T、NTT等著名公司都为语音识别系统的实用化开发研究投以巨资。我国从70年代后开展研究,从引进国外理论技术入手,移植到汉语和结合汉语特点进行研究,取得了不少成果并逐步形成了"汉语语音识别"学科。

8.5.2 语音识别的基本原理
  语音识别系统的分类方式及依据如下:
· 
根据对说话人说话方式的要求,可以分为孤立字语音识别系统,连接字语音识别系统以及连续语音识别系统。
· 
根据对说话人的依赖程度可以分为特定人和非特定人语音识别系统。
· 
根据词汇量大小,可以分为小词汇量、中等词汇量、大词汇量以及无限词汇量语音识别系统。 不同的语音识别系统,虽然具体实现细节有所不同,但所采用的基本技术相似,一个典型语音识别系统的实现过程如图8.10所示。

图 8.10 语音识别系统基本原理框图
· 
预处理:包括语音信号采样、反混叠带通滤波、去除个体发音差异和设备、环境引起的噪声影响等,并涉及到语音识别基元的选取和端点检测问题。
· 
特征提取:用于提取语音中反映本质特征的声学参数,如平均能量、平均跨零率、共振峰等。
· 
训练:在识别之前通过让讲话者多次重复语音,从原始语音样本中去除冗余信息,保留关键数据,再按照一定规则对数据加以聚类,形成模式库。
· 
模式匹配:是整个语音识别系统的核心,它是根据一定规则(如某种距离测度)以及专家知识(如构词规则、语法规则、语义规则等),计算输入特征与库存模式之间的相似度(如匹配距离、似然概率),判断出输入语音的语意信息。
8.5.3 语音识别中的难点
  目前,语音识别的研究工作进展缓慢,主要表现在理论上一直没有突破。虽然各种新的修正方法不断涌现,但还缺乏普遍适用性。主要表现在:
  · 语音识别系统的适应性差,主要体现在对环境依赖性强,即在某种环境下采集到的语音训练系统只能在这种环境下应用,否则系统性能将急剧下降;另外一个问题是对用户的错误输入不能正确响应,使用不方便。
  · 高噪声环境下语音识别进展困难,因为此时人的发音变化很大,像声音变高,语速变慢,音调及共振峰变化等等,这就是所谓Lombard效应,必须寻找新的信号分析处理方法。
  · 语言学、生理学、心理学方面的研究成果已有不少,但如何把这些知识量化、建模并用于语音识别,还需研究。而语言模型、语法及词法模型在中、大词汇量连续语音识别中是非常重要的。
  · 我们对人类的听觉理解、知识积累和学习机制以及大脑神经系统的控制机理等方面的认识还很不清楚;其次,把这方面的现有成果用于语音识别,还有一个艰难的过程。
  · 语音识别系统从实验室演示系统到商品的转化过程中还有许多具体问题需要解决,如识别速度、拒识问题以及关键词(句)检测技术(即从连续语音中去除诸如"啊"、"唉"等语音,获得真正待识别的语音部分)等等技术细节要解决。

  为了解决这些问题,研究人员提出了各种各样的方法,如自适应训练,基于最大互信息准则(MMI)和最小区别信息准则(MDI)的区别训练和"矫正"训练;应用人耳对语音信号的处理特点,分析提取特征参数,应用人工神经元网络等,所有这些努力都取得了一定成绩。不过,如果要使语音识别系统性能有大的提高,就要综合应用语言学、心理学、生理学以及信号处理等各门学科有关知识,只用其中一种是不行的。
8.5.4 语音识别的关键技术
  语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。此外,还涉及到语音识别单元的选取。
  1.语音识别单元的选取
   选择识别单元是语音识别研究的第一步。语音识别单元有单词(句)、音节和音素三种,具体选择哪一种,由具体的研究任务决定。
  单词(句)单元广泛应用于中小词汇语音识别系统,但不适合大词汇系统,原因在于模型库太庞大,训练模型任务繁重,模型匹配算法复杂,难以满足实时性要求。
  音节单元多见于汉语语音识别,主要因为汉语是单音节结构的语言,而英语是多音节,并且汉语虽然有大约1300个音节,但若不考虑声调,约有408个无调音节,数量相对较少。因此,对于中、大词汇量汉语语音识别系统来说,以音节为识别单元基本是可行的。
  音素单元以前多见于英语语音识别的研究中,但目前中、大词汇量汉语语音识别系统也在越来越多地采用。原因在于汉语音节仅由声母(包括零声母有22个)和韵母(共有28个)构成,且声韵母声学特性相差很大。实际应用中常把声母依后续韵母的不同而构成细化声母,这样虽然增加了模型数目,但提高了易混淆音节的区分能力。由于协同发音的影响,音素单元不稳定,所以如何获得稳定的音素单元,还有待研究。

  2.特征参数提取技术
   语音信号中含有丰富的信息,但如何从中提取出对语音识别有用的信息呢?特征提取就是完成这项工作,它对语音信号进行分析处理,去除对语音识别无关紧要的冗余信息,获得影响语音识别的重要信息。对于非特定人语音识别来讲,希望特征参数尽可能多的反映语义信息,尽量减少说话人的个人信息(对特定人语音识别来讲,则相反)。从信息论角度讲,这是信息压缩的过程。
  线性预测(LP)分析技术是目前应用广泛的特征参数提取技术,许多成功的应用系统都采用基于LP技术提取的倒谱参数。但线性预测模型是纯数学模型,没有考虑人类听觉系统对语音的处理特点。
  Mel参数和基于感知线性预测(PLP)分析提取的感知线性预测倒谱,在一定程度上模拟了人耳对语音的处理特点,应用了人耳听觉感知方面的一些研究成果。实验证明,采用这种技术,语音识别系统的性能有一定提高。

  也有研究者尝试把小波分析技术应用于特征提取,但目前性能难以与上述技术相比,有待进一步研究。
  3.模式匹配及模型训练技术
   模型训练是指按照一定的准则,从大量已知模式中获取表征该模式本质特征的模型参数,而模式匹配则是根据一定准则,使未知模式与模型库中的某一个模型获得最佳匹配。
  语音识别所应用的模式匹配和模型训练技术主要有动态时间归正技术(DTW)、隐马尔可夫模型(HMM)和人工神经元网络(ANN)。
  DTW是较早的一种模式匹配和模型训练技术,它应用动态规划方法成功解决了语音信号特征参数序列比较时时长不等的难题,在孤立词语音识别中获得了良好性能。但因其不适合连续语音大词汇量语音识别系统,目前已被HMM模型和ANN替代。
  HMM模型是语音信号时变特征的有参表示法。它由相互关联的两个随机过程共同描述信号的统计特性,其中一个是隐蔽的(不可观测的)具有有限状态的Markor链,另一个是与mARKOR链的每一状态相关联的观察矢量的随机过程(可观测的)。隐蔽Markor链的特性要靠可观测到的信号特征揭示。这样,语音等时变信号某一段的特征就由对应状态观察符号的随机过程描述,而信号随时间的变化由隐蔽Markor链的转移概率描述。模型参数包括HMM拓扑结构、状态转移概率及描述观察符号统计特性的一组随机函数。按照随机函数的特点,HMM模型可分为离散隐马尔可夫模型(采用离散概率密度函数,简称DHMM)和连续隐马尔可夫模型(采用连续概率密度函数,简称CHMM)以及半连续隐马尔可夫模型(SCHMM,集DHMM和CHMM特点)。一般来讲,在训练数据足够时,CHMM优于DHMM和SCHMM。HMM模型的训练和识别都已研究出有效的算法,并不断被完善,以增强HMM模型的鲁棒性。
  人工神经元网络在语音识别中的应用是现在研究的又一热点。ANN本质上是一个自适应非线性动力学系统,模拟了人类神经元活动的原理,具有自学、联想、对比、推理和概括能力。这些能力是HMM模型不具备的,但ANN又不具有HMM模型的动态时间归正性能。因此,现在已有人研究如何把二者的优点有机结合起来,从而提高整个模型的鲁棒。

8.6 应用举例
  自然语言理解研究虽然尚存在不少困难的问题,但已有较大进展,并已获得越来越广泛的应用。下面介绍3个应用实例,即自然语言自动理解系统、机器翻译系统和自然语言问答系统。

8.6.1 自然语言自动理解系统
  1.指挥机器人的自然语言理解系统SHRDLU
  SHRDLU系统是由MIT研制的,这个系统能用自然语言来指挥机器手在桌面上摆弄积木,按一定的要求重新安排积木块的空间位置。SHRDLU可与用户进行人机对话,接收自然语言,把它变为相应的指令,并进行逻辑推理,从而回答关于桌面上积木世界的各种问题。系统在LISP的基础上设计了一种MICRO PLANNER程序语言,用它来表示各种指令、事实和推理过程。如"the pyramid is on the table"(棱椎体在桌子上),MICRO-PLANNER可以把它变换成如下形式(ON PYRAMID TABLE)。如果要把积木x放到另一块积木y上,则可进行如下推理:
(THE GOAL(ON ?x ?y)
(OR(ON TOP ?x ?y) (AND(CLEAR TOP ?x) (CLEAR TOP ?y) (PUT ON ?x ?y)))) 其表达的意义是:要把x放在y上,如果x不在y上,那么首先就要清除x上的一切东西(CLEAR-TOP ?x),然后再清除y上的一切东西,最后才把x放到y之上(PUT ON ?x ?y)。
  在SHRDLU系统的语法中,不仅包含句法方面的特征,而且还包括语式、时态、语态等特征,并且把句法同语义结合在一起。当输入"Can the table picks up blocks?"(桌子能拿起积木吗?)时,机器在分析句子的同时还可以在语义上作出判断,只有动物属性的东西才能"pick up"(拿起)东西,从而回答"No"。系统把句法分析、语义分析同逻辑推理结合在一起,取得了良好的结果。
  2.自然语言情报检索系统LUNAR
  LUNAR系统是由伍兹于1972年研制成功的一个自然语言情报检索系统,具有语义分析能力,用于帮助地质学家比较从月球卫星Apollo-11上得到的月球岩石和土壤组成的化学成分数据。这个系统具有一定的实用性,为地质学家们提供了一个有用的工具,也显示了自然语言理解系统对科学和生产的积极作用。
  LUNAR系统的工作过程可分为3个阶段。  
  第一阶段:句法分析
  系统采用ATN及语义探索的方法产生人提出的问题的推导树。LUNAR能处理大部分英语提问句型,有3500个词汇,可解决时态、语式、指代、比较级、关系从句等语法现象。如英语句子Give me the modal analysis of P205 in those samples.(给我作出这些样本中P205的常规分析。)What samples contain P205?(哪种样本中含有P205?)等。

  第二阶段:语义解析
  在这个阶段中,系统采用形式化的方法来表示提问语言所包含的语义,例如:
      (TEST(CONTAIN S10046 OLIV))
其中TEST是一个操作,CONTAIN是一个谓词,S10046和DLIV都是标志符,代表了数据库中所存的事物,S10046是标本号,OLIV是一种矿石。形式表达中还有多种量词,如QUANT、EVERY等。例如:
      (FOR EVERY x1/(SEQ TYPE C):T;(PRINTOU Tx1))
它的含义是:枚举出所有类型为C的样本,并打印出来。
  第三阶段:回答问题
  在这个阶段中将产生对提问的回答,如:
   提问:(Do any samples have greater than 13 percent aluminium)(举出任何含铝量大于13%的样本
   分析后的形式化表达为:
    (TEST (FOR SOME x1/(SEQ SAMPLES):T;(CONTAIN x1(NPR*X2/ \'AL203) (GREATER THAN 13 PCT))))
   回答:(yes)
   然后LUNAR系统可枚举出一些含铝量大于13%的样本。
8.6.2 机器翻译系统ARIANE
  从语言翻译的目标来说,大致有以下3种情况:
  1.再创作(Re-creation)
  比如翻译小说、诗歌、公共出版物(如报刊、杂志)等。这种翻译实际上是一个再创作的过程,其目的是在于传递原文中的主题思想和情感等。
  2.直译(Diffusion Translation)
  这主要是翻译科技文献,这类翻译的要求是准确,不折不扣地反映原文的内容。
  3.粗译(Screening Translation)
  这种翻译的目的是信息获取和交流,因此要求是快,粗糙一些不成问题。
  机器翻译在目前和今后相当长的一段时间内只可能实现后两个目标,第一个目标迄今为止还只能是一个"美丽的梦想"。早期的机译主要是从事"粗译"工作。这种系统目前仍有市场,如SYSTRAN(俄/法,美国),ATLAS?Ⅱ(日/英,日本)等。这些系统要求自动化程度高,尽可能少作译前、译后的人工编辑。大约在60年代后期,人们开始从事"直译"的系统研究。这类系统的输出质量较好,能够为职业译员所接受(作修改),从而起到降低翻译工作量的作用。这类系统只能在某一个特定的领域中完成某些特定形式的文本翻译,如PIVOT(NEC)、HICAT(Hitachi)、LOGOS(美国)、METAL(美国)、ARIANE(法国)、SUSY(德国)等等。这些系统一般都非常庞大。机器翻译研究除了全自动翻译系统之外,另一方面则是研究翻译工具,又称为MAHT(Machine Aided Human Translation),其对象是职业或非职业的翻译工作者,它们通常与文本处理系统结合在一起。

图 8.13 机器翻译的逻辑过程
图 8.14 多语言的互译
  机器翻译的逻辑过程通常分为分析阶段、转换阶段和生成阶段,如图8.13所示。分析阶段是对输入的源语言进行多层分析,并将分析的结果用一种中间描述结构来表达。转换阶段涉及两种语言,它把源语言的分析结果转换成相应的目标语言的中间描述。这种转换涉及到词汇的转换和语言表达结构上的转换。生成阶段则是将转换结果(它是目标语的中间描述结构)生成出目标语的表层结构,最终产生目标语言。作为多语言的翻译系统,独立分析和独立生成是至关重要的。所谓多语言翻译系统是指可以翻译一种语言到多种语言或者多种语言到多种语言的系统。独立分析和独立生成要求对源语言的分析应当不依赖于目标语言的信息,而目标语言的生成也不必再去访问源语言,仅以中间描述作为媒介。独立分析和独立生成可以使多语言机译系统大为简化,例如对于一个两种语言翻译到3种语言的系统,如果非独立分析和独立生成的话,需要6个分析器、6个生成器和6个转换器,而独立分析和生成只需要2个分析器、6个转换器和3个生成器。另一方面转换部分工作量应当尽可能的小,这是因为多语言系统的转换部分很多,如中英文翻译到法、日、德文要6个转换器,如图8.14所示。如果分析和生成器不理想,就会造成转换器工作量增加,这就使系统变得很庞大。
  机器翻译系统的另一个问题是要将语言学工作与计算机程序工作分开,即把语法、词典等等与支持系统运行的程序相分离。这对于系统的开发和维护是非常重要的。
  ARIANE系统是由法国GETA(Groupe d'Etudes pourla Traduction Automatique)实验室历时20年开发的一个世界著名的机译系统。确切地说,ARIANE系统是一个机器翻译系统的生成环境,它支持了一种SLLP语言(Special Language for Linguistic Programming),语言学家图8.15ARIANE机译系统结构可以用SLLP来编写机译系统,编写出来的程序(语件)由ARIANF系统编译成一个机译系统。
  ARIANE系统由4个主要模块构成:ATEF、ROBRA、TRANSF和SYGMOR,系统的基本结构如所示。ATEF是一个非确定性的有限状态自动机,用来作词法分析,它可以给出一个输入词汇的各种可能的词素构成,并给出其所有的语法信息。
ATEF的语件由变量、格式、词典和语法构成,语言学家可用它们来编制词法分析器。ROBRA是一个树形图转换系统,用来完成句法分析、转换和生成。ROBRA的语件主要是由控制图和转换规则构成。转换规则定义了各种各样的子树变换,通过不断的变换建立多层结构,完成源语言的多层结构到图8.16各模块的基本原理目标语多层结构之间的转换,以及完成目标语表层结构的生成。控制图则是一个有向转移图,它控制了转换规则的有序执行。TRANSF是一个词汇转换环节,它用目标语的词汇来替代源语言中的词汇。SYGMOR则是一个有限状态的词法生成器。
图 8.16 各模块的基本原理
  ARIANE系统4个模块的基本原理如图8.16所示。语言学家用SLLP完成机器翻译用的语件,分各个模块进行编译,然后通过解释器来执行这些语件。
  迄今为止ARIANE系统已生成了多个有实用价值的机器翻译系统和语言处理工具。


8.6.3 自然语言问答系统
  下面介绍一个简单的自然语言问答系统。与上述例子不同的是,本例不是用LISP语言编程的,而是用PROLOG语言编程的。
简单的自然语言问答系统,至少要做3件事:
  (1) 分析一语句,同时构造它的逻辑表示,检查它的语义正确性。
  (2) 如果可能的话,转换该逻辑形式为Horn子句。
  (3) 如果该语句是陈述句,则在知识库中增加该子句,否则认为该子句为一个问题,并演绎地检索相应的答案。
  此3项功能主要有谓词talk完成,talk的定义是:
talk(Sentence,Reply):-Parse(Sentence,LF,-Type),
clausify(LF,Clause,Freevars),!, reply(Type,Ereevars,Clause,Reply). talk(Sentence,error('too difficult')). 上述定义中引出3个谓词,即parse,clausify,reply分别对应上述3项功能。
  1.谓词parse表达句法分析能力

  parse主要根据文法规则记号系统的规定,执行分析和转换任务,给出相应的逻辑表示和该语句的类型,它的定义是:
    parse(Sentence,LF,assertion):-s(finite,LF,nogap,Sentence,[]).
    parse(Sentence,LF,query):-q(LF,Sentence,[]).
  第一子句由文法系统s确定,如成功,则给出相应的逻辑形式和语句类型assertion。第二子句由文法系统q确定,如成功,则给出相应的逻辑形式LF和语句类型query。在第一子句中finite限制该系统仅处理一般时态,当然如果想处理更复杂的时态,只要增加一些子句和文法系统规则就行了。

   2.谓词clausify表达生成子句的能力
  parse反映语句语义的LF,由clausify谓词转换成Horn子句的情形。当然,并非所有的LF均能转换成Horn子句,能转换Horn子句有下列3种情况:
   (1) 如果表达式的最外层是全称量词,则可以立即去掉此量词并对其余部分继续此转换过程:          clausify(all(X,F0),F,[X|V]):clausify(F0,F,V).
   (2) 如果表达式是蕴涵式,并且结论部分只有一个文字,并且前提中不含有蕴涵符:              clausify(A0=>C0,(C:A),V):-clausify_literal(C0,C),
       clausify_antecedent(A0,A,V).
   (3) 最后一种情况是单文字可以变成单位子句:clausify(C0,C[]):-clausify_literal(C0,C).

   3.谓词reply表达回答功能
  parsetalk的第3个功能就是回答功能,这分两种情况:其一是针对陈述句的,它将该陈述句的Horn子句形式插入到PROLOG数据库中;其二是针对提问的,提问的形式已经变换成如下形式:
            answer(Answer):Condition
此时直接由PROLOG系统求解出所有满足Condition的解,如有解,则给出所有解;如无解,则回答no。这功能很简单,我们可直接从定义中看出:
  reply(assertion,-FreeVars,Assertion,asserted(Assertion)):assert(Assertion),!.
  reply(query,Freevars,(answer(Answer):-Condition),Reply):-      (setof(Answer,FreeVars^Condition,Answers)->Reply=Answers;Reply=[no]),!.
   talk是整个自然语言回答系统的核心谓词。要构造成真正的系统,尚需要一个界面程序,此界程序的功能是给出某一提示符,接受用户的语句,执行talk功能,打印talk返回的结果,这是一个很短的管理程序,定义是:
   main_loop:
     write(\' \'), read_sent(words),
     talk(Words,Reply),print_reply(Reply),
     main_loop.
其中read_sent能接受一个英文句子,并把它变成一些单词的表。