另一种处理缺位的方法综合了GAP特征方法和保留表方法。这种方法通常叫做缺位索引方法(gap threading),常用在逻辑语法中。它为每个谓词增加两个额外的参数——其中一个表示当前成分可能会用到的填充成分列表,另一个表示语法成分分析完成后不会用到的填充成分结果列表。所以,会有下面这种形式的谓词:
s( position- in, position- out , fillers- in, fillers- out)
该谓词为真的前提是输入的position-in和position-out之间存在合法的S成分。如果构建S的时候用到了缺位,那么该缺位的填充成分将出现在fillers-in中,而不会在fillers-out 中。例如,缺位为NP的S成分对应的谓词为s(In,Out,[NP],nil)。在没有缺位的情况下,fillers-in与fillers-out相同。
现在,让我们来看看关系从句所处理的一个示例。图1给出了需要用到的规则。为了让这个例子更加简单,我们在这里省略了各种特征约束,比如那些必需的一致性约束和次范畴约束。
为了考察这些使用到的规则,我们来看看句子“The man who we saw cried”(我们看到的那个男人哭了)的分析过程,具体流程见图2。关系从句是从步骤7开始分析的。应用规则9,词语“who”被识别为关系代词,变量Filler绑定为列表[NP]。由于该填充成分没有在NP中使用,随后,会依次传递到内嵌的S成分(步骤9)、NP成分(步骤10),接着是VP成分(步骤12)。从这里开始,它在步骤14被传递到NP谓词中,根据规则10,NP谓词使用该填充成分。FilersOut变量为空,所以必须使用填充成分,而在这里又没有别的NP可用,因此,只有应用那些需要填充成分的规则。一旦使用了缺位,位置1到位置6上的整个NP被识别出来,剩下的分析就直截了当了。
图1 采用缺位索引方法的逻辑语法
图2“1 The2 man3 who4 are5 saw6 cried7 ”的句法分析流程
我们设计了一套非常方便的标记体系,可以用来设计有限子句语法,这样语法就可以很简单地翻译成PROLOG程序。同样,我们也可以设计一套标记体系来辅助缺位处理语法的编写。具体地说,我们有一套叫做外置转换语法(extraposition grammar)的形式化系统,它除了可以接受正常的上下文无关规则之外,还可以接受如下形式的规则:
REL-MARK..TRACE → REL-PRO
从本质上看,这些规则的含义是:成分REL-MARK,加上句子中后来出现的成分TRACE,可以改写为REL-PRO。这样的规则违反了句法形式的树结构,并且接受名词短语“the mouse that the cat ate”(那只被猫吃了的老鼠),该短语的分析过程见图3。这些规则可以采用缺位索引方法组织成逻辑语法。
图3 外置转换语法的分析树
现在,我们将缺位索引方法和其他方法进行比较。当然,可以通过在谓词上增加参数来实现任何一种方法。如果仅仅将缺位索引看做是实现方法,那么,看起来很像是在逻辑语法中实现了一个保留表。语法的设计者可以决定是否在语法中传递保留表。因此,它还具有一定的灵活性,这就避免了简单保留表机制中会出现的那些问题。例如,图1不会将填充成分从名词短语之外传递到关系从句中。同时,这种方法给了语法设计者很大的灵活性。不过,像保留表方法一样,我们必须要明确地施加约束的传递,它不是形式化的必然结果。
责任编辑:admin