立委按:两载设计,三载实现,白老师的自然语言秘密武器日前曝光。十载孕育,如水流年。挑开面纱,犹抱琵琶,先者为快,一睹芳颜。
白:坑之交响曲:
脑补进行时:
李:白老师的符号给个说明啊,L是左 R是右。LMo 是左成分 不占坑 属于 mod/adjunct,LMa 是左成分,是填坑的萝卜,属于 arg,是不是?
一个及物动词挖了两个坑 2N,左边填坑的叫 LMa 右边填坑的叫 RMa,什么时候确立他们的逻辑主宾呢?
Me 是个什么?条件结果的谓词之间“(如果)选择,(那么)看好”是 Me,动补合成词内部的“哭-肿”也是 Me,所以这是个表示并列或接续的二元关系,不分词法句法 也不分短语还是从句。
二元关系图里面 层次扁平化 结构层次没看见有反映。X-bar 这类层次信息一多半属于语言 一小半属于逻辑。属于语言的可以扔掉 属于逻辑的应该有个表示。起码 “哭-肿” 的二元关系 与两个谓词结构的因果关系 在层次上天差地别。对于 dependency graph 表示,如果不允许逻辑交叉的“飞线”,层次信息可以从子树中 derive 出来,短语就是子树的 parent node 所下辖的节点范围。以此反映思维中的复合概念与单纯概念的区分。但是,现在我们允许 dependency 可以交叉,甚至允许循环(dag 丢掉了 acyclic 特性,成了 dg),以此来挖掘语言中隐藏很深的 hidden dependency (譬如 “眼睛” 与 “肿” 的主谓关系)。这虽然使得深度解析更加深入,同时也带来了层次交叉以后的副作用。复合概念的边界和范围模糊了。逻辑概念的层次没得到应有的表示。图中的主次不再分明。
结构(表示)应该是由关系和层次两个要素构成,否则就难以担当语言的模型和思维的模型。其实 关于 graph representation,以及利用 graph matching 落地到应用,里面很多机制性的东西,还是没有探索清楚。属于深水区,摸着石头过河会不会不小心淹死,也不好说。
白:树是现成的,只是没有做展现而已。
回顾一下五个操作:Ma代表Match,也就是填坑,除了左右填坑还有中填坑,就是分子向分母上的残坑填坑。Mo代表Modify,也就是修饰。Me代表合并,不仅有S(谓词)的合并,也有N(体词)的合并。谓词的合并在传统句法看来那么多种情况,在我们看来其本质都是分子合二而一,分母尽可能共享,在结合的优先级上也刚巧非常合理地靠在一起。Up和Down是升格降格。在扁平表示中,采用了新增虚拟节点和方式,原节点汇聚入边,新节点汇聚出边,新旧节点间则是单一的升降格边。
这些范畴非常“冷血”,非常地就形式论形式,但不代表不能转换成主谓宾。但是,第一,我不认为主谓宾的叫法在句法上比我更科学;第二,句法标签只是个过渡,对接语义标签时,这套标签不仅不会输给传统标签,反而映射更直接,比如话题、大小主语、总分关系、谓语动词周边非逻辑主宾语的地位尴尬的NP。第三,这套标签不是不分词法句法,而是词法句法的边界在一些地方有异于传统认知,特别是紧定中式名词(如“红太阳、好朋友”等)和动结式动词(如“打伤、哭肿、染红”),由于在我们的体系下微结构和句法(比如动趋式、动介式)并无不同,所以放到句法里并没有违和感,也并不因此多费什么手续,完全是搂草打兔子,顺手的事儿。
这个体系会不会乱?我们用了将近两年的时间建立它的what,接近三年的时间建立它的how,经过了无数的推演、测试和复盘。在这样高强度的打磨下,传统语法书里的绝大部分难句都不是问题,也没有因此把普通句搞得不普通,基本结论是结果(what)可用、过程(how)可控。
解析结果保持歧义的能力也有独特风格,比如“鸡不吃了”是传统歧义句,但在我们的表示框架下,句法无歧义,一个左填坑,一个右修饰,如此而已。歧义是语义层面的,鸡不小心即是Animate又是Food而已。这两个角色在句法上都是左填坑的N,并无区别的必要。
如果落地要的是语义标签,我们可以直接去对接。如果一定要传统标签,我们可以做转换,但这就像高清晰度的视频向低清晰度的视频转换一样,我们并不认为它是一种成就,而是一种无奈。比如“这件事我有意见”里面,“这件事”和“意见”有直接的填坑关系,跟“有”没有一分钱的关系。你让我标注出“这件事”是“有”的什么角色,我当然是很不情愿的。
我们说动结式动词的微结构和松耦合的述补结构在本质上是同一类结构,都是分子合并、分母尽量共享坑,但坑的共享是有相谐性前提的。刚才说到的“哭肿”就没有相谐的坑可以共享,所以只好各填各坑,但是分与合,都是在一个机制下的不同子模块而已,并不是说一个很好把握另一个很难把握,都在可控范围之内。
李:落地要的语义标签是逻辑语义,还是语用的标签?语用标签譬如信息抽取里面的事件角色。
白:公共服务落地是逻辑语义标签,应用落地是语用标签。中间隔一层适配。
李:这个落地模块 需要多少额外的知识呢,包括语义相谐。
白:适配具有行业特点,不懂行业没门儿。
李:逻辑语义原则上是行业独立的。
白:也不可能一家公司包打,一定会发展出众多的落地服务商和落地适配包。主打逻辑语义的公共服务,在足够精准的前提下是有独立商业空间的,如果再做几个示范的语用落地,表明生态效应和层次衔接机制work,后续还会有大发展。就好比,逻辑语义提供面粉,应用落地提供面包蛋糕包子馒头。面粉的供应商有自身的商业空间。面粉也需要好的面包蛋糕包子馒头来背书自己的质量。
李:说这些 道理上站得住,听起来好遥远。parser 要独立成为生意,感觉很难,NLP component technology 定位的,迄今几乎没有成功案例。不是没人尝试,而是没人成功,除非今后几年有突变发生。(满世界只知道端到端呢,最近加了个普遍看好的预训练,离开符号语言学更遥远了。)
如果句法就3种关系,嫡系 Ma,庶出 Mo,哥们儿 Me,从数目上看 这不仅比 100种逻辑语义、也比 五六种传统句法关系(“主谓宾定状补”之类)要粗线条。说这个 what 是高清,感觉还不够。
白:这个标签体系显然不是逻辑语义,但它可以直通类似知网的逻辑语义体系。说直通的意思是,拓扑基本上都对,只是需要细化。谁跟谁有关系基本都对,什么关系需要细化。不像有些拓扑都不对的,细化起来遇到的麻烦大得太多。
李:从这个 what 匹配到逻辑语义,是一对n,必然需要更多的知识和做功。
对于短句,标签集很小的时候,凭着词典的预示信息,句法基本不是问题。到了长句 可能挑战就来了。短句不是问题 就好像过去社交圈小 但每个人都必须结婚,谈恋爱就特别容易有结果,因为没得选。很多时候 门当户对以后 候选只剩下一个 那就ta了。
白:结构就是用来拉近距离的。依托结构拉近的距离,比望文生义拉近的距离,更为精准。
李:词典在类别基础上所给的那些subcat预示信息,譬如 S/2N,这类 subcat 也是粗线条。即便原子化 平铺开来 也没有多少,估计 20 个左右。
白:这不算subcat,只是POS
李:上面的标签 S/2N 传统词典是 vt,属于 V 的 subcat,不过叫什么名字无所谓,总之是预示一个潜在 pattern 的词典标签。这类标签的集合 感觉20个可以收住。在 20 个标签以内做句法,结果的关系是 3,这应该还算是粗线条的。
让人眼亮的是这种颗粒度 的确是句法最核心的部分,在回答 “谁与谁发生 directed 关系” 的问题上,是一个不错的抽象。
短句容易做粗线条句法是显然的 因为没得选,“这件事 我 有 意见”,一共两个潜在萝卜 n1 n2,正好有两个坑 空着,“我” 被 “有” 抓走以后,“意见” 的 【对象】 只剩下 “这件事”,不是它 也是它了。
白:还有另一面,明明空着,也不进来。下例中,“今年”,“食堂”,明明是最贴近坑的萝卜,但不是你的坑,打死不填。宁可降格做状语。这就不是那么简单了。还有前面“这碗猪”也不能谈婚论嫁,要等“汤”拉近,这背后有玄机。绝不是一个村里没婚没嫁就可以拉郎配的。
李:这里面玄机如果不论 how 就没法评论了 只能说不明觉厉,特别是“食堂” 不填坑,句法上有点天理不容。
白:所以这样的结果,转换成主谓宾,得多憋屈。那是后退。前进一步,就是精准的逻辑语义。拓扑都对了,就差一个相当于知网的基础设施。
李:可是反过来想,“吃” 与 “食堂” 发生了关系 是肯定的,这个关系中 “吃” 是老爸 也是无疑问的。为什么要把 arg 与 mod 的区分负担,强加给句法,而不是留到语义或语用呢?
“鸡不吃了”里面的主宾歧义句法都可以包容,为什么不可以包容 arg 和 mod。如果句法最好轻装 那就听乔姆斯基的,彻底排除语义,现在看来 这个 "食堂" 的降格 是带入某种语义了。反正 map 到逻辑语义的时候 还是要调用语义约束,想不出为什么一定要有选择地把部分语义前置。
白:语义arg无边无际,句法管不过来。我的原则是:标配的语义arg走填坑,非标配的语义arg走修饰。
李:“我吃月亮” 呢? 现在也降格吗?
白:是。
李:感觉是得不偿失。因为不降格做引申意义的宾语情形,应该比降格做状语的现象更加普遍。
白:“这场火”,也降格。月亮可以是处所啊。怎么非常识了?
李:比起传统的svo句法解析,个人感觉这样做是得不偿失。要是我,就宁肯放宽语义约束,得到一个非常识的解析,也比过早实施语义约束合算 命中率会更高。 这当然只是感觉,还需要数据调查和统计来验证。“把月亮吃了”,就是“非常识”,而非常识的说法 语言中也没有那么罕见(“一片乌云飘来,吃了月亮”)。原因是 非常识为语词的 引申,创造了条件和手段。说话者是用不相谐 来倒逼听话的人去联想 引申。
白:修饰,只是非标配的语义坑而已,不明属性,并不是语义层不能再入,这个修饰的标签并不给语义分析设置篱笆墙。只是说他非标配,非标配的后续,既可以脑补缺失的非标配格标记,也可以作为修辞手段再入标配格标记。两个可能性都存在。并不存在“失”,只有“得”。
李:设不设篱笆墙,说到底还是 句法输出以后,后续工作量 是增加了还是减少了。把“食堂”和“月亮” 都降格了,后续工作量 感觉是增加了 而不是减少了。因为 月亮被吃这类的表述 比 “吃食堂” 这类表述 数量为多,何况 吃食堂其实已经词典化了,本来就不该参合进来的。关键在 它不应该在歧义区分的雷达上,属于常识例外。词典绑架 没商量。
白:工作量不是唯一标准,有利于精准才是最终标准。再入,实际上你可以认为引申受事和常规受事是两个格标记。
即便词典化,微结构仍然是修饰。吃七食堂,吃教工食堂,并不是词典化的,但我们不怕。
李:那种叫成语活用,在词典绑架的延长线上。实现一个成语活用的机制 也就可以不来参合了。
白:吃勺园,吃全聚德。吃麦当劳 ... 也不是成语活用,但背后是一个机制。它们如果走了不同路径,反而奇怪。
李:这是真歧义,“吃麦当劳” 作为地点和食品 均可。这其实也成语化了 真歧义也可以在词典绑架为歧义表述。
白:就算吃食堂是词典绑架,但其词典定义依然是S/2N,并没因为“食堂”的加入而变成S/N,这恰恰证明“食堂”填的确非标配坑。
李:话说回来,只要句法不必调用语义相谐的大数据,而只是使用语义标配的二值判断,那不过是查一下本体,也没什么可批评的。不过就是两种各有利弊的路线 择其一而行之。
白:不一定二值啊,可以连续值,折扣么。
李:如果折扣的话,
我吃月亮
我吃石头
我吃土疙瘩
我吃面疙瘩
我吃疙瘩
这些解析结果应该有区别,而不是都降格,或都是宾语。
白:对啊,看你Ontology怎么设计的了。这与分析器无关,取决于Ontology的返回值。
李:返回标配是二值,还是多值,多到什么程度。
白:连续值,看小数点精度。但是0.2和0.3的差别,估计不足以颠覆。能够利用梯度最理想。
李:哈 你这一球踢出去 倒是轻省了,对了是我的,错了是你的。
就是说,ontology 供应商的相谐颗粒度,不一定是二值 但也不要超出太多,多了反正也没有区别,也许三值 很搭/较搭/不搭。也许四值。ontology 供应商最好是婚恋交友网站的架构师出身,懂得如何配对。
我还是没理解 从设计上为什么句法要在 “嫡系/庶出” 上较真,非要劳动 ontology,而在 “主语/宾语” 上反而不较真。反正提供的是半成品。从逻辑语义角度 语义也还是不全的。
白:我觉得这太显然了,这事儿不正是Ontology该做的吗?要站在比它们俩都高的视角看他们俩。句法和本体,我们的方法论是,句法要给出对的拓扑。为此,Ontology、情感、事理都是必要的补充。
李:细节不纠缠 逻辑语义可以算是一个唯一可以公认的语义理解的黄金标准了。arg 与 mod 的区分,本来就不是黑白分明的。这个对错 不好说。
白:但是构建逻辑语义层的输出,虽然也同样使用Ontology 、情感、事理,但是用得更重。这两个方向的用,不可混为一谈。
李:所以说是 双重使用啊,重复劳动。
说起 arg 与 mod 的嫡系和庶出 有点意思 可以展开简单说说。args 是计划内的婚生子女,主语、宾语、宾语补足语,名正言顺,所以受到父母特别关照。mods 属于计划外的秘密勾当。因此,总是 parent 去找 args,利用 subcat 的计划内指标。到了庶出的 mods 就管不过来了,只好是 mods 去找 parent。千里寻父 叫父亲太沉重。
可是这一切的句法区分都是世俗的角度,语义层面 嫡系和庶出并没有那么大的鸿沟,都是围坐在天父身边 各司其职 各有角色。所以说 句法费力气区分嫡系庶出 为的是服务语义和理解,可是 语义那边偏偏对这种区别其实没那么敏感。为啥?因为语义在分配角色的时候,更加看重本人的资质,而不是看重 嫡系还是庶出的出身。“有成分,不唯成分论”,重在个人品质。个人的品质,就是你到底离我的本体要求有多远。
白:就是因为庶出的不加标记的情况太稀疏,句法留这么多资源给稀疏的庶出,不值得。
李:反正语义那边还要政审把关,用的也还是ontology 资质审查,为什么句法还要预审?
白:此地预审,方便彼地直通。
李:我是说 费力区分 Ma 与 Mo,没多大必要性。如果这种区分 不需要劳动各种知识 那当然。如果需要费力 就不值得了。
白:从基础设施建设的角度,只为一个中间步骤建,当然越轻越好。如果建了既可以为一个中间步骤服务同时更可以为有独立商业价值的最终步骤服务,那就可以建的重一点。即使重,也包办不了落地适配。落地适配是一个既统一规划又独立实施的环节。也就是说,从一个必建的基础资源里顺手提取一些信息就可以搞定正确的拓扑,这算不得什么费力。劳动的方式非常清晰和标准化(相谐度查询),也算不得什么劳动。我们目前的算法也并不是对所有候选邻对都进行相谐度查询。只有当前动态优先级最高的邻对才做相谐性检查。
这个,显示还有点小bug,但是揭示了一个现象,就是嫡出的萝卜出现位置太远,需要许多中间步骤拉近。但一旦拉近,那个位置还是人家的,庶出的没脾气。远近并不构成威胁。把“你”挪到“食堂”后面,也是同样结果。“要是这个时间吃食堂你就只剩下包子了”,用传统句法范畴分析这个“你”,就很莫名其妙,它跟“剩下”是主谓关系吗?但是论坑,一点关系没有。它跟“吃”是主谓关系或者述宾关系吗?论坑是的,但是形式上却完全不在那些位置。甚至跑到了另一个从句的辖域里面,要多尴尬有多尴尬。谐我坑者,虽远必填。
李:好例。改造一下:
“要是这个时间吃食堂你就只剩下二厨了 大厨早就自己躲一边吃包子了”
“二厨” 比 “食堂” 如何? “包子”更远 但相谐,为什么不能虽远必填?
“要是这个时间吃食堂 大厨早就自己躲一边吃包子了。”
白:后面又出现了“吃”,截胡了,“包子” 第一次就近填坑。
李:填 “剩下”,与 填 “吃”,不都是劫持了吗?
白:“剩下”的坑,抽象度比较高,万金油。我们的说法是“置换”,就是把首次填的坑从占名额的调整为不占名额的,后续填的坑再视情况决定占不占名额。
李:就是说 对于远近两坑,还要做比较计算,来决定截住没有?
“要是这个时间吃食堂你就只剩下二厨了 大厨早就做完一屉包子回家休息了”
“做完” 与 “剩下” 差不多,都是万金油 vt,截住没有?
白:这个还真可以有。但前提是,子句之间得有依据是连接的。大厨做完了包子,不一定卖完。
李:人的理解,首选不是包子,而是二厨做的档次较低的食品。大厨做的包子 轮不到。
白:如果两个子句只是最低档次的连接(next),还真未必建立坑的共享。但是用连接词连接的,肯定可以共享。
李:有一万个理由否认,因为说话语气是可惜和后悔,想吃大厨的口福 你享受不到。谁叫你迟到呢。共享与共产共妻类似,是高危操作。
白:你那里只有空格,没有上句和下句的明确锚点,不在我们的共享白名单里面,不能建立Me,所以坑里的萝卜是带不过来的。跨小句需要白名单制。前提是:1、甲小句不饱和、2、乙小句有供给、3、两小句连接方式在白名单中。
李:嗯,虽远必填 限定在句法关系圈内,也是一说。
“要是这个时间吃食堂 厨师都出去买海鲜了。”
这个应该是 Me,因为符合 “要是...就...”句型。
白:对。
单从本体看海鲜就是加分的,但是事理是减分的。吃在买前,不符合事理。不符合事理的会减分,就看二者抵消成啥样了。
李:这个事理如何用 感觉漫无边际,“先买后吃” 这样的常识事理,何止以万计。
白:但是人就是这么判断的。这是长尾,攻击到本体的概率有限,不到落地肯定不做。
李:所以 句法一般不带入事理常识,语义语用才考虑用。
白:句法只是中间产物,又不是产品。加了边还可以砍啊。砍了边再加就不那么简单了。有一万种方法砍。一个公司既做句法也做落地,没必要维护句法的面子。整体可以就OK。句法提供的这些边,送神容易请神难。
李:就是大体了解句法模型,用到几个维度的知识,用到的维度 颗粒度如何。之前论过 维度多了就是一锅粥。如果符号逻辑最终还是一锅粥,那就不如索性舍弃符号。因为一锅粥最终丧失了符号的优势。可解释性不再清晰,可定点纠偏也丧失了。
白:还是要区分表示和控制。表示是符号的,控制是符号与神经结合的。这没什么不可以。
(未完待续...... 《李白112:白老师秘密武器一瞥(2/2)》)
【相关】
- 《李白110:深度解析,曲高和寡,值得吗》
- 【李白之18:白老师的秘密武器再探】
- 【李白之15:白老师的秘密武器探幽】
- 【李白之19:三探白老师的秘密武器】