Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

G.3 规则

范畴语法的规则规定函数与论元如何组合。下面两个规则模板构成所有范畴语法的基础:

X/YY  X(G.1)X/Y\quad Y\ \Rightarrow\ X\tag{G.1}
YX\Y  X(G.2)Y\quad X\backslash Y\ \Rightarrow\ X\tag{G.2}

第一条规则把函数应用于其右侧论元,第二条规则则在左侧寻找论元。前者称为前向函数应用(forward function application),后者称为后向函数应用(backward function application)。应用任一规则得到的结果,都是被应用函数所规定的返回值范畴。

给定这些规则和一个简单词典,考虑句子 United serves Miami 的分析。假设 serves 是范畴为 (S\NP)/NP(S\backslash NP)/NP 的及物动词,UnitedMiami 都是简单的 NPNP。同时使用前向和后向函数应用,可得到:

UnitedNPserves(S\NP)/NPMiamiNPNP(S\NP)S\underbrace{\text{United}}_{NP}\quad \underbrace{\text{serves}}_{(S\backslash NP)/NP}\quad \underbrace{\text{Miami}}_{NP} \quad\Rightarrow\quad NP\quad(S\backslash NP) \quad\Rightarrow\quad S

范畴语法推导通常从词语向下生长。规则应用画作一条横跨相关元素的水平线,线的右端标明运算类型。本例中有两次函数应用:符号 >> 表示前向函数应用,把动词 serves 应用于右侧的 NPNP;符号 << 表示后向函数应用,把第一次应用的结果作用于左侧的 NPNP United

英语允许两个同类型成分并列,结果仍是同一类型的新成分。处理这类例子的规则为:

XCONJX  X(G.3)X\quad\mathrm{CONJ}\quad X\ \Rightarrow\ X\tag{G.3}

也就是说,当两个同范畴成分之间有一个 CONJ 类型的成分时,它们可以组合成一个更大的同类型成分。例如在 We flew to Geneva and drove to Chamonix 中,flew to Genevadrove to Chamonix 都形成 S\NPS\backslash NP,二者经并列算子 Φ\langle\Phi\rangle 组合后仍是 S\NPS\backslash NP,再通过后向函数应用与主语 NPNP We 组合。

这些例子体现了范畴语法方法的词汇性质:一种语言的语法事实主要编码在词典里,语法本身则精简为三条规则。遗憾的是,基本范畴方法并不比传统 CFG 规则具有更强的表达能力;它只是把信息从语法移到了词典。为突破这一限制,CCG 还包括作用于函数本身的运算。

第一对运算允许相邻函数进行组合

X/YY/Z  X/Z(G.4)X/Y\quad Y/Z\ \Rightarrow\ X/Z\tag{G.4}
Y\ZX\Y  X\Z(G.5)Y\backslash Z\quad X\backslash Y\ \Rightarrow\ X\backslash Z\tag{G.5}

第一条称为前向组合(forward composition),适用于两个相邻成分:第一个函数在右侧寻找 YY 类型论元,第二个函数能够返回 YY。该规则把两个函数组合成一个新函数,其返回类型来自第一个成分,论元类型来自第二个成分。第二条称为后向组合(backward composition),原理相同,只是相关论元在左侧寻找。在 CCG 图中,两类组合都用 BB 表示,并用 <<>> 指明方向。

下一个运算是类型提升(type raising),它把简单范畴提升为函数。更确切地说,类型提升把某个范畴转化为一个函数;该函数所寻找的论元本身也是函数,而后者以原始范畴为论元。下面分别给出右向和左向论元的类型提升模式:

X  T/(T\X)(G.6)X\ \Rightarrow\ T/(T\backslash X)\tag{G.6}
X  T\(T/X)(G.7)X\ \Rightarrow\ T\backslash(T/X)\tag{G.7}

这些规则中的 TT 可以对应语法中已有的任何原子范畴或函数范畴。

一个特别实用的例子是:把主语位置上的简单 NPNP 论元转化为能够与后续 VPVP 组合的函数。再次考虑 United serves Miami。不再把 United 仅仅归为 NPNP、充当 serves 所附函数的论元,而是通过类型提升把它变成函数:

NPS/(S\NP)NP\Rightarrow S/(S\backslash NP)

将类型提升后的成分与前向组合规则 G.4 结合,可以先把 United 与及物动词 serves 组合,得到完成推导所需的函数 S/NPS/NP,再与 Miami 组合得到 SS

该推导有几个值得注意的方面。第一,它给出从左到右、逐词进行的推导,更接近人类处理语言的方式,因此 CCG 特别适合心理语言学研究。第二,推导使用了一个中间分析单位 United serves,它并不对应英语中的传统成分。利用这种非成分元素的能力,使 CCG 能处理不构成正规成分的短语并列,例如:

(G.8) We flew IcelandAir to Geneva and SwissAir to London.

这里并列的片段是 IcelandAir to GenevaSwissAir to London;通常不会把它们视为成分。在动词短语 flew IcelandAir to Geneva 的标准推导中,不存在恰好对应 IcelandAir to Geneva 的单一成分,也就没有机会使用 Φ\langle\Phi\rangle 算子。复杂 CCG 范畴可能较为冗长,以下推导用 VPVP 简写 (S\NP)(S\backslash NP)

替代推导同时采用后向类型提升(G.7)和后向函数组合(G.5),构造出所需的元素。对 SwissAir to London 作同样分析后,两个片段就满足 Φ\langle\Phi\rangle 算子的要求,能够完成例句 G.8 的推导。具体推导图见原始 PDF第 6–7 页。

最后考察这些高级算子如何处理长距离依存(long-distance dependency),也称句法移位或抽取。附录 F 提到,英语中的 wh 问句、关系从句和话题化等多种结构都会产生长距离依存。它们的共同点是:某个成分出现在远离其通常位置或预期位置的地方。考虑下面的关系从句:

the flight that United diverted

diverted 是及物动词,需要两个 NPNP 论元:左侧的主语 NPNP 和右侧的直接宾语 NPNP,所以其范畴是 (S\NP)/NP(S\backslash NP)/NP。但在本例中,直接宾语 the flight 已经“移到”从句开头,主语 United 仍位于正常位置。我们需要在纳入主语论元的同时,处理 the flight 不在预期位置这一事实。

类型提升和函数组合可以共同完成这项推导。第一步把 United 类型提升为 S/(S\NP)S/(S\backslash NP),使它能通过前向组合与 diverted 结合。组合结果是 S/NPS/NP,仍然保留“需要一个 NPNP 填补缺失直接宾语”的信息。第二个关键是赋予 that 的词汇范畴:

(NP\NP)/(S/NP)(NP\backslash NP)/(S/NP)

该函数在右侧寻找一个缺少论元的动词短语,并把它转化为在左侧寻找缺失元素的 NPNP;而 the flight 恰好位于那里。