一阶逻辑和λ-演算结合产生了广义量词理论。CCG使用广义量词理论表述自然语言的语义,因存在量词和全称量词之间存在的复杂语义依存关系而出现了各种各样的辖域歧义问题。比如,使用CCG可得到“每个男孩喜欢一个女孩”的两个语义表达式:∀y(By→∃x(Gx∧Lxy));∃x(Gx∧∀y(By→Lxy))(5)谓词B表示“是男孩”,G表示“是女孩”,L表示“喜欢”(Lxy表示“y喜欢x”)。。前者是存在量词取窄辖域的逻辑表达式,表示“每个男孩可能喜欢一个不同的女孩”;后者是存在量词取宽辖域的逻辑表达式,表示“每个男孩喜欢同一个女孩”,这就产生了辖域倒装问题。要解决辖域歧义问题,必须简化全称量词和存在量词之间的依存关系,Skolem提出了斯科伦项理论:删除公式中的存在量词,用斯科伦函项sk(x,y,z…)或常项sk( )取代存在量词约束的变元(6)L.Robaldo,“Skolem Theory and Generalized Quantifiers”,Wilfrid Hodges,Ruy de Queiroz,eds.,Logic,Language,Information and Computation,15th International Workshop,WoLLIC 2008,Edinburgh,UK,July 1-4,2008,Proceedings,Berlin:Springer,2008,pp.286-297.。Steedman发展了斯科伦项理论,引入了形如skEn:p;c的广义斯科伦项,其中Ε是环境,环境中的元素是管辖广义斯科伦项的全称量词约束的变元(7)E中元素取决于对某个非确定斯科伦项进行确定化运算时,管辖这个非确定斯科伦项的全称量词:假设这个非确定斯科伦项处于∀y的辖域内,那么E中元素为y;如果这个非确定斯科伦项处于∀y和∀z的辖域内,那么E中元素为y、z;如果这个非确定斯科伦项不处于任何全称量词的辖域内,那么E为空集。参见M.Steedman,Taking Scope:The Natural Semantics of Quantifiers,Cambridge,MA:The MIT Press,2012,p.48;M.Steedman,Combinatory Categorial Grammar:An Introduction,Philadelphia,PA:The SOMESUCH Press,2017,p.172.;p是使用λ-公式表述的名词性质,比如“女生”的逻辑性质为λx.Gx;n是名词短语出现的编号,目的是区分具有相同性质的不同个体,比如在“三个男生走路,三个男生坐车”中,前后出现的“男生”要用带不同编号的广义斯科伦项区分开来(不用区分时,n可省略);基数条件c表示像“三个”、“至多两个”和“大多数”这样的数量(基数为1时,c可以省略)。该语句开始出现的“三个男生”就可表述为sk{}1:λx.Bx;3,因为这个广义斯科伦项没有出现在全称量词的辖域内,故环境E是空集,这样的广义斯科伦项被称作广义斯科伦常项。如果环境非空,则得到广义斯科伦函项。广义斯科伦项skEn:p;c指称语义类型为e、性质为p的个体。众所周知,就辖域交替而言,包括复数在内的非全称量词与全称量词的表现非常不同,在处理方式上应该区分开来。Steedman继续用广义量词表述全称量词,而用广义斯科伦项表述所有非全称量词,形成了广义斯科伦项理论,并把它作为MMCCG的语义理论。在MMCCG中,“每个男孩喜欢一个女孩”的两种解读分别表示为:∀y(By→Lsk{y}λx.Gxy);∀y(By→Lsk{}λx.Gxy)。sk{}λx.Gx和sk{y}λx.Gx均表示具有性质G(是女孩)的个体,前者指一个确定的女孩,后者的指称可以随y的变化而变化。
三、MMCCG对汉语致使义“把”字句的处理
从语义结构上看,“把”字句表达致使结构,这种致使导致了某种结果的达成,可用Dowty的逻辑式ϕCAUSE(BECOME p)表述“把”字句(8)David R. Dowty,Word Meaning and Montague Grammar:The Semantics of Verbs and Times in Generative Semantics and in Montague’s PTQ,Dordrecht:D. Reidel Publishing Company,1979,pp.73-110.。这里 BECOME 是连接语句的一元内涵算子,有come about之意。令T是意指 and next 的动态算子,则 BECOME p 可定义为¬pTp。假若p表示“地干净”,则BECOME p意指“地变干净了”,即“地从不干净变为干净”。CAUSE 是连接语句的二元内涵算子,比如 ϕ CAUSE ψ,其中ϕ是一个BECOME语句或包含活动谓词的语句,ψ是一个BECOME语句。若ϕ表示“我拖地”,ψ表示“地变干净了”,ϕ CAUSE ψ(即ϕ CAUSE (BECOME p))则表示“我拖地使得地变干净了”。“我把地拖干净了”可表述为“拖′地′我′ CAUSE (BECOME干净′地′)”。由于致使义“把”字句的“致使义”直接来源于“把”,并且“把”前 NP 对应一个具有某个性质的个体,其语义表达式应为“∃Q(Qa CAUSE (BECOME Px))”。此公式表示:存在一个命题 Q(在语形上可能是事件命题短语也可能是一个事件名词),该命题使得具有某性质的个体x变化成具有P性质的状态。根据致使关系层数,致使义“把”字句可分为两种:表达双层致使关系的强致使义“把”字句和表达单层致使关系的弱致使义“把”字句。
(一)强致使义“把”字句
语句2a.疫情把我憋坏了。b.茅台把我喝醉了。在上面两个“把”字句中, “把”居于处置方式和处置结果之间,“把”后 VP 是不可控的,并且“把”前 NP 是一个事件(上述语句中的“把”前 NP 分别表示“疫情引起的事件”和“与茅台酒相关的事件”),该事件是整个致使行为的起因,这是致使义“把”字句的共性。此外,强致使义“把”字句表达三个事件之间的双层致使关系,其语义结构是:∃Q(Qa CAUSE (BECOME Px) CAUSE (BECOME Rx))Q 表示“把”前NP所指个体具有某个性质这样的事件,P 表示主要动词,R 表示结果动词或者结果补足语部分。此公式表示:某个事件 Q 使得某个变量x产生某个动作 P 或处于某种状态 P,而这个动作或者状态 P 又使这个变量x产生了某种结果 R。这种句式的意义可抽象概括为:一个致使关系导致另一个致使关系发生。“把”前成分无论是显性的还是隐性的(“把我气晕了”的“把”前成分是隐性的),都指示一个起因事件,该事件是第一致使事件,它导致另一个致使事件(V→R)发生。先在MMCCG框架中给出主要词汇的词条,如下所示:词条1疫情:=S把/(S把\NP):λf. f 疫情′;茅台:=S把/(S把\NP):λf. f 茅台′把1:=(S把\NP)/★S把:λqλz. ∃Q(Qz CAUSE (BECOME q))把2:=(S把\NP)/★(S把\NP):λPλz. ∃Q(Qz CAUSE (BECOME Pz))憋坏了:= S把\NP:λy. 憋′y CAUSE (BECOME 坏′y)喝醉了:= (S把\NP)\NP:λxλy. 喝′xy CAUSE (BECOME 醉′y)上述语句的推演如下:
语句3a.超市把苹果烂掉了。b.小宝把牙齿掉了。如同强致使义“把”字句,“把”前NP首先要表示致使事件(上述语句中的“超市”和“小宝”可分别表示“超市储藏不当”和“小宝换牙了”等事件)。此外,“把”前NP还是“把”后NP的所有者或责任者,具有纯名词短语性质。弱致使义“把”字句表示双事件之间的单层致使关系“∃Q(Qa CAUSE BECOME Pa)”,致使义显得“弱”,故称弱致使义“把”字句。词条2超市/小宝:=S把/(S把\NP):λf. f 超市′/小宝′把3:=(S把\NP)/★(S把\NP):λPλx.∃Q(Qx CAUSE(BECOME Px))苹果:=(S把\NP)/(S把\NP):λPλa. Pskλz.苹果′z∧有′za牙齿:=(S把\NP)/(S把\NP):λPλa. Pskλz.牙齿′z∧有′za图4 结果表示“与超市相关的某事件导致该超市的苹果烂了”,图5 结果表示“与小宝相关的某事件导致小宝自己的牙齿掉了”,既表达了致使性句式义,也实现了“把”前 NP 与“把”后 NP 的所有者关系。这里“把”的致使性语义表达式及“把”后 NP 的广义斯科伦项语义表达式起到了关键作用,用语义机制弥补了句法分析的不足,仅仅句法分析难以产生我们期望的结果。
(图4) MMCCG 处理弱致使义“把”字句一
(图5) MMCCG处理弱致使义“把”字句二
四、MMCCG对汉语处置义“把”字句的处理
处置义“把”字句也分为强处置义“把”字句和弱处置义“把”字句。
(一)强处置义“把”字句
强处置义“把”字句除具有前述处置义“把”字句的共性之外,它还有更精细的特征:“把”后NP是主要动词V的受事,如下面的语句所示:语句4a.小张把小王打伤了。b.你把问题弄复杂了。c.你把饭吃饱了。词条3小张:=S把/(S把\NP):λf. f张′;你:=S把/(S把\NP):λf. f你′把4:=(S把\NP)/★(S把\NP):λPλz.Pz打伤了:=(S把\NP)\NP:λxλy.打′xy CAUSE (BECOME 伤′x)弄复杂了:=(S把\NP)\NP:λxλy.弄′xy CAUSE (BECOME 复杂′x)吃饱了:=(S把\NP)\NP:λxλy.吃′xy CAUSE (BECOME 饱′y)小王/问题/饭:=(S把\NP)/((S把\NP)\NP):λg.g王′/问题′/饭′上述词条指派基于这样的考虑:①在处置义“把”字句中,基本句式义“致使性”不是由“把”前NP引起的,而是“把”使得V和R之间的直接致使关系得以发生,这个“致使义”信息编码在“把”后VP的词条上(而不是“把”字的词条上),即给VR指派“分解型”语义表达式来;②前两个语句的“把”后NP是R的感事,最后一个语句的“把”前NP是R的感事,这就需要在VR的词条中编码R的语义指向信息,使前两个语句的VR和最后一个语句的VR在语义上区别开来。“把”字范畴中的算子“★”规定“把”只能与“小王打伤了/问题弄复杂了/饭吃饱了”经由函项应用规则进行组合运算,不能与“打伤了/弄复杂了/吃饱了”经由函项复合规则进行组合运算,否则会生成“小张小王把打伤了”、“问题你把弄复杂了”、“饭你把吃饱了”等不合语法的汉语焦点句和话题句。因为函项复合规则在CCG中的应用不受限制,“把”能与“打伤了/弄复杂了/吃饱了”经由函项复合规则进行组合运算,进一步与“把”前两个NP进行运算,从而在CCG中可以成功地推演出这些病句的生成树图。MMCCG使用斜线模态算子使推演的第一步就无法进行,这就成功地抑制了CCG的过度生成能力。需要说明的是,在上述三个语句中,“弄复杂”只有在“把”字句中才能以词汇形式出现,即它是依赖于“把”的依存性VR或者说是准VR,这是“把”字句的致使性句式义来自“把”字的最有力证据。“打伤”和“吃饱”可以在“把”字句出现,也可以在施事主语句中出现,比如“小张打伤了小王”、“你吃饱了饭”等等,因此二者是自由类VR或者说是典型VR。基于这些词条,上述语句在MMCCG中的推演如图6—图8所示。从推演结果可知,与强致使义“把”字句有双层致使关系不一样,强处置义“把”字句只有单层致使关系。弱致使义“把”字句虽然也是单层致使关系,但其单层致使关系发生在“把”前NP和“把”后整个表达式表述的事件之间,而强处置义“把”字句的单层致使关系却发生在“把”后VP所包含的V与R之间。图6结果表示“小张打小王导致小王伤了”。图7结果表示“你弄问题导致问题复杂了”,R(“伤”和“复杂”)的所指是“把”后NP(“小王”和“问题”)。图8结果表示“你吃饭导致你饱了”,而R(“饱”)的所指是“把”前NP(“你”)。最后得到的语义表达式既表达了“把”字句的致使性句式义,也实现了“把”后VP中V与R的语义所指关系,并把前两个VR和第三个VR区分开来。这里给“把”后VP指派的“分解型”语义表达式起到了至关重要的作用,真正做到了用语义机制弥补句法分析的不足,仅仅句法分析无法把前两个VR(打伤了、弄复杂了)和第三个VR(吃饱了)区分开来。
(图6) MMCCG处理强处置义“把”字句一
(图7) MMCCG 处理强处置义“把”字句二
(图8) MMCCG 处理强处置义“把”字句三
(二)弱处置义“把”字句
在强处置义“把”字句(如“小张把小王打伤了”)中,“把”后 NP 是主要动词 V 的受事(“小王是打的受事”)。而在弱处置义“把”字句中,“把”后 NP 不是主要动词 V 的受事,比如:语句5a.你把我哭醒了。b.你把筷子吃坏了。词条4你/我/筷子:=S把/(S把\NP):λf. f你′/我′/筷子′;把4:=(S把\NP)/★(S把\NP):λPλz.Pz哭醒了:= (S把\NP)\NP:λxλy.哭′x CAUSE (BECOME 醒′y)吃坏了:= (S把\NP)\NP:λxλy.吃′sk{x}λz.high′(prior′(吃′zyx))yx CAUSE (BECOME 坏′y)吃′zyx 表示“x用′y吃′z”。对于上述词条,需要说明几点:第一,虽然“哭”、“醒”都是一元谓词,但构成的动补结构“哭醒”变成二元谓词,因为“哭”的施事和“醒”的感事不同。第二, 动词“吃”在语句中找不到受事,因此用下面的广义斯科伦项sk{x}λz.high′(prior′(吃′zyx))表示这个受事,它指谓施事x最常吃的对象z,环境中的元素是施事x。第三,“把”字范畴中的算子“★”规定“把”只能与“我哭醒了/筷子吃坏了”经由函项应用规则进行组合运算,不能与“哭醒了/吃坏了”经由函项复合规则进行组合运算,否则会生成“你我把哭醒了”、“你筷子把吃坏了”、“筷子你把吃坏了”等不合语法的汉语焦点句和话题句。因为函项复合规则在CCG中的应用不受限制,“把”可与“哭醒了/吃坏了”经由函项复合规则进行组合运算,进一步与“把”前两个NP进行组合运算,从而在CCG中可以成功地推演出这些病句的生成树图。MMCCG使用斜线模态算子使推演的第一步就无法进行,这就成功地抑制了CCG的过度生成能力。基于这些词条,上述语句在MMCCG中的推演如图9—图10所示。从推演结果可知,与强处置义“把”字句和弱致使义“把”字句一样,弱处置义“把”字句也只有单层致使关系。图9结果表示“你哭致使我醒了”,图10结果表示“你用筷子吃东西导致筷子坏了”,致使关系发生在“把”后V和R之间,这与弱致使义“把”字句的致使关系发生在“把”前NP和“把”后表达式之间不一样。另外,“把”后NP(“我”和“筷子”)不是主要动词V(“哭”和“吃”)的受事,这与强处置义“把”字句中V的语义指向关系不一样。推演结果既表达了“把”字句的致使性句式义,也实现了“把”后VP中V与R的所有语义所指关系。“把”后VP的“分解型”语义表达式起到了关键性作用,用语义机制弥补了句法分析的不足,仅仅句法分析无法得到V与R的所有语义所指关系。
语句7我把小宝打得手肿了。这个语句也有两个解读:一个是“我打小宝,结果小宝的手肿了”;另一个是“我打小宝,结果我的手肿了”。这一语句的歧义性是否也是源于不同解读导致该语句所属种类不同而产生的呢?分析该句可知,这里的“把”不可换成“使”,而且“把”前NP “我”是“打”的施事,故该语句只能是处置义“把”字句。因此,还用处理第一个歧义句的方法处理这个歧义句行不通,必须另辟蹊径。鉴此,我们还是在词条指派上下功夫,如下所示:词条7我:=S把/(S把\NP):λf. f我′;把4:=(S把\NP)/★(S把\NP):λPλz. Pz小宝:= (S把\NP)/((S把\NP)\NP):λg. g小宝′手肿了:= S把\NP:λa.肿′skλz.手′z∧有′za;打:= (S把\NP)\NP:λxλy.打′xy.得1:=(((S\NP)\NP)★\((S\NP)\NP))/★(S\NP):λQλPλvλw. Pvw CAUSE (BECOME Qv)得2:=(((S\NP)\NP)★\((S\NP)\NP))/★(S\NP):λQλPλvλw. Pvw CAUSE (BECOME Qw)需要说明的是,上述词条“得”字范畴中的S都带右下标“把”,在书写中因空间小而省略了。除此之外,上述词条还有三点需要说明:第一,上述歧义源于“手”的所有者,故“手肿了”的词条指派应该能够使“手”的范畴与其所有者的范畴进行运算,从而实现领属关系。广义斯科伦项为此打开了方便之门,规定“手”的语义表达式为λa.skλz.手′z∧有′za。第二,通过给“得”指派不同词条解决“手”的所有者歧义问题:当使用词条“得1”时,产生第一种解读,即“手”的所有者是“把”后“小宝”;当使用词条“得2”时,得到第二种解读,即“手”的所有者是“把”前“我”。第三,“把”和“得”的句法范畴上的斜线模态词“★”是为了阻止它们作为主函子参与函项复合运算,否则会生成CCG许可的“我小宝打得手肿了”和“小宝我打得手肿了”等不合语法的汉语焦点句和话题句。有了这些词条,上述“把”字句的处置义解读分析如图13—图14所示。图13、图14的推演结果分别表示“我打小宝致使小宝的手肿了”、“我打小宝致使我的手肿了”,不仅刻画了处置义“把”字句的单层致使关系,还分别实现了“我”和“小宝”对“手”的领属关系。“得”和“手肿了”的语义表达式起了关键作用,广义斯科伦项也功不可没,用语义机制弥补了句法分析的不足,仅仅句法分析无法得到这些领属关系,因而也就无法处理这类歧义句。
(图13) “把”后NP为所有者的歧义性“把”字句解读推演图
(图14) “把”前NP为所有者的歧义性“把”字句解读推演图
六、结语
人工智能AI指用人工方法在计算机上实现的智能,是人类智能在机器上的模拟,目前已成为世界主要发达国家高度关注的前沿和热点领域。要实现人与机器交流之目的,须让机器理解人类的自然语言,正如人工智能领域盛行的一句名言:“让计算机理解自然语言是人工智能皇冠上的明珠。”Turing在《机器能思维吗》一文提出:“检验计算机智能高低的最好办法是让计算机来讲英语和理解英语。”(10)冯志伟:《用数学逻辑之美揭示语言结构之妙——谈谈语言学中的数学方法》,《光明日报》2017年7月9日,第12版。自然语言理解(Natural Language Understanding,NLU)是人工智能的核心目标之一,被认为是人工智能最困难和最具标志性的任务。要使计算机理解自然语言,必然涉及到自然语言处理(Natural Language Processing,NLP)。因此,NLP探讨的焦点落在自然语言的语义上,计算机如何表征、分析和理解自然语言的语义成为人工智能一个关键问题,在NLP的追梦时代必然产生以表述自然语言语义为目标的逻辑语义学。汉语“把”字句是汉语十大典型句型之一,出现的频率非常高,而且非常复杂,处理汉语“把”字句一直是语言学、逻辑学和自然语言信息处理领域的研究重点和难点。MMCCG认为“把”不是介词或动词,而是功能性标句词,并采用了使相邻句法成分进行毗连组合从而生成句法-语义树的方法表明“把”字句具有原生成性,且在语义表达式中显示出各个“把”字句具有的致使性句式义和不同的致使关系结构,成功地解决了一些“把”字句产生的歧义性问题。MMCCG包含的模态算子从句法上阻止了不合语法的带“把”字汉语焦点句和话题句,成功地抑制了CCG的过度生成能力;广义斯科伦项则从语义上实现了各类“把”字句中所有者对中心语的领属关系,成功地解决了因领属关系而产生的“把”字句歧义性问题,在语义分析上弥补了CCG刻画“把”字句的不足之处。MMCCG是CCG的升级版,它是更加彻底的词汇主义语法,对句义的刻画程度比CCG深,是目前自然语言信息处理的理想工具,具有广阔的发展前景。