|||
我:不过,一般人不这样说话的,更常见的说话应该是: “他们把杀害孩子父亲的同伙抓到了”
白:这个简化有问题:“他们把杀害孩子父亲的同伙抓到了”。我说的意思是“父亲的同伙”。
要说什么知识能在“孩子的父亲”和“父亲的凶手”争抢“父亲”时选择“孩子的父亲”,我觉得统计就可以。再多就重了。同理,在“孩子的凶手”和“凶手的同伙”之间,选择后者的原因也可以仅仅是统计。当然,我们可以写一条词例化规则,名词“凶手”优先接受“含坑谓词+的”类型定语的修饰。
“N1的N2”做个双向的协同推荐,多大个事儿。
但“同伙”处理起来比“凶手”头疼。“凶手”和谓词有更紧密关联,但毕竟是可以独当一面的。但“同伙”却要求一个名词(或名词短语)作为先行词,也就是说“同伙”隐含了一个坑,让一个名词往里跳。(参考:“同伙都招了,你还在这死扛,有意思吗?”)
我: 怎么讲? “N1的N2”做个双向的协同推荐,多大个事儿。”
所谓统计可以定谁的力量大,道理上没问题,实现起来并不是那么容易。先放着。
协同推荐是什么?
孩子的父亲的同伙,pattern 是: human de human de human,结构呢?
[[孩子的父亲] 的同伙] or [孩子[父亲的同伙]] ?
Based on ontology, the link between 孩子 and 父亲 seems to be stronger than 父亲 and 同伙(although it is not as strong as 凶手 and 同伙)。这是其一。只从本体的角度看,只看这个言语片段,不看更大的上下文。
其二,正因为普世本体(universal ontology)把孩子与父母之间紧密相连,到了汉语,实际语言中在提到二者的“定中”关系的时候,syntax 上就趋向于省去 “的” 来表达这种紧密度:我们更多地说 “孩子父亲“, 而不是 ”孩子的父亲“,尤其是在一个有很多 “的” 字连续使用的场景。
根据汉语的这个特点,我们在结构歧义中正好得出了与本体相反的 association: 优选 [孩子的[父亲 的同伙]],而不该是 [[孩子的父亲] 的同伙], 理由就是如果是后一种意思,通常的说法应该省去第一个“的”。
这样一来就有两个角度,两股力量,来对这个歧义结构发生影响,而这两个影响正好是相对抗的。
一个系统要是能做到这一步,细化到可以协调普世本体和句法趋向的矛盾,虽然可以想象,但是很可能捉襟见肘。还不如拉倒,就把两种可能路径都 decode 出来,给语用阶段的语义落地一个 recall 更好的支持。这才是更现实的路线。都是 human,再往更细处找 heuristics 是吃力不讨好,容易捡了芝麻,丢了西瓜。而 decode 出更多的可能路径,在语义中间件去做,现在已经发现是完全 tractable 的任务。
前两天给的 case 就是这样一个 例证,各种可能的依存关系都双双成对(bianry linking)了,也许是迄今最酷的图之一吧(反正我看了图就乐,这个 non-deterministic dependency graph 看上去不是很酷吗?):
而在语义中间件实现它,一点没费我多大事儿。一两条简单的规则就搞定。
一般而言,普世本体因为是标配(default semantics),总是让位于句法的。今天谈的case(“孩子的父亲的同伙”)很不巧,并不是 hard 句法,而是 soft 句法、一种句法趋向,基本属于统计的 heuristic,在这种情况下,就不敢说,本体要让位于句法了。
本体让位于句法存在于 hard syntax 中,譬如乔老爷的 green ideas 里面的种种关系,一律是句法赢了本体。
或者是下面这样的 hard syntax cases:
鸡吃了我。
鸡把我吃了。
既然各路力量角逐不清,明智的路线是尽可能不 jump to conclusions,不惹它 (keep ambiguity untouched,keep options open)。
白:
蒙牛那个图,光看箭头不作数的。同样的入边,有的是并存关系,有的是互斥关系。只有标了互斥关系,才能在一念之间倒向一种语义解释,同时抹掉互斥的歧义解释。所以不是个一般的图,而是个与或图。
我: 其实没那么复杂。多一些 binary links,不过是增加了 recall 的可能。在一个实用的鲁棒的系统中,即便是一个包含了很多 binary links 的完整的 sentential parse,在运用(譬如索引和检索)的时候,为了 robustness和 recall 的需要,往往还要人为打破全 parse,更不用说这种 additional 对这些links 之间的制约了。
该有的制约除去以后,会不会损失应用和语义落地的精准?当然会。不过,多年的经验表明,这个损失比起所收获的好处,是不值一提的。
再举一例,一个 phrase 或 chunk,存到了 index 里面,当 query 来搜索匹配的时候,是坚持全匹配好呢,还是部分匹配好呢?显然,full string matching 最精准,partial matching 有漏洞,照顾了 recall 牺牲的是 precision。我们做研发的还在那里争论啊、琢磨啊怎么去平衡,或者试图想出什么更精妙、精巧的办法来。结果,做应用的工程师根本就不管,三下五除二就决定实施了 partial 的策略。最后不得不服,这是最合理的一个 heuristic,至少在我们的应用场景,query 大多是品牌和产品名的情形下,partial matching 是最有效的一个 heuristic。
白: 不能并存的放在一起,碍眼。
这个蒙牛图有点像歧义图形,说像鸭子就越看越像鸭子,说像兔子就越看越像兔子。
我:哈,要的就是这个效果。语用就好这一口。因为到了语用,发愁的是该有的不在雷达上(recall support 不足),而不用担心损失精准度(precision),因为语用聚焦的结果就是词驱动(word-driven)的语义抽取,本性就是偏向精准(precision-oriented)的。因此如果语用对鸭子感兴趣,就不愁抽不出鸭子来。反之亦然。
【相关】
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-21 16:45
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社