逻辑语法(logical grammar) 这个名称有两种不同的含义,在计算语言学里,逻辑语法指“用谓词逻辑表达的语法,它是逻辑程序设计和现代语言学相结合的产物”,比如定子句语法、外位语法、修饰成分结构语法、约束逻辑语法等,这些逻辑语法直接服务于自然语言的信息处理。在理论语言学里,逻辑语法指以蒙太古语法为开端,由广义量词理论、话语表达理论、情境语义学、类型逻辑语法等理论构成的一个学科体系,用现代数理逻辑的手段研究自然语言句法和语义的生成机制,关注语言本体,不直接解决自然语言信息处理中出现的技术问题,但其成果对后者有重要的应用价值。本文讨论的逻辑语法属于第二种,它是语言学、逻辑学和语言哲学的跨学科研究,已经历了四十多年的发展历程,但在国内刚刚起步,本文通过讨论逻辑语法及其根本原则———组合性原则,旨在加深对这门学科的认识。
同转换生成语法一样,逻辑语法认为语言是生成性的。生成性又称递归性,通俗地讲就是由有限的语言表达式生出无限多的表达式,也即所谓“无界语言的有限规律性”。
当代理论语言学把递归性看做自然语言的本质特征之一。转换生成语法认为自然语言的句法是生成性的,一个句子无论是否第一次使用,也无论它有多么长多么复杂,都是由一些基本单位出发,经过若干句法规则的计算得到。在转换生成语法里,句法居于中心地位,它是生成性的,音系和语义居于从属地位,它们是解释性的,这个思想称为句法自主。逻辑语法则认为语义也是生成性的: 我们每天都听到和说出些从来没有听到或说出的句子,很难想象这些句子的意思我们是一个个孤立地理解和记住的,同句子的语形一样,意义也有递归性: 由一些基本意义单位,依照若干语义规则得到无限多的复杂意义。转换生成语法和逻辑语法的发展都得益于 20 世纪的科学进步,前者更依赖计算科学里的形式语言理论,后者更依赖数理逻辑。
组合性原则(the principle of compositionality,以下简称 CP) 是逻辑语法最重要的方法论原则,了解CP 不仅是研究逻辑语法的起点,也是把握其理论发展脉络、预测其发展走向的一条重要线索。本文第一节阐述逻辑语法和 CP 提出的背景与过程,第二节从宏观层次讨论 CP 对逻辑语法的方法论意义,第三节从微观层次讨论逻辑语法如何通过范畴语法和高阶逻辑等理论构件实现 CP。
一、 组合性原则的提出与逻辑语法的兴起
(一) 组合性原则与组合性语法理论
组合性原则又称弗雷格原则,由德国逻辑学和数学家弗雷格(G. Frege) 提出,他在 1884 年发表的哲学著作《算术基础》的序言里阐述了他语言哲学思想的两条核心原则,其中之一称为组合性原则:一个句子的意义是其组成部分的意义及其组合方式的函数。函数本是数学概念,最先由弗雷格引入逻辑学。
上述原则表达了三层意思: 第一,句子的意义是可计算、可生成的; 第二,句子的意义由单位意义及其相互组合的句法构造过程共同决定; 第三,求得句子意义是一种函数运算,以较小单位意义及其相互组合的方式为输入,以句子的意义为输出。所谓“组合”指提取词汇,构成符串的过程,通常是把两个表达式并联起来: 给定任意表达式 α 和 β,二者并联得到 αβ 或 βα。不同的表达式句法性质不同,把它们一步步组合起来便形成一个句法结构,“组合方式”指句法结构给句子造成的意义。
人工逻辑语言遵循组合性原则。逻辑语言没有歧义和模糊,每一基本表达式都有一明确的语义解释,每一句法规则都有一条对应的语义规则,句法规则说明如何造成合法的复杂表达式,语义规则说明如何计算复杂表达式的意义,这种对应如此规则和严整,使得贯彻 CP 近乎一个自动机制,换句话说,CP 对于逻辑语言的意义更多是哲学特征的抽象提炼。
逻辑语法首次把 CP 引入自然语言研究,迄今已发展出蒙太古语法、类型逻辑语法等多种理论。CP 对于逻辑语法具有根本性的方法论意义。以 CP为根本方法论原则的语法理论又称组合性理论,道蒂(D. Dowty)从方法论的角度提出了建立和评价组合性理论必须考虑的三个因素,分别是组合透明性(compositional transparency) 、句法经济性(syntac-tic economy) 和结构语义经济性(structural semanticeconomy) ,这三个因素彼此相联、相互制约。所谓组合透明性是指语义组合在多大程度上可以从句法结构上一目了然,句法经济性指服务于语义组合生成的句法结构是否简单,结构语义经济性指语义组合生成所涉及的意义单位以及定义在这些单位上的语义操作是否简易。可以看出句法经济性和结构语义经济性分别涉及意义计算过程中的句子生成和语义生成问题,组合透明性则涉及二者之间的接口问题,作语法分析必须综合考虑这三个因素,无论忽视语义生成的句法分析还是不顾句法的语义分析都是不可取的。
(二) 逻辑语法的兴起及其理论构件
在逻辑语法之前很长一段时间内,自然语言的意义问题被排斥在逻辑学和理论语言学之外。19世纪末、20 世纪初,以罗素(B. Russell) 等人为代表的分析哲学家认为自然语言充满了歧义、模糊等不精确现象,应创制一种完美的人工语言作为科学研究的表达手段。从美国结构主义到转换生成语法,理论语言学都只关注自然语言的句法形式方面。
20 世纪上半叶,数理逻辑飞速发展,出现了许多强大的数学和逻辑学工具: 罗素建立了类型论,C. I. 刘易斯(C. I. Lewis) 创立了模态逻辑的句法学,塔士基(A. Tarski) 建立了外延语义学,丘奇(A.Church) 提出了兰姆达演算,卡尔纳普 (R. Carnap)发展了逻辑语义分析方法,提出了外延内涵法,并首先试图把内涵的概念形式化,克里普克(S. Kripke)提出了可能世界语义学,给出了内涵的形式定义,建立了模态逻辑的语义学。这使蒙太古(R. Monta-gue) 和 D. 刘易斯(D. Lewis) 等一些逻辑学家和语言学家逐渐认识到运用逻辑语言的技术和方法来研究自然语言的意义问题是可能的。蒙太古认为自然语言和人工语言之间不存在重大理论差异,可以通过一套理论框架统一解答这两类语言的句法和语义问题,他把这种普遍语法称为通用语法(UniversalGrammar) 。转换生成语法学家也要建立一套普遍语法,目的是如何生成并且只生成所有的自然语言。
20 世纪 70 年代初,蒙太古语法的出现标志着逻辑语法的形成。当时,转换生成语法正处于标准理论时期,还没有建立自己的语义学; 另外蒙太古认为转换生成语法业已建立的句法理论“没有太多的语义学意义”,用道蒂的理论来讲就是组合透明性和句法经济性比较差,很难透过多层次的生成和转换以及繁复的句法规则建立有效的语义学。要建立充分而全面的自然语言语义学,需要一种更简便的句法理论。于是蒙太古采用了范畴语法(catego-rial grammar) 这种没有转换机制的单层次语法来生成自然语言的语符串,他还运用高阶逻辑来表达和生成自然语言的语义,这就形成了蒙太古语法。
此后的逻辑语法理论,比如类型逻辑语法(Type -Logical Grammar) 继承和发展了蒙太古语法,主要体现在更好地贯彻了 CP,显现了 CP 对逻辑语法的重要意义。
二、 CP 对逻辑语法的方法论意义
CP 意味着句法不是自主的,语义也并非处于从属地位,句法和语义是语法系统里地位相等、密不可分的两个部门,句子及其意义是同步生成的。因此加缪(L. T. F. Gamut)把 CP 称为转换生成语法和逻辑语法之间的“分水岭”。
意义以语言符号为载体,根据 CP,一个复杂意义体的意义既取决于单位意义体的意义,又取决于它们相互组合的方式和过程。符号连缀在一起构成符串的运算属于句法学问题,符串意义的生成属于语义问题,符串的每一次组合都带来一步新的语义计算,造成一个新的意义结构体,句法和语义互为表里。贯彻 CP 意味着句法和语义之间的对应关系越简单、越直接越好,也就是要有较高的组合透明性。逻辑语法由于采用了范畴语法,大大简化了句法运算,又由于内涵高阶逻辑集成了类型论和兰姆达演算,最终使得句法生成和语义生成严格对应、同步联动,语法系统每进行一步句法运算,就相应地进行一步语义运算,句子生成完毕,意义计算也同时结束。
具体说来,逻辑语法以如下方式做句法和语义的同步运算: 范畴语法首先生成语符串,并消除语符串的歧义。逻辑语法认为歧义是句法组合过程不同造成的,从结果看相同的句子,其生成过程并不相同。逻辑语法用生成树演示句法生成,一个歧义句对应多棵生成树,每棵生成树说明造成一种解释的句法生成过程。接着逻辑语法对自然语言作间接的语义解释,即先把自然语言翻译为某种逻辑语言,再对后者作语义解释。在间接语义解释的模式下如何使句法和语义严格对应、同步联动? 首先,高阶逻辑每一表达式都有一句法范畴,俗称语义类,自然语言每一表达式都归属范畴语法的某个或某些范畴,每一范畴通过赋类函数对应且仅对应一个语义类。第二,自然语言每一基本表达式都有一高阶逻辑翻译式,这个翻译式根据自然语言表达式的语义特征,依照逻辑语言的句法规则写出。第三,逻辑语言的语义学部分赋予每一基本逻辑表达式一个明确的语义值,并有若干规则说明如何计算复杂表达式的语义值。第四,范畴语法的每一运算规则都有一条对应的逻辑表达式的运算规则,逻辑语言的每一句法规则又对应一条语义计算规则,使得自然语言每做一次句法运算,便相应进行一次语义运算。这种句法和语义同步生成的结果是每一棵句法生成树都对应一棵结构相同的逻辑表达式生成树,可在前者每一节点上同时标记相应语义运算的结果,把二者结合起来。
三、 范畴语法与高阶逻辑———实现 CP 的手段
本节结合类型逻辑语法,在微观层次讨论逻辑语法如何实现 CP。具体说来有两种手段: 范畴语法和高阶逻辑,前者使逻辑语法获得了一种较之转换语法更具语义学意义的句法理论,后者则为处理复杂的自然语言意义问题提供了必要的技术手段。
(一) 范畴语法与句法/语义的同步生成
范畴语法是一种单层次的句法理论,所谓单层次指仅有一个句法表达层次,不存在转换语法那样的深层结构、表层结构、逻辑形式等多个句法表达层次。范畴语法属于词汇主义语法,词库内容丰富,句法规则极少。CP 要求句法和语义同步运算,可以想见,如果句法生成机制过于复杂,整个系统的效率难免低下。范畴语法最大的优势在于可以一种简洁明晰的方式生成自然语言的语符串,并且可以跟语义表达式(即高阶逻辑表达式) 形成直接而严格的对应,从而取得较好的句法经济性和组合透明性。囿于篇幅,本文无法全面介绍范畴语法,仅结合主题介绍几个方面。
范畴语法首先有一个递归定义的句法范畴集合Cat:1. n、np、s 属于 Cat2. 如果 A、B 属于 Cat,则 A / B、B \ A 属于 Cat3. 其他都不属于 Catn、np、s 是初始范畴,分别代表普通名词,名词短语和句子。应用第二步的递归,可得到无限多的派生范畴。每一表达式都根据其语法特征被指派一个范畴,比如不及物动词的范畴是 np \s,意思是要跟左侧一个 np 范畴的表达式组合得到 s 范畴的表达式。再比如修饰普通名词的形容词其范畴是 n/n,意思是要跟右侧一个 n 范畴的表达式组合得到另一个 n 范畴表达式。需指出的是,并非所有范畴都在自然语言里有用武之地,这种冗余换来的是整个系统的数学精确性。
范畴语法的特点是小句法、大词库,词库记录基本表达式的语形、逻辑翻译式和句法范畴,句法规则说明表达式合法的组合方式。所谓“大词库”一方面指许多歧义问题在词库里解决,比如某个有歧解的词在词库里有多个词条,每一词条反映一层意思。
这里的歧解并不仅仅指一般意义上的歧义词语,比如 bank、corn 等,还指句法行为上的多功能,比如happy 既可以跟普通名词(比如 kid) 组合构成另一个 n 范畴表达式(比如 happy kid) ,也可以做谓语,这样就在词库里有两个词条:1. happy1?λPλx. happy(P) (x) : n/n2. happy2?λx. happy(x) : np\s另一方面,句法范畴内置了许多句法组合信息,比如上面提到的 np\s 和 n/n。这使“小句法”成为可能。类型逻辑语法所采用的范畴语法只包括斜线消去规则和斜线引入规则,可格式化地表达如下:A / B B→A / E(顺向斜线消去)B B \ A→A \ E(逆向斜线消去)A→A / B B / I(顺向斜线引入)A→B B \ A \ I(逆向斜线引入)高阶逻辑的语义类集合 Typ 也是一个无限集,可递归定义如下:
1. Ind,Bool 属于 Typ2. 如果 α、β 属于 Typ,则(α→β) 属于 Typ3. 其他都不属于 Typ逻辑语法里有一个赋类函数(type assignmentfunction) T,它为范畴语法的每一范畴指派且仅指派一个语义类:1. T(np) = Ind,T (n) = Ind→Bool,T(s) =Bool2. T(A / B) = T(B \ A) = T(B)→T(A)赋类函数建立了自然语言和逻辑语言句法范畴上的对应。斜线消去规则和斜线引入规则分别对应函数应用和函数抽象这两条逻辑句法规则。所谓函数应用指给定语义类为 σ→τ 的表达式 α 和语义类为 σ 的表达式 β,二者做函数应用的运算得到语义类为 τ 的表达式 α(β) 。函数抽象指给定语义类为 τ 的表达式 α,经函数抽象得到语义类为 σ→τ 的表达式λx. α(x) ,其中 x 是语义类为 σ 的变项。这便建立了两种语言句法运算上的对应。高阶逻辑的语义学部分赋予每一合法表达式一个明确的语义值,函数应用和函数抽象的运算也各有其真值条件,这样逻辑翻译式每组合一次,所得结果的语义值也同时求出,当整个句子生成完毕,其语义值也就算出来了。
(二) 高阶逻辑与 CP 的实现
逻辑语法里的高阶逻辑应用了类型论和兰姆达演算,前者使得每一逻辑表达式都有一句法范畴,即语义类,后者使得每一步句法运算的结果都能得到准确、系统的表达。
逻辑语法遵循 CP,并作间接语义解释,要把自然语言一步步翻译为逻辑语言,而自然语言的意义问题纷繁复杂,传统一阶谓词逻辑不敷其用,主要表现在两个方面: 第一,有许多自然语言表达式无法翻译。一阶谓词逻辑只有项词、谓词和命题这三类表达式,相当于高阶逻辑里的 Ind 类、(Ind→Bool) (或者 Ind→(Ind→Bool) 、Ind→(Ind→(Ind→Bool) ) 等,(视谓词要求的论元数而定) 类、Bool 类。句子 ahappy kid sings 很简单,但 happy 既不是项词也不是谓词更不是命题,它是谓词修饰语,一阶谓词逻辑无法翻译它。第二,用一阶谓词逻辑处理自然语言的语义问题不能很好地贯彻 CP。贯彻 CP 意味着每做一次句法组合运算,就要生成一个复杂逻辑表达式,但一阶谓词逻辑无法表达那些生成过程中出现的表达式,比如要生成 Julie loves Pooh,love 先要跟 Pooh组合构成谓语,love 可译成二元谓词 love,Pooh 可译成项词 pooh,但是 love Pooh 怎么翻译? love(pooh)(x) 显然不行,因为这是一个命题函数,里面有一个自由变项 x,粗略地说这是 he/she loves Pooh 的翻译式。这些问题可在应用了兰姆达演算的高阶逻辑里轻松解决。
兰姆达(λ) 是一个希腊字母,兰姆达算子是兰姆达演算的核心内容。兰姆达演算由丘奇提出,原本是为了提供一种准确而统一的语言来表达函数。
兰姆达算子的抽象和变换(- abstraction) 运算可以解决上述一阶谓词逻辑遇到的难题,从而实现 CP。Julie loves Pooh 的逻辑翻译式是 love(pooh)(julie) ,要求得 love Pooh 的翻译式,可以用类型为Ind 的变项 x 去替换 love(pooh) (julie) 里同属于 Ind类的常项 julie,得到 love(pooh) (x) 。然后用兰姆达算子去约束它,得到 λx. love(pooh) (x) ,这就是 lovePooh 的翻译式,这个过程称为兰姆达抽象,又称函数抽象。λx. love(pooh) (x) 是一个语义类为(Ind→Bool) 的表达式,而谓语的范畴 np \ s 被指派的语义类正是(Ind→Bool) ,二者相同,说明 λx. love(pooh)(x) 是正确的翻译式。当 love Pooh 再跟 Julie 组合得到 Julie loves Pooh 时,λx. love(pooh) (x) 又跟Julie 的翻译式 julie 组合在一起做函数应用的运算,得到(λx. love(pooh) (x) ) (julie) 。由于 julie 的语义类是 Ind,跟变项 x 的语义类相同,可以用 julie 去替换算子 λx 所约束的表达式里的 x,结果得到 love(pooh) (julie) ,这个过程称为兰姆达变换。类似地,a happy kid sings 里的 happy 运用兰姆达算子翻译为λPλx. happy(P) (x) ,其中 P 是(Ind→Bool) 类的变项,x 是 Ind 类变项。
最后以 Julie loves Pooh 为例,说明类型逻辑语法如何同步生成自然语言的句法和语义,实现组合性原则。Julie、love、Pooh 在词库中记录如下:Julie? julie: nplove?λyλx. love(y) (x) : np \ s / npPooh?pooh: np蒙太古语法用两张树图分别演示自然语言句法表达式和语义表达式的生成过程,上文提到这两者结构相同,到了类型逻辑语法就用一张树图同时演示,更好地体现了句法和语义严格对应、同步生成的运行机制。Julie loves Pooh 的句法和语义生成过程如下:
Lx 表示从词库提取出的词条,横线上是语形信息、横线下是逻辑翻译式和句法范畴,/E 和\E 表示顺向斜线消去和逆向斜线消去规则。loves 先跟右侧的 Pooh 组合,得到范畴为 np\s、翻译式为 λx. love(pooh) (x) 的表达式 loves Pooh,然后 loves Pooh 再跟左侧的 Julie 组合得到 Julie loves Pooh,其范畴为s,翻译式为 love(pooh) (julie) 。
本文论述了组合性原则及其对逻辑语法的重要意义,它既是逻辑语法和转换语法的分水岭,也是逻辑语法发展和嬗变的主要动因。范畴语法和高阶逻辑使得逻辑语法实现了句法和语义的严格对应和同步推演。
参考文献:
[1]冯志伟. 语言与数学[M]. 北京: 世界图书出版公司,2011: 182 - 183.
[2]邹崇理. 逻辑、语言和信息———逻辑语法研究[M]. 北京: 人民出版社,2002:14 -15.
[3]丁石孙,张祖贵. 数学与教育[M]. 大连: 大连理工大学出版社,2008:117.
[4]王 欣. 蒙太古语法与现代汉语虚词研究———以“的”为例[M]. 北京: 北京语言大学出版社,2012:6 -46.
[5]Morris M. An Introduction to the Philosophy of Language[M]. Cambridge: Cambridge University Press,2007:22.
[6]比 尼,陈 波,中川孝户治. 弗雷格、他的逻辑和他的哲学———迈克·比尼访谈录[J]. 世界哲学,2010 (2) :64 - 81.