可以给每个谓词增加额外的参数来表示特征,这样就可以对一个逻辑语法进行扩展。举个非常简单的例子。可以增加一个表示数的参数,修改PROLOG的规则从而保证数的一致性特征,这个参数只需要增加到每个和数相关的谓词上。这样,就会得到一些带有特征的规则,如语法1所示。
语法1
现在,让我们分析一下名词短语“the dog cried”。句法分析中有下面的断言:
word (the, 1,2) :-
word (dog, 2, 3) :–
根据语法1中的规则2来分析词“the”。根据定理推导,我们可以得到该词的数特征。你得到这个结论,仅仅需要一个简单流程来证明下面的结论:
np (1, Number, 3)
采用规则1,可以得到下面这些子目标:
art (1, Number, P2)
n (P2, Number, 3)
使用规则2证明下面这些谓词,就可以最终完成第一个子目标:
word (the, 1,2) isart(the, 3s)
在规则2中,变量绑定为:
Number ← 3s
P2 ← 2
因此,现在的第二个子目标就是:
n(2, 3s, 3)
使用规则6,又可以将其归约为子目标word(Word,2,3)和isnoun(Word,3s),将Word实例化为“dog”,根据输入串和规则7,我们最终能分别证明这两个子目标。因此,句法分析成功,我们同时也验证了数的一致性。
在规则中另外增加一个参数,也可以进一步扩展该语法,扩展后它可以记录整个句法分析的结构。例如,为了建立句法分析树,可以定制一些规则,如语法2所示。针对句子“The dog cried”,这些规则可以保证你证明下面的结论:
S(1, 3s, s(np(art(the), n(dog)), vp(v(cried))), 4)