短语结构制导的 范畴表达式演算 白 硕 赵章界 中国科学院计算技术研究所 2004年7月
有一种东西叫意义? 符号,最根本的属性是“牺牲自己、代表别人” 语义学,顾名思义,研究的是符号的意义,也就是被符号代表的那个“别人”,即它的“所指” 如果符号和它的意义完全同构,研究符号本身就足够了,可惜即使在数学中,这一点都做不到 在自然语言中,不确定的指称、不确定的角色指派、失败的举一反三,让我们寄希望于意义
不确定的指称 鸡 停止了进食 鸡 不吃了 不吃 鸡 这种食物了 符号的世界 意义的世界
不确定的角色指派 张三 李四 坦白交待 找 去 张三 李四 坦白交待 找 去 张三 李四 坦白交待 找 去
不成功的举一反三 看了三天就腻了 开始看 腻了 看了三天就忘了 看完了 忘了
计算机处理语言一定需要意义? 计算机处理自然语言,面对着各个层次上的不确定性 之所以需要意义和(传统意义上的)语义学,正是由于这些不确定性 直接在这些不确定性的驱动下设计具有恰当区分能力的标签(标注)体系,在这一过程中不排除借鉴意义的世界中的若干要素,可能是一种更有效的做法
“权宜的”语义学 我无需关心意义的世界到底有什么 我无需努力去“重构”意义的世界,为它建立什么模型 我只需为大大小小的符号串贴一些“人为的”、“权宜的”标签,在这种标签之间定义一种演算,做到: 我们在意义的世界里感受到多少种不确定的指称,这种演算一定会给出多少套不同的标签 我们在意义的世界里感受到多少种不确定的角色指派,这种演算一定会在标签之间建立多少种结构制约关系 那么,从计算的角度看,这种演算就可能是成功的
这种标签演算体系应该—— 有层次(反映标签之间的上下位关系) 有结构(反映成分间基于标签的结合关系) 有运算(构造正确的标签组合) 有约束(构造时满足并传播特定约束条件) 有弹性(利用结构中满足特定条件的标签) 有顺序(利用标签在结构中的顺序信息)
范畴表达式演算正中下怀 有层次(偏序) 有结构(带空穴的复杂标签) 有运算(特化、泛化、约分) 有约束(填入空穴时的匹配约束,空穴与其他标签的绑定约束,句法规则对填入空穴的方式的约束) 有弹性(可以指定与标签匹配的空穴) 有顺序(可以指定与标签匹配的左数/右数第几个空穴)
有层次——基本范畴的继承关系 …… top entity relation obj mental event boolean animate food 基本范畴集合和它上面的偏序关系构成一非空的、可数的、有界完备的偏序集合 …… human
有结构——复杂范畴 如果a,b1,b2,…,bn是范畴,那么a/ b1,b2,…,bn也是范畴,其中a称为中心范畴, b1,b2,…,bn称为空穴 如果一个复杂范畴的空穴被相应范畴或其特化范畴所填充,那么这个复杂范畴就变成它的中心范畴 a b1 b2 bn 空穴
有运算——特化与泛化 在基本标签集合中,下位标签与上位标签可进行特化(⊙ )运算,结果为下位标签。例如: Entity ⊙ human = human 在基本标签集合中,任何两标签可进行泛化(∨ )运算,结果为二者的最小公共上位标签,也就是说,基本标签集合和它上面的泛化运算构成一半格。例如: Human ∨ food = obj
有运算——约分 * * 类比:物理学中的“量纲” animate Event / animate, food food animate
有约束——继承、绑定、规则 引入了偏序结构上的约分机制,扩充了约分对象 取消了范畴语法中机械依赖语序的左右除法和左右约分 引入了范畴之间的绑定关系,借鉴中心词的继承,扩充了约分效果的影响范围 引入了短语结构制导机制,利用短语结构规则对范畴的限定关系,缩小了候选约分运算的范围
绑定约分 * * 绑定约分利用下标,解决约分过程中范畴之间的同步关系 红[obj/obj] 太阳[astro] 背景:中心词从分母向分子传播,以及长距离相关 剩下的是obj,不是astro! 都变成astro 红[obj<1>/obj] * 太阳[astro<1>] 增加了下标以后,所有下标相同的范畴表达式要同步地刷新特化结果
短语结构制导的约束规则 * * 谁跟谁约分? 句法层的强制约束,可以传导到范畴表达式演算中来,缩小演算中的不确定范围 好[entity/entity] * 爸爸[human/human] *一个好人的爸爸 好[entity/entity] * 爸爸[human/human] 一个人的爸爸是好的 NP[entity<1>] *AP[entity<1>/entity] NP[entity<1>/C()]
“爸爸妈妈”这个短语结构的范畴表达式,既不负载在“爸爸”上面,也不负载在“妈妈”上面,而是负载在整个短语结构上面 空成分负载结构的情况 联合结构 “爸爸妈妈”这个短语结构的范畴表达式,既不负载在“爸爸”上面,也不负载在“妈妈”上面,而是负载在整个短语结构上面 NP[entity]NP[entity] null[entity/entity,entity] NP[entity] 爸爸[human/human] 妈妈[human/human]
述补结构的范畴表达式,既不负载在述语上面,也不负载在补语上面,而是负载在整个短语结构上面 空成分负载结构的情况 述补结构 述补结构的范畴表达式,既不负载在述语上面,也不负载在补语上面,而是负载在整个短语结构上面 V[Event/C(entity)] A[Boolean/entity] VP[Boolean/C()]V[Event/C(Entity)] Null[(Boolean<1>/C(Entity<2>) /(Event/C(Entity<2>)), Boolean<1>/Entity<2>] A[Boolean/Entity]
有弹性,有顺序——定位因子 从范畴表达式的抽象“分母”上提取特定类型的空穴进行约分运算 了:(boolean/C())/(relation /C()) (只表示抽象分母) 把:(Event/C())/Entity, Event/C<1#>(Entity) (从抽象分母中提取右数第一个Entity范畴) 被:(Event/C())/Entity, Event/C<#1>(Entity) (从抽象分母中提取左数第一个Entity范畴)
理论渊源 范畴语法 配价理论 类型-逻辑语义学 依存语法
短语结构如何制导 主谓结构 述宾结构 述补结构 联合结构 偏正结构(定中) 偏正结构(状中) 介宾结构 连谓结构(连动) 连谓结构(兼语) 双宾结构 的字结构 把字结构 被字结构 给字结构 在字结构 所字结构 时态结构 数量结构……
王冕死了父亲 王冕死了父亲{S}[/boolean] 主谓 死了父亲{VP}[/boolean/human] 述宾 死了{VP}[/boolean/animate] 时态 死{V}[event/animate] 父亲{NP}[human/human] 王冕{NP}[human] 了{了}[boolean/relation]
坐着{VP}[boolean/animate] 台上坐着主席团 台上坐着主席团{S}[boolean] 主谓 Null[boolean/place,boolean] 坐着主席团{VP}[boolean] 述宾 坐着{VP}[boolean/animate] 时态 坐{V}[event/animate] 主席团{NP}[human] 台上{NP}[place] 着{着}[boolean/relation]
卖盐的 卖盐的{S}[human/human] 的字 卖盐{VP}[event/human,human] 述宾 卖{V}[event/human, human,obj] 盐{N}[obj] 的{的}[entity<1>/(relation/C<#1>(entity<1>))]
我是县长派来的 我是县长派来的{S}[boolean] 主谓 是县长派来的{VP}[boolean/entity] 述宾 是{V}[boolean/entity, entity] 县长派来的{NP}[ human]) 的字 的{的} entity<1>/(relation/C<#1>(entity<1>)) 县长派来{VP}[event/human<1>] 主谓 派来{VP}[event/human, human<1>] 述补 派{V}[(event/C())/human, human<1>, relation/C(human<1>)] 我{NP}[Human] 县长{NP}[human] 来{V}[event/mobile]
这些馒头把我吃胖了 这些馒头把我吃胖了{VP}[boolean] 主谓 把我吃胖了{VP}[boolean/food] 状中 把我{PP}[(relation<1>/C())/relation<1>/C<1#>(Human)] 介宾 把:(relation<1>/C())/Entity<2>, relation<1>/C<1#>(Entity<2>) 我{N}[human] 吃胖了{VP}[boolean/animate, food] 时态 吃胖{VP}[boolean/animate, food] 了{了}[boolean/relation] 述宾 这些馒头{NP}[food] 吃{V}[event/animate, food] 胖{A}[boolean/animate]
他被地主放狗咬了 被地主放狗咬了:event 主谓 他{NP}[human] 被地主放狗咬了:event/entity 状中 被地主:(relation/C())/human<1>, relation/C<#1>(human<1>) 介宾 被:(relation/C())/Entity, relation/C<#1>(Entity) 地主{NP}[human] 放狗咬了{VP}[(event/entity)/human] 兼语 放{V}[(event/C())/human, animate<1>, relation/C(animate<1>)] 狗{NP}[animate] 咬了{VP}[boolean/animate, entity] 时态 咬{V}[event/animate, entity] 了{了}[boolean/relation]
语义指向——树砍光了 树砍光了{S}[boolean/human, tool] 树{NP}[plant] 砍光了{VP}[boolean/human,obj,tool] 砍光{VP}[boolean/human,obj,tool] 了{了}[boolean/relation] 砍{V}[event/Human,obj, tool] 光{A}[boolean/entity] Null[(Boolean<1>/C(Entity<2>) /(Event/C(Entity<2>)), Boolean<1>/Entity<2>]
语义指向——他砍累了 他砍累了{S}[boolean/obj, tool] 他{NP}[human] 砍累了{VP}[boolean/human,obj,tool] 砍累{VP}[boolean/human,obj,tool] 了{了}[boolean/relation] 砍{V}[event/Human,obj, tool] 累{A}[boolean/animate] Null[(Boolean<1>/C(Entity<2>) /(Event/C(Entity<2>)), Boolean<1>/Entity<2>]
语义指向——刀砍钝了 他砍累了{S}[boolean/human,obj,] 刀{NP}[tool] 砍钝了{VP}[boolean/human,obj,tool] 砍钝{VP}[boolean/human,obj,tool] 了{了}[boolean/relation] 砍{V}[event/Human,obj, tool] 钝{A}[boolean/tool] Null[(Boolean<1>/C(Entity<2>) /(Event/C(Entity<2>)), Boolean<1>/Entity<2>]
泛化运算的消岐作用 张三和李四的书包{NP}[stationary] 张三和李四的书包{NP}[obj] 张三和李四{NP}[human] 的{的}[entity/entity] 书包{NP}[stationary] 和 {和}[entity<1> ∨ entity<2>/entity<1>,entity<2>] 张三{NP}[human] 李四{NP}[human]
总结 我们提出了一套标签演算体系 它继承了范畴语法、配价理论、类型-逻辑语义学、依存语法的优点 它可以在传统的表层语法框架内,更好地捕捉成分之间相互作用,从不确定的指称、不确定的角色指派中最终筛选出接近直观的结果 它有明确的、可检验的计算机制
Thanks. Any question? 请发邮件至 bai@ncic.ac.cn 与我联系