功能合一语法(Functional Unification Grammar)采用合一运算来操作和推理特征结构(Kay,1979)。该技术只需经过小的修改就可以应用于NLG。它的基本思想是将生成语法建立为带有可能的交替列表的特征结构,然后将该语法与采用输入说明建立的相同类型的特征结构进行合一。这个合一处理将选取在输人中指定的特征,并且将它们与那些在语法中的特征进行一致化,生成全部的特征结构,在被线性化后形成句子的输出。
本文将通过再次生成例句(1)来说明这个机制。我们将采用图1所示的简单功能合一语法。该语法被表示为属性值矩阵,支持现在或将来时态的简单及物句子,并坚持主谓数的一致。现在我们将跳过结构而解释其特征。
在它的最高层,该语法为句子(cat s)、名词短语(cat np)和动词短语(cat vp)提供了可供替换的对象。这个可选方法是由最左边的alt特征指定的。我们用波形括号表示,它所包括的这三个替换对象中的任何一个都是容许的。这一层也指定了一个模式,该模式表明了在该层指定的特征的顺序,本例中的顺序为:行为人(actor)、处理(process)和目的(goal)。
在句子层,该语法支持的actor,process和goal特征分别被预先指定为NP,VP和NP。主谓数的一致通过采用process特征内的number(数)特征得以实施。其中,process的number必须与路径{actor number}统一。路径是指定从根结点到一个特定特征的路径的特征列表。在本例中,process的数必须与actor的数统一。这个路径是直接给定的,但是我们也可以采用相对路径,比如NP的中心语(head)特征的特征数。这里的路径{number}表示名词短语的中心语的数必须与高于两个层次的特征的数相统一。在下面的例子中,我们将看到这是非常有用的。
图1 一个简单FUF语法。FUF,即Functional Unification Formalism, 是由Elhadad(1993,1992)开发的对功能合一语法的一种实现
除了VP层独有的在现在和将来时态之间的替换,VP层在性质上类似于NP层。给定时态(我们将看到这是在输入特征结构中指定的),合一运算将选择匹配的替换对象,并继续处理相关特征的统一。例如,如果时态是现在时,则中心语为单个动词;如果时态是将来时,则需要在中心动词之前插入辅助动词will。
该语法与系统语法的相似之处在于它也支持在生成处理时递归地进入多个层次。现在我们来看看输入特征结构,它指定了我们希望生成的特定句子的细节。该输入结构称为功能描述(functional description,简称FD),是一种与该语法相似的特征结构。例句(1)的FD如下所示: