謂詞與集合

從個體到謂詞/集合

在形式語義學中,「真值」(truth value)和「個體」(individual)是兩個最基本的「實體」(entity)。真值反映句子的真假,包含1 (代表「真」)和0 (代表「假」)這兩個值。個體則是指當前論域中的元素,可以指人也可以指物,一般會用專名或者小寫字母代表個體。當代形式語義學乃建基於「類型論」(Type Theory),因此非常重視各種表達式的類型,使用專用的符號t和e分別代表真值和個體這兩個實體類型。

從以上兩個基本實體可以通過函數此一概念得到其他眾多表達式的類型。在類型論中,如果α和β是類型符號,則αβ是把類型為α的表達式映射為類型為β的表達式的函數的類型,其中類型為α的表達式稱為這個函數的「論元」(argument),類型為β的表達式則稱為「值」(value)。舉例說,et就代表以個體為論元並以真值為值的函數,亦即把個體映射為真值的函數。在形式語義學上這種函數稱為「一元謂詞」(unary predicate,以下簡稱「謂詞」),用來代表個體的行為/屬性。

以下用一個簡單的例子來讓讀者明白。為簡化以下的討論,以下的論域所包含的個體全都是人。現設當前的論域有三個個體:j、b和m,分別代表John、Bill和Mary,並且有代表「唱歌」的謂詞sing,那麼可以把以下兩句:

John sang.     (1)
Mary did not sing.     (2)

表達成以下表達式:

sing(j) = 1     (3)
sing(m) = 0     (4)

以上所說的謂詞是最典型的一元謂詞,此外還有「二元謂詞」(binary predicate)。這些謂詞具有類型e2t,這裡e2代表由個體組成的「有序對」(ordered pair),例如(m, b)就是一個有序對,因此二元謂詞就是把個體的有序對映射為真值的函數。以前述論域為例,設有代表「愛」的二元謂詞love,那麼可以把下句:

Mary loves Bill.     (5)

表達成以下表達式:

love((m, b)) = 1     (6)

在形式語義學上,謂詞與集合(set)互相對應,這是因為把謂詞作用於個體有兩個結果:1和0;而個體相對於集合也有兩個關係:「屬於」(記作∈)和「不屬於」(記作∉),這裡的1和0正好分別對應「屬於」和「不屬於」。由此我們有以下對應關係:設x為個體,X為謂詞,並把對應謂詞X的集合也記作X,那麼我們有X(x) = 1當且僅當x ∈ X。這樣,前面的(3)、(4)和(6)便也可以表示成以下表達式:

j ∈ sing     (7)
m ∉ sing     (8)
(m, b) ∈ love     (9)

儘管函數和集合是不相同的數學概念,嚴格地說,應區分謂詞(即函數) sing和代表sing的集合(有些人把這個集合記作sing'),但在某些場合下,也不妨把這兩個概念交叉使用(即不區分sing和sing')。在這種做法下,et既代表以個體作為論元的謂詞,也代表以個體作為元素的集合。

量詞(即二階謂詞/集合)

接下來考慮以下這句:

Everybody sang.     (10)

根據前面的討論,sing作為具有類型et的謂詞/集合,必須以個體作為其論元/元素,但在上句中,"everybody"顯然不是個體,因為它不是指某一個人,而是指一群人,因此不能用類似(3)或(7)的表達式表達上句。

當代形式語義學的處理方法是把everybody處理成具有類型(et)t的二階謂詞/集合,即以具有類型et的謂詞作為論元的謂詞,或者以具有類型et的集合作為元素的集合。具有(et)t類型的二階謂詞/集合在當代稱為「廣義量詞」(generalized quantifier,以下簡稱「量詞」),正是當今廣義量詞理論的研究對象。利用此一概念,可以把上句表達成以下兩式之一:

everybody(sing) = 1     (11)
sing ∈ everybody     (12)

接著讓我們把以上兩式與前面的(3)和(7)作比較。在(1) 和(10)中,"sang"都是句中的謂語,但代表這個動詞的謂詞sing在(3)和(11)中卻分別充當不同的角色:在(3)中sing的主要角色是充當謂詞,但在(11)中sing的主要角色卻是充當另一謂詞的論元。另外,在(7)中,sing可被看成「唱歌者」集合,(7)是說「John是唱歌者之一」。在(12)中,everybody則可被看成「所有人都具有的行為/屬性的集合」,(12)是說「唱歌是所有人都具有的行為/屬性之一」。換句話說,在(7)中sing的主要角色是充當集合,但在(12)中sing的主要角色卻是充當另一集合的元素。

至此我們看到,"John"和"everybody"雖然都是名詞詞組,但兩者被分別處理成具有類型e和(et)t的表達式。在自然語言應用中,有時我們要表達像"John and at least 2 girls"這樣的並列名詞詞組,但在形式語義學中,不同類型的表達式不能進行並列運算。為解決這個問題,Montague提出在有需要時把專名(例如"John")的類型從e提升為(et)t。經「類型提升」(type raising)後,代表"John"的表達式從個體變成量詞,這種量詞在學界稱為「蒙太格個體」(Montagovian individual)。以下把代表"John"的蒙太格個體記作Ij,它代表把表示John行為/屬性的謂詞映射為1的謂詞,或者以表示John行為/屬性的集合作為元素的集合。利用此一概念,可以把(1)表達成以下兩式之一:

Ij(sing) = 1     (13)
sing ∈ Ij     (14)

把(14)與(7)比較,(7)是說「John是唱歌者之一」,(14)則是說「唱歌是John具有的行為/屬性之一」,這是從不同角度對同一件事的陳述。

除了以上介紹的具有(et)t類型的量詞如everybody、Ij等之外,自然語言中還有從量詞派生出來的表達式,其中最常用的是具有(et)((et)t)類型的表達式,稱為「限定詞」(determiner),如every、some,at least 2等。從限定詞的類型(et)((et)t),可知它們是把謂詞/集合映射為量詞的函數,或者說,把限定詞作用於謂詞/集合,可以得到量詞。

舉例說,把限定詞at least 2作用於謂詞/集合girl,便可得到量詞at least 2(girl),因此以下句子

At least 2 girls sang.     (15)

可以表達成以下兩式之一:

at least 2(girl)(sing) = 1     (16)
sing ∈ at least 2(girl)     (17)

在上例中,與量詞at least 2(girl)互動的是(一元)謂詞/集合sing。如果是二元謂詞/集合,情況便會較為複雜,請看以下句子:

John loves everybody.     (18)

在上句中,"love"可用二元謂詞/集合love代表。但二元謂詞/集合的類型是e2t,無法與具有類型(et)t的量詞Ij或everybody互動,這裡出現了「類型錯配」(type mismatch)的問題。

為解決上述問題,Keenan等學者提出「減元算子」(arity reducer)的概念。對應每個量詞Q,都有兩個減元算子Qnom和Qacc,這兩個函數具有類型(e2t)(et),其作用是把二元謂詞/集合的元數(即2)減1。具體地說,把這些減元算子作用於具有類型e2t的二元謂詞/集合X,所得結果是具有類型et的(一元)謂詞/集合Qnom(X)或Qacc(X),其中Qnom所代表的名詞詞組充當X中的主語,Qacc所代表的名詞詞組則充當X中的賓語(註1)。經上述「減元」操作後,上述類型錯配問題便告消失,Qnom(X)或Qacc(X)可以與另一量詞互動。

以(18)為例,如把減元算子everybodyacc作用於love,所得結果everybodyacc(love)是一個(一元)謂詞/集合,其中everybodyacc所代表的名詞詞組"everybody"充當"love"的賓語,即"everybody"在這裡是「被愛者」。由此可知表達式everybodyacc(love)是代表「愛所有人」此一屬性的謂詞/集合,具有類型et,可以作為具有類型(et)t的量詞Ij的論元/元素,因此(18)可以表達成以下兩式之一:

Ij(everybodyacc(love)) = 1     (19)
everybodyacc(love) ∈ Ij     (20)

請注意如把(18)改為下句:

John is loved by everybody.     (21)

便要把以上兩個表達式改為以下兩式:

Ij(everybodynom(love)) = 1     (22)
everybodynom(love) ∈ Ij     (23)

其中everybodynom(love)是代表「被所有人愛」此一屬性的謂詞/集合。

提升動詞詞組(即三階謂詞/集合)

接下來考慮以下這句:

Everybody helped each other.     (24)

上句跟前面的例子有兩個重大差異。首先,直觀地看,“helped each other”可以表達成以下二元集合(也可把下式寫成謂詞的形式,但因涉及某些技術細節,茲從略):

{(x, y): x ≠ y → {(x, y), (y, x)} ⊆ help}     (25)

上式表示由具有以下性質的有序對(x, y)組成的集合:若x不等於y,則x幫助y並且y幫助x。這裡包含條件「若x不等於y」,這是因為「互相幫助」此一概念並不包含「自己幫助自己」的意思(但也不排除此一情況)。由於(25)是具有類型e2t的二元謂詞/集合,它無法與具有類型(et)t的量詞everybody互動,這裡又出現類型錯配的問題。其次,由於each other不是量詞,不存在相對應的減元算子each othernom和each otheracc,因此不能用類似(19)/(20)的表達式處理(24)。

為解決上述問題,Zuber提出把each other處理成一種具有類型(e2t)(((et)t)t)的「廣義名詞詞組」(generalized noun phrase)。雖然"each other"是名詞詞組,但不能出現於主語位置,因此不能跟一般名詞詞組那樣處理成量詞,而要處理成廣義名詞詞組。

由於each other具有類型(e2t)(((et)t)t),可以先把each other作用於具有類型e2t的二元謂詞/集合help,所得結果each other(help)具有類型((et)t)t (註2),正可與具有類型(et)t的量詞everybody互動,至此我們看到可以把(24)表達成以下兩式之一:

each other(help)(everybody) = 1     (26)
everybody ∈ each other(help)     (27)

請注意"helped each other"雖然是動詞詞組,但上式中的each other(help)的類型卻是((et)t)t而非普通動詞詞組(例如"sang")的類型et,因此each other(help)是一種「提升動詞詞組」(raised verb phrase),即以量詞作為論元/元素的三階謂詞/集合。正由於其類型被提升了,each other(help)在以上兩式中充當謂詞/集合的角色,而everybody則退居論元/元素的角色。至此有以下層層遞進的關係:謂詞/集合以個體為論元/元素,量詞以謂詞/集合為論元/元素,而提升動詞詞組則以量詞為論元/元素。

至此我們看到,"sang"和"helped each other"雖然都是動詞詞組,但兩者被分別處理成具有類型et和((et)t)t的表達式。在自然語言應用中,有時我們要表達像"sang and helped each other"這樣的並列動詞詞組。為此,Zuber提出在有需要時把普通動詞詞組(例如"sang")的類型從et提升為((et)t)t。這種經類型提升的動詞詞組不妨稱為「蒙太格動詞詞組」(Montagovian verb phrase)。以下把代表sing的蒙太格動詞詞組記作Ising,它代表把包含sing的量詞映射為1的謂詞,或者以包含sing的量詞作為元素的集合。利用此一概念,可以把(1)表達成以下兩式之一:

Ising(Ij) = 1     (28)
Ij ∈ Ising     (29)

至此讀者應可看到,可以用三組表達式表示(1),這三組表達式是(3)/(7)、(13)/(14)和(28)/(29),它們各有特定的適用場合。下圖展示這三組表達式的句法結構和語義類型(紅字)。讀者應能從下圖看到,表達式的類型決定了哪一表達式是謂詞/集合,哪一表達式是論元/元素,這就是類型論的重要作用。

現把前面討論過的四大類表達式的名稱、類型和例子總結成下表:

名稱類型例子
個體ej
謂詞/集合etsing
量詞(即二階謂詞/集合)(et)tIj
提升動詞詞組(即三階謂詞/集合)((et)t)tIsing

謂詞/集合的定義方法

在這最後一節,我們會透過謂詞/集合的定義方法來看這兩個概念的對應關係。一般來說,謂詞/集合有兩種定義方法。第一種方法是「窮舉法」。就謂詞而言,這種方法就是把論域中各個個體在相關謂詞的作用下所得的值全部列出來。就集合而言,這種方法就是把論域中屬於相關集合的元素全部列出來。仍以前述僅包含三個人的論域為例,設在這個論域中,只有John和Bill唱歌,那麼可以定義謂詞sing和集合sing如下:

sing = j ↦ 1; b ↦ 1; m ↦ 0     (30)
sing = {j, b}     (31)

在集合論上,(30)稱為(31)中集合的「特徵函數」(characteristic function),這個函數把(31)中屬於集合sing的個體都映射為1並且把其他個體都映射為0,其中的↦便代表「映射為」。請注意如果規定在以窮舉法定義某謂詞時,只需列出論域中在該謂詞的作用下所得值為1的個體,並同時約定沒有列出來的個體均為在該謂詞的作用下所得值為0的個體,那麼(30)中的m ↦ 0這條式子便是可以刪除的冗餘信息。刪除此一信息後,(30)與(31)便完全對應。

第二種定義方法是「描述法」。就謂詞而言,這種方法就是用數式描述把相關謂詞作用於任意論元所得的真值。在形式語義學上,這種定義方法常要用到λ表達式。λ表達式具有以下一般形式:

λx[C(x)]     (32)

其中x是代表論元的變項,C(x)則代表把這個謂詞作用於x所得的真值。如果把上式作用於某個常項a,會得到以下結果:

λx[C(x)](a) = C(a)     (33)

上述運算稱為「λ-還原」(λ-reduction),其運算步驟很簡單,就是去掉(32)中外層的λx[...],並把常項a代入C(x)中的變項x,從而得到C(a)。

舉例說,以下是量詞Ij作為謂詞的定義(其中X是具有類型et的變項):

Ij = λX[X(j)]     (34)

上式是說,Ij是這樣的函數,把它作用於具有類型et的變項X後,所得結果Ij(X)的真值等於X(j)的真值。接著讓我們用(33)計算Ij(sing)的真值:

 Ij(sing)
=λX[X(j)](sing)
=sing(j)     (35)

上面第三行的結果是這樣計算出來的:去掉第二行式子中外層的λX[...],並把sing代入X(j)中的變項X,從而得到sing(j)。上述結果是說,Ij(sing)的真值等於sing(j)的真值。這是合理的,因為如前所述,sing(j) = 1和Ij(sing) = 1是(1)的兩種表示方法。

就集合而言,描述法是指用數式描述屬於相關集合的元素,這種數式具有以下一般形式:

{x: C(x)}     (36)

其中x是代表元素的變項,C(x)則代表屬於這個集合的元素所須滿足的條件,請注意(36)跟(32)非常相似。此外,根據集合的定義,我們也有以下關係:

a ∈ {x: C(x)} ⇔ C(a)     (37)

上述關係可以直觀地理解如下:由於{x: C(x)}是由所有滿足C(x)的項x組成的集合,常項a屬於這個集合當且僅當C(a)成立。請注意(37)跟(33)也非常相似。

舉例說,以下是量詞Ij作為集合的定義(其中X是具有類型et的變項):

Ij = {X: j ∈ X}     (38)

上式是說,Ij是包含j的集合的集合。接著讓我們用(37)推演sing ∈ Ij的條件:

 sing ∈ Ij
sing ∈ {X: j ∈ X}
j ∈ sing     (39)

請注意(39)與(35)的推演過程和結果都很相似,再一次顯示集合與謂詞存在互相對應的關係。

註1:這裡的下標nom和acc分別是「主格」(nominative case)和「賓格」(accusative case)的簡稱。

註2:換句話說,這裡的處理方法是不把"helped each other"表達成(25)那樣的具有類型e2t的二元集合(或相應的二元謂詞),而是把"helped each other"表達成具有類型((et)t)t的表達式each other(help)。

返回語言學專題