文档介绍:第10章自然语言理解
简单句理解
复合句理解
转换文法和转换网络
简单句理解
理解的实现过程
要理解一个语句,需建立起一个和该简单句相对应的机内表达。而要建立机内表达,需要做以下两方面的工作:
(1)理解语句中的每一个词。
(2)以这些词为基础组成一个可以表达整个语句意义的结构。
由于这个解释过程涉及到许多事情,因而常常将这项工作分成以下三个部分来进行:
(1)语法分析。将单词之间的线性次序变换成一个显示单词如何与其他单词相关联的结构。语法分析确定语句是否合乎语法,因为一个不合语法的语句就更难理解。
(2)语义分析。各种意义被赋予由语法分析程序所建立的结构,即在语法结构和任务领域内对象之间进行映射变换。
(3)语用分析。为确定真正含义,对表达的结构重新加以解释。
语法分析
要进行语法分析,必须首先给出该语言的文法规则,以便为语法分析提供一个准则和依据。对于自然语言人们已提出了许多种文法,例如,乔姆斯基(Chomsky)提出的上下文无关文法就是一种常用的文法。
一个语言的文法一般用一组文法规则(称为产生式或重写规则)以及非终结符与终结符来定义和描述。例如,下面就是一个英语子集的上下文无关文法:
<sentence>∷=<noun-phrase><verb-phrase>
<noun-phrase>∷=<determiner><noun>
<verb-phrase>∷=<verb><noun-phrase>|<verb>
<determiner>∷=the|a|an
<noun>∷=man|student|puter
<verb>∷=eats|operats
这个文法有6条文法规则,它们是用BNF范式表示的。其中带尖括号的项为非终结符,第一个非终结符称为起始符,不带尖括号的项为终结符,符号“∷=”的意思是“定义为”,符号“|”是“或者”的意思,而不带“|”的项之间是“与”关系。符号“∷=”也可以用箭头“→”表示。
有了文法规则,对于一个给定的句子,就可以进行语法分析,即根据文法规则来判断其是否合乎语法。可以看出,上面的文法规则实际是非终结符的分解、变换规则。分解、变换从起始符开始,到终结符结束。所以,全体文法规则就构成一棵如图10-1所示的与或树,我们称其为文法树。
图10―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,puter]).
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).