【李白之35:句法分析 bottom up 为基础,可穿插 top down】

Bai:
“老李把手不听使唤的徒弟骂了一顿。”
看点1、“把手”分词错误
看点2、“把+手”介词短语错误
看点3:谁的手?谁的徒弟?
“不听招呼”是非自主性状,和“把”天然矛盾。

Me:
这种东西没做过统计 究竟有多严重。统计性 值得不值得投入资源做 先放一边。可以从这类问题得到什么启示?有一个启示就是 也许我们可以适当地引入自顶而下(top down)的处理策略。很多年来 我们尝尽了自底而上(bottom up)的好处 以至于把它视为理所当然。Note 这里说的自底而上与教科书上的算法有所不同,教科书上的算法,无论自底还是自顶,指的是一层 parsing,我们说的是多层的自底而上处理。自底而上层层parsing 的好处包括鲁棒稳妥 靠谱接地气。层层推进有利分层和模块化 也有利打补丁。这些都是复杂系统难能可贵的重要品质。Having said that, 上面这类含有某种远距离搭配或关系的 cases 却可以设想一个 top down 的策略:

骂(一顿)【human】
--》把【human】骂(一顿)
--》把【rel-s 的 human】骂(一顿)

这个optional的定语从句 rel-s,可以自顶而下扩展为 【Subj Pred】,如此等等。这样一来,“手 不听使唤” 就中招了。

当年我们反潮流 反对 top down,根本理由是 top down 与主题先行一样 主观主义严重,隐藏的假设是说出的话都是合法的,所谓规范的句子。那么 我们从非终结节点 S  出发 根据有限的句式层层下推 就可以囊括所有句子。这种 top down parsing 是教科书上经典路数,但我们面对实际语料的时候,很快就举步维艰。后来把各种 subcat patterns 嵌入到 VP 里面,用词典主义(lexicalist) 细线条( fine-grainedness)来缓和矛盾,但仍然捉襟见肘,直到探索出多层的自底而上的 parsing 路线,才柳暗花明。
但必须承认,自底而上虽然条分缕析细致入微,却带有与生俱来的见树不见林的缺陷,对于远距离的结构把握不好。于是我们用拼拼凑凑或者打补丁,甚至休眠唤醒推倒重来的各种方法对此缺陷予以补救。

也许到了认真考虑如何“巧妙”结合两种路线的时候,bottom up为基础,适当穿插 top down。

 

【相关】

【立委科普:结构歧义的休眠唤醒演义】 

【李白对话录:从“把手”谈起】 

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【语义计算:绕开句法做语义不合适】

Jiang:
请教一下各位老师,“咱为什么不用接龙报名来招机器人班?”是否合乎语法规范?如果不合乎语法规范,为什么大家理解起来还没有问题?这个现象说明了什么?说明语法是人为的,不能用来约束鲜活的语言发展事实么?

Bai:
@姜博士 合语法呀,没看出什么问题

Jiang:
@白 嗯!我担心“招”和“班”从语法上来看搭配不妥。有您印证,我就大胆地这么说了。

Bai:
“班”是“招”的逻辑主语。

Me:
嗯!
“逻辑主语”概念挺好,和“主语”有何区别?

Bai:
就是以这个动词组成典型的、正常的、统计上占优的主谓句的话,应该在其中当主语的那个角色。

Me:
严格说来 最底层还不是逻辑主语

Jiang:
喔?

Me:
[human] [为...班级] 招 [human],“班” 是目的。第一个human是逻辑主语,第二个human是逻辑宾语。

Jiang:
您的意思“招”的宾语还是“human”!

Me:
对。"班" 是 "招" 的结果或目的,宾语表示结果在汉语不鲜见。

Jiang:
“招生”可以说,也易于理解。但“招班”虽然可以说,但理解起来要拐个弯,理解成“为班招人”!

Me:
招生成班。挖土 挖坑 挖土成坑,同理。

Jiang:
感觉引入“主谓宾定补状”等语法成分有用,可以用来分析描述语言现象。但如果为之所累,或者非要顾及合乎语法与否,会影响语言学的深入发展。

Me:
没有不合语法呀。
"挖坑" 一直存在, 没有语法规定宾语一定要是逻辑宾语。再如:吃饭 吃食堂 吃亏 ...... 宾语不是逻辑宾语很常见的。

Bai:
也许是“招人成班”,一个“经办人员”为“学校”招“人”成“班”。但是,经办人员不过是学校意志的代言人,学校是班的上位整体。这个办事人不需要强调的时候就融化在学校里 甚至可以说是学校的“工具”。招这个动作,真正的决策主体是“学校”。反而,办事人员如果大言不惭地说“我招了谁谁谁”,颇有贪天之功的嫌疑了。所以,学校是大主语,班是小主语,学生是宾语,办事人员是工具。工具偶尔升格为主语,但真正主语到来时必须让位。学校在出现显性介词(如“为”)时降格为介宾,与介词一起做状语。学校与班的关系,是整体与部分的关系。

Jiangg:
嗯!这么说来,这里边的关系挺不简单的。感觉“主语”这个语法概念和“工具”这个语义项概念粒度不一样。为了说清楚其语义,可以不借助语法概念。语法概念的引入把事情弄复杂了。

Bai:
语法自己还有打不清的架,又跟语义有说不清的纠缠,所以不能驾驭的建议干脆绕道,能驾驭的,从简为妙。

Jiang:
感觉语法体系是人凭感觉硬造的,在实际的语义分析中,不应过分依赖它或在意它。

Bai:
会用的可以借力。不会用的硬要用只会添麻烦。

Gong:
我在淘宝的经验是处理语法或语义不用照搬理论,解决实际问题即可。例如了点,我会认为是一个程度副词。

Bai:
不管语法语义,要回答的就两个问题:1、谁跟谁有关系;2、是什么关系。这两个问题回答清楚了就上了三楼。至于一楼二楼怎么分,最终应用不care。但是一楼二楼分好了,上三楼就可以有“利器”。

Me:
句法存在有几个理由:

1 句法的确有一定的概括性 只是汉语句法的概括性不如欧洲语言而已。

2 概括性的表现之一就是句法角色对逻辑语义的标配(default)映射,譬如 句法主语的标配映射是施事(逻辑主语),其次是逻辑宾语,第三位的映射是工具。标配以外的所有映射 都需要特别的条件。

3 句法关系比较简单:逻辑语义非专家不能 而且不容易达成一致。简单的直接体现就是数目,句法关系不过十个;逻辑语义可以到百。差了将近一个数量级,掌控起来 难度不同。如果做语言教学,“主谓宾定状补” 的说法 虽然仍难免捉襟见肘 但的确容易解说一些, 也大体抓住了关系的概貌。

4 其实更本质的理由还是语言共性的作用:无论汉语还是欧洲语言 语言学中的 subcat patterns 中的 args 不过三,这就为句法主宾补(补足语包括间接宾语,不仅仅是所谓【补语】),做了背书。至于这些主 宾,在深层不一定标配映射到语义的逻辑主语或逻辑宾语,那是另一层面的问题 是句法语义的接口问题 不宜混为一谈。所以白老师说句法做好 可以借力。欧洲语言的句法借力是很显然的 其实汉语中也有很多借力的地方。不过确实需要一点高度 才好玩这个句法语义接口的游戏。做直升飞机上三楼 固然是好 只怕更难。

以上几点是相互联系的 是不同角度的视点和论证。我的主张是 汉语研究不宜跳过句法 但汉语句法需要更大的张力和灵活变通才好。句法的框架设计 在解决“谁与谁发生关系”中 至关重要, 在解决“发生什么关系”上, 起了一个标配和桥梁的作用。

跳过句法可行否? 这个问题可以这样理解: 如果针对特定领域 特别是特定应用, 别说跳过句法, 就是跳过语义, 都是可能的。所谓端对端就是跳过了显性的语言学。但是对于 open domain 的语言分析应用的通用引擎 哪个环节都不宜跳过。跳过了 就难以深入和坚固。
自然语言(尤其汉语)是如此复杂 。语言学的几大部分已经是最起码的分野和分工了 还想要跳过,不对路呀。模块化多层处理是深度自然语言分析和理解的正道。

语言学的几大块是语言学多年研究传承的结晶 不宜轻言跳跃或抛弃,包括
Lexicon / Morphology  / Syntax  / Semantics / Discourse / Pragmatics,这几大块处于语言研究的不同层面。不能因为它们的接口复杂(尤其是汉语的词典与句法接口,句法和语义的接口),就否定或忽略了它们的层面不同。不少人希望破除繁琐哲学 要一锅烩,深度神经的端对端算是一个成功案例,但局限似乎在对带标大数据的要求上 还有就是连带的领域移植性问题。对于通用的语言分析理解 迄今没见成功案例 也不大可能。董老师说法 上帝不可欺。

Dong:
当年在农村插队落户,老农的一句话,我记了一辈子:种庄稼,你糊弄它一时,它糊弄你一年。科学研究,你糊弄它一时,它可就糊弄你一辈子。李维说的对,别以为有了语义,就可以绕过句法。语义离了句法,还如何处理语言呢?

Guo:
@wei 跟你抬个杠。

今天,深度神经不一定是端到端,机器学习不一定要带标大数据,语言处理多不是领域专用。

今天已知的“神经翻译”,第一步是word2vec,就是把“word”(不拘泥于词典词)转换成“vector”。这一步大家常用unsupervised方法独立做,没什么“端到端”,“带标大数据”,“领域专用”。

“神经翻译”常见的第二步,是seq2vec,就是把一个源语言"sentence"从一个“sequence of word vectors”转换成单一vector。这一步,也可以单独做,不用端到端带标大数据。

“神经翻译”常见的第三步,是vec2seq。这里需要端到端带标数据,但比想象中的“大”要小很多。

上面这两个vectors,如果要说成是对词和句的“深度理解”,免不了无尽的争执。但在神经计算的圈子里,他们的“通用性”性是显而易见的。同样一个句子的vector,人们不仅用它来生成不同语言的翻译或者产生对话,还有人用它来生成一幅画或者一段音乐。那个word vector,就更是无所不在了。

Me:
好问。

第一步 第二步 是一种 representation 的转换, 还是一个相对独立的知识训练?第一步对应的是什么知识?第二步又是什么知识?如果是对应某种知识, 那么 unsupervised 的训练如何反映这种知识或目标?

貌似第一步是 lexical semantics and ontology, 这个容易达成共识,无监督学习应该是可行的。第二步是 句法的模拟或逼近,理论上讲是难以无监督学会的。

Guo:
第三步vec2seq其实也是可以独立的。这就是为什么翻译出来的句子总是很顺的原因。

Me:
很顺的另一个说法是狗胆包天。哈
上次把肯定翻译成否定, 人是万万不敢的 除非自找炒鱿鱼。很顺的秘诀来源于大数据的特性,用词不当和语法错,连带棱角和独特性的语言表达,都被过滤掉了, 飘在上面的语言表达比人类表达的平均水平要 “高”。

Dong:
@Guo 学了不少东西。我一直纳闷的是,NMT有时会漏译、过度翻译等,那是怎样造成的呢?研发者知道原因,并知道如何去改进它吗?举个例子:

(英文)There was a very serious accident on the Beijing-Tangjin highway on Tuesday morning, resulting in a brutal jam. Victims say the traffic started to slow down around 4 o'clock Monday morning.

(谷歌):北京 - 唐津高速公路上星期二上午发生了严重事故,造成了残酷的果酱。受害人说,交通开始在周一上午4点左右减速。
(百度):在北京唐津高速公路上星期二上午非常严重的事故,造成一个残酷的果酱。受害者说星期一早上四点左右交通开始减速。

他们研发者发现后知道将来应该如何修改、提高呢?

Guo:
@董 翻译中的遗漏或者添油加醋,都是已知的问题,主要就是因为,那个中间的vector表达,没有在任何地方有显式的成分表达。

简单讲,这有点像口译,你先说一句话,别人听懂了,然后他把那句话用她自己的理解转述出来。如果不做笔记,口译的人是很难保证不增加或者减少内容的。但是他一定能说得很顺。

现在已提出些补救的办法。例如在谷歌的神经翻译中,就有一个所谓的,关注模型,希望输入的句子对输出的句子,能有一些比较直接的影响。但很显然,这个效果还是没能让人满意。

Dong:
没有在任何地方有显式的成分表达。"显式"是什么样的?那么为何不让它具有这个“显式”表达呢?是疏忽,环视技术上有障碍?@Guo 这是不是跟口译的情形还有点不同。口译是理解原文意思后的翻译复述,有着难免的变通。而NMT实际上是完全不是自觉的。大概有点像图像识别、语音识别,它在技术上完成了比较后,挑选了最“像”的结果。

Guo:
@董 现在常见的深度神经,无论是机器翻译,图像识别,语音识别,还是其他的应用,基本上都是先将输入转化为一个相对通用的一个中间表达(一般就是4096个数值),然后用这个中间表达,来完成具体的不同的任务。

这个中间表达,对不少深度神经的从业者而言,就是对原文的“深度理解”。当然,机器到底“理解”了什么,我们还说不清楚,但也不是一无所知。

 

【相关】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【语义计算:“他衣服要烫得笔挺才肯穿出门”】

白:
“他蔬菜要用清水泡过的才敢吃。”

这里面,“泡”的逻辑主语是不是“他”?保险策略:不做定论,悬在那里。激进策略:是,如有必要,拓展对“逻辑主语”的解释。“他”主导了“泡”的启动或者“泡过”的选择,即便不是亲手“泡”,也算是逻辑主语了。落地时可以有个开关,决定“算是”的逻辑主语是否映射为真实的施事或当事语义角色。个人认为激进策略也是可行的。

董:
我的语感是“他”是topic。说的是他这个人。而不是一个行为动作的事件。

白:
“他衣服总是穿得笔挺。”
“他衣服总是要穿得笔挺才敢出门。”

里面的“他”也不和“穿”挂钩吗?
这里的“穿”和那里的“泡”有何不同?

李:
转了弯的逻辑主谓

白:
董老师框架下要直接确定语义角色,我和伟哥是分阶段的。

李:
解析的目的何在?
能想到的好处是可以提供更多的案例 帮助挖掘本体知识。对于语句的语义 其实没啥意义。语句要表达的语义 大多不绕大弯。这也是为什么非谓语动词 常常有坑没萝卜,或者即便有萝卜 填坑不填坑无关宏旨。事实上即便填上了,也大多不是事实,不是发生的事儿的语言表达,而只是本体的潜在逻辑关系的语义相谐的一种体现,此所谓“非谓语”。

白:
绑上了放掉很容易。放掉了再绑上有点返工的感觉。在没有竞争候选的情况下,建议绑上。这是依据封闭世界假设。如此填上的萝卜,如果语境中有其他活跃萝卜,可以override。

李:
顺手的话 当然绑上。

白:
把link标记为“可覆盖”,就可以兼得。

李:
如果知道不十分确定,绑的时候做个标记,说这是个 candidate 不是绝对的。

白:
就是这样:soft hypothesis,遇到更hard的candidate,立马让贤。

“他衣服要烫得笔挺才肯穿出门。”

fallible reasoning,“僵尸萝卜”和“鲜活萝卜”结为兄弟

李:
这句子很绝。各种坑。可以列数一下
(1)possessive:他-衣服
(2)aux-V: 要-烫
(3)动宾:烫-衣服
(4)主谓:衣服-笔挺
(5)计划类V带动词宾语(也可以看成是 aux-V):肯-穿
(6)candidate 主谓:他-烫(衣服)
(7)主谓:他-肯穿
(8)主谓:他-出(门)
(9)动宾:出-门
(10)动宾:(肯)穿-衣服
(11)述补:穿-出(门)

还漏掉啥填坑关系?总之,短短一句,各种纠缠。

最后这个【述补】好像随机性强一些,预示性弱,就好比 【得字结构】 的补语:
“烫-得(笔挺)”,它们更像 adjuncts 不像 args。

白:
parser都要做,补语不是填坑,是坑共享萝卜,是动态确定的

李:
不需要词典subcat驱动,而是一般性规则。

白:
不是词典化的。坑共享萝卜的另一个说法就是坑的合并

李:
好,parse parse:

做到一半了没有?论句法,约莫八成;论全体逻辑语义,也就做了一半吧。

今儿较真一次,列数一下,看到底做了几层关系出来:

(1)Mod (possessive): 他-衣服
(2)句法主谓(其实是逻辑动宾:算是做了一半吧):要烫-衣服
(3)aux-V(表现在 vg chunking 里了): 要-烫
(4)大主语,又名 Topic(其实是逻辑主谓,也算做了一半吧):他-要烫
(5)主谓:他-肯
(6)V带动词宾语:肯-穿
(7)Next 耍了个流氓(算是做了一小半,至少直接联系是搭上了):肯-出门
(8)补语:要烫-笔挺

白:
很牛了

李:
自评: 是八成熟的 parser 吧,差强人意。偶尔露峥嵘。
关键是,这句没做任何微调,所见即所得。隐式的逻辑语义,譬如 “衣服-笔挺” 就没顾上了。隐式逻辑语义目前在语义模块只是做了个样子,没细究。

白:
我说的僵尸萝卜和鲜活萝卜,就是分别指“穿”和“出门”。

李:
句法细化为逻辑语义,也没做全。譬如,流氓 Topic 和 Next 还没教化。

白:
坑者有其萝卜,是NLPer的共同理想,就像耕者有其田一样

李:
哈。
为顺口,可以提这个口号:坑者有其苗。 跟植树造林似的。一个坑一棵苗,终成句法森林。双音语素 “萝卜” 不知怎么个来历 居然是黑匣子 无法缩略为单音节。还不如 “蝴蝶”, “蝴蝶” 略为 “蝶” 没啥问题。

【v者有其n】,这种成语句式 要求 v 和 n 都是单音节才好:

耕者有其田。
劳者有其工。
行者有其车。
食者有其鱼。
学者有其书。
棋者有其go (不是 alpha go)
nlp者有其tree

坑者有其萝卜??
赌者有其麻将??

“麻将” 也是双音节黑匣子 不好。牌九呢,也是双音语素,但似乎可缩略为 “牌”:

赌者有其牌

共产大同了 哈。

白:
“一切不拿自己当大数据入口的端设备都是耍流氓。”

董:
AI,也是智者千虑必有一失。

白:
拿……当……,句式没搞定。把“当”翻译成“when”,后面的都失去准星了。

白:

“机器人送快递还有多远?”

怎么知道这里的“远”实际指的是时间而不是空间?

宋:
时间空间常混淆。

梁:
时空一体

李:
词汇总是有歧义,有不歧义的。

“机器人送快递还有多久?”

多久 无歧义; 多远,有歧义,但标配是空间。结构也是如此,有歧义的,有不歧义的。形态丰富的语言,结构起来,就较少歧义。汉语就显得到处都是歧义。所以那些争论语言优劣的口水仗,缺少的是一个双方公认的测量标准。常常鸡同鸭讲。如果从较少歧义,以显性形式为主要手段来避免歧义这个角度看,汉语是劣质的,这个应该没有多少疑问。但是,歧义也好不歧义也好,现存语言都达到了人类交流的工具目的。不过是,歧义多的语言,人类在交流中下意识利用了常识或领域知识的帮助而已,而这种下意识,对人类一般不构成负担。既然知识在语言理解中的引入不够成负担,那么比较优劣当然还可以有其他的标准。譬如语言表达的灵活性、丰富性、微妙性,甚至模糊性。从这些角度考量,可以 argue 说汉语是世界上最牛逼的语言。

词汇的歧义(wsd)属于 hidden ambiguity,通常不影响结构分析。wsd 真要解决的话,绝大多数都可以在句法后的语义模块或语义落地模块去做。

wsd 和 hidden 歧义 通过上下文消歧 可以利用句法结构的帮助 也可以不用。但既然绝大多数这类歧义都可以留到句法后进行 不利用白不利用 两条腿走路总是更踏实。其所以wsd 研究 利用结构不为多数 不是因为大家不愿意两条腿走路 而是因为多数研究者缺乏得心应手的 parser 的支持 我以为。另一个原因是为模型的纯粹。两条腿一起来,在学习模型中,等于增加了另一维度的 heterogeneous 的 evidence,难缠。

从休眠唤醒的角度看 wsd 的多数都休眠了 常常也不用唤醒 如果落地语义无需聚焦到那里的话。到了需要唤醒的情形 譬如某个应用需要解读 多远 可不可能是说时间的话 结构条件加语义或常识就可以出场了。

“机器人 - 送外递” 这个主谓关系的行为 是一个热炒的话题 现实中很多家在尝试 但还没有成熟。这个知识介入了,才好确定 “多远” 是指向时间的。可这个知识如何搜集、表达和恰到好处地代入,目前看来还有不少挑战。

梁:
汉语比英语更高层次,你更简洁。

李:
简洁的另一说法就是裸奔。

本来穿衣主要不是避寒 而是为了体面,为了百分之五不到的避寒需求 每天都要穿得笔挺 的确显得麻烦。譬如 欧洲语言的一致关系在形态上的表现,主谓一致、形容词与头名词的一致(agreement),性数格人称等形态,看着就眼晕。 这些一致的形式有如西装革履,百分之九十五的场景就是摆设,因为没有穿戴它们 语义的相谐也不会让我们产生误解。但的确有不到百分之五的场景 就好比坏天气来了一样 没有穿戴 就会冻坏;没有一致关系 理解就发生困难。 汉语的简洁和裸奔,是以牺牲百分之五的理解畅达性作为代价的。这就是为什么汉语不如欧洲语言严谨,突出表现在写合同和法律文书的场景。欧洲语言之间 严谨性也有不同 大致都可以用穿衣的繁琐程度来度量。国人能省就省 很多小词(功能词)说没就没了,常裸奔到无语。

梁:
Okay, 更裸奔更放任自己,更让 Wei哥难受。

詹:
我常听到这样的说法,说英语的parsing都百分之九十多了,汉语差十个百分点云云。如果方法相同,分析结果总是差着这么多,是不是可以推测,汉语的模糊度就比英语高着十个百分点呢(相当于试题难度高了十个百分点)?

白:
连parse结果长什么样都糊涂呢,说什么多少个百分点?

李:
那天在linkedin上 有人建议:你不是parsing牛吗 打败谷歌 为什么不去用标准集做大规模测试对比?我说 你要说服CEO给我资源 我不妨一做。 往标准集上靠 工作量不小。本来那集就走歪了,非得把走正的 往歪去靠 。

宋:
不止是时空混淆,其他度量空间也有问题:“机票从7折变成8折”,折扣是升了还是降了?“人民币汇率从7.0升到6.0”,居然是升。纽约时间比北京时间早13个小时还是晚13个小时?

李:
宋老师对语言 眼真毒。
回@梁 汉语裸奔对我不是难受 而是福气。太好受了 人皆可做 我如何寻找存在感呢?语言不幸语言学家幸啊。

宋:
@wei 不是我眼毒,真的是说不清楚。涉及到出国的事情,解释两地时间差别,只能具体说:北京现在是25号凌晨1点,纽约是24号中午12点。各位老师,你们如何表达这个关系?也许可以这样说:北京时间减去13个小时是纽约时间。反正不能说早晚。

梁:
真是好问题,北京和纽约时差13个小时。我有时跟朋友说,"北京在纽约前13个小时。"我真不知道怎么说。

李:
自然语言会有些莫名其妙的表达 gap 存在的。譬如 汉语是 第几 和 老几 ,在英语就没有简明的对等物。理论上 不就是序数词的wh疑问式吗?应该是 *how many-th
但就是没有。遇到这类翻译 英文总是转弯抹角:

What is your place in blah blah 这类

梁:
不可翻译,只能解释的情形挺多的。

董:
什么测试集、标准集,什么召回、精确,还没玩够呀?汉语分词现在似乎没人玩了?那个正确率是怎么算的? 语言不是可以这么玩的。看看这个分词:中国力避朝鲜遭到致命打击。

百度翻译:China in stead of North Korea was a fatal blow.
Google翻译:China's efforts to avoid North Korea have been fatal blows.

对于这个句子,这个分词的错误率,就是100%。

汉语什么是“词”,词频统计能像英语一样吗?还要计算分词的正确率,还要测试,比赛,如何能靠谱?老外玩他们的语言,我们不一定要跟着玩。你玩扑克,我推牌九。

李:
如果没有标准集的话 可能一多半玩parsing的专家就抓瞎了。其中看不起或看不懂语言学的 不为少数。带标数据是他们的命根子,至于这个“标”合适不合适,靠谱吗,有多少用,他们不管。雾里看花,只要有个花的模样,就可以绘画比赛了。就是如此。

董:
前些日子,机译群在聊,说今年的ACL,是深度学习的一统天下。我想起了20年前,如今统计似乎已经风光不再了。30年河东,用不了30年就河西了。

张:
坚持原则的勇气是智慧的全部就是崇拜中

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之34:汉语情态词和计划类动词的异同】

白:
“牛肉我要八分熟的。”
“他蔬菜要用清水泡过的才敢吃。”
“牛肉”和“八分熟”有subcat的相谐关系,但不是离合词。
“蔬菜”与“泡”的关系更加松散。

李:
前者主谓相谐。后者动宾相谐。“牛肉-熟”。“泡-蔬菜”。
顺便一提 先帝诗云 土豆烧熟了 再加牛肉。不知他老人家怎么想的。牛肉烧熟了 再加土豆 这是料理常识吧。反过来 土豆怕连泥都吃不着了。

白硕:
某次吃过韩风的凉拌生牛肉
@wei 做做看吧,不只是相谐那点玄机。

李:
好,先来一个难看的,等慢慢整形,看能不能成美人:

白:
水泡,名词

李:
改了。貌似好点儿:


白:
他和蔬菜没有mod关系啊
另外吃的逻辑主宾都没登场……

两句中的“要”,pos貌似是不同的。
前句向实,为动词(want之义);后句向虚,为连词(与“才”配对,表only if之义)。

李:
前者是 want+NP,后者是 want to + V,可以看成情态动词

白:
看成副词最方便,与“才”搭配,不一样。意思是,只有出现怎样的情况,才会如何如何。

李:
有些勉强。要+V 很常见。only if是 “要是”。

要用清水泡过的才敢吃。
用清水泡过的才敢吃。
要用清水泡才敢吃。
用清水泡才敢吃。
搭配性不强。

白:
“你到底要怎样才对他放手啊。”

李:
怎样 是 V 的疑问代表:

你要怎样?我又能怎样。

白:
雨要在旱天下才好。

李:
雨在旱天下才好
雨要是在旱天下才好
雨能在旱天下才好
雨得在旱天下才好

哈,原来。

白:
葛优的广告词:面要弹

雨是下的直接成分,不是“能、得、要”的直接成分,没有穿透继承关系,这种配置下的情态动词都可以当作副词。这时填坑关系少了一层,无比清爽。

It is preferred that S. S的内部填坑结构跟这个prefer一毛钱关系都没有。没有穿透,没有继承,完全就是松散的一顶帽子。用副词干这样的活儿最为顺理成章。It is possible that……同理。在逻辑上叫“模态算子”。但是,“他准备搭一个棚子”里面的“准备”不是这样。搭的过程中,“他”还要身体力行。这对谓词就是(外层)穿透(内层),对名词就是继承(施事角色)。不穿透的,当副词很好。

李:
情态词 是助动小词 与 副词 基本上是一个意思 尤其在汉语。只不过 副词 修饰 动在外 情态修饰在内 这在短语结构中 表达略有不同。从依存关系看 等价。副词总类太杂 情态单挑出来 有益。“洗个澡” 与 “【能洗】个澡”,搭配关系不变,因为“洗”是短语的 head,是 “澡” 的parent,而 “能” 实际被吃掉了。【能洗】作为 base 短语结构 与 【好书】作为名词短语,对 dg 是类似的 psg 表达的引入。x bar 理论上 前者比后者 少了一个杠。因此我们只好叫 vg (verb group)不叫 vp。后者指的是 动宾这类 saturated subcat patterns。基本短语因此是 三个p 一个g:np ap pp vg。(还有一个 rp 副词短语 有时也可以捎上, very rapidly 之类。)

白:
与副词唯一不同的是可被副词修饰:今天不会下雨吧?

李:


very 修饰的也是 副词 rapidly 呀。“不会” 就是情态词的否定式。情态词的肯定式 否定式,还有一个特别的中缀表达 在动补合成词里。

能睡着 和 不能睡着
睡得着 和 睡不着

这些统统是 vg,后者词典解决。用所谓 lexical rule 去扩展词典,把 head 确定在 “睡” 上面。

白:
我的意思是从句法上看,情态词可分两类,一类像副词没坑,另一类有坑而且有穿透性。在写pos标注的时候就是不同的:
“准备动手,进行动员……”
准备动手,head在“准备”

李:
计划 类一般不归入情态小词,而是动词的 subcat,带 vp:

当然 在汉语 情态小词 与 计划 类动词,有个模糊过渡地带。灰色地带的 靠哪边 系统内协调就好。在欧洲语言 界限是明确的。英语 plan 带不定式 加 to 的。can 后不加 to,possibly 与 can 语义同 但它是副词。到了汉语 这些界限都模糊了。

白:
准确说是带体谓两可:准备早饭,准备吃早饭

李:
一个词 有 n 个 subcat patteens,是 norm:

白:
能做,有可能做,八成做,说不定做

李:
都是封闭小词,标签或mod或adv,都差不多:

白:
“他准备唱歌”,“准备”是head,“唱歌”是宾语,“他”做“准备”和“唱歌”两个谓词的逻辑主语。“他会唱歌”,“唱歌”是谓语head,“会”是“唱歌”的修饰成分。是这样么?

李:
是的:

白:
汉语副词修饰副词的情况有合适例子吗?

李:
副词修副词 主要就是 very 类程度副词

白:
“我奇怪他们为什么要走这条路。”这里的“奇怪”是什么词性?

李:
奇怪 心理谓词,subcat 带从句,至于叫动词还是形容词 无所谓了。
英语等价物 wonder:

白:
我标注为S/N,S
“我就奇怪了,一个大活人还能被这事儿给难住?”

李:

白:
汉语,“很”能修饰副词吗?“很迅速地撤离了”里面,是“很迅速+地”还是“很+迅速地”?
“很迅速”还是形容词,加上“地”才变性。
“很+迅速地”,语感不对。

李:
无所谓。这些大多属于系统内的规定与协调 无关大局。

白:
“云不会永远不散。”这里一个变通做法就是把“不会”整体看成一个副词,避免出现副词修饰副词的问题。对于封闭集合,这是可穷尽的。

还有,多重否定与结巴,怎么区分:“你不不不不是个溜子,是个空子!”

Me:

(为了与其他的 Adv 区别开啦,有意用 X,为的是后去处理双重否定的便利,都是系统内协调啦。)

嘿嘿

白:
看不出来肯定否定

李:
当然是否定,那个 vg 就是【不是】,POLARITY: negative

只有你想不到滴,没有我做不到滴。开玩笑啦。
其实,对于重复和强调,可以单单处理。
very very very very very veryyyyyyyyyy good
这个我们在英语单单处理了,汉语还没。道理同。

 

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之33:从语言的毛毛虫特性聊到语文纠错的辅助工具】

梁:
记得以前阅读,有人说,人在语言里玩,就像鱼在水里游,鸟在天上飞一样自然。

李:
结巴和哲学家除外。前者器官障碍,后者思想太过微妙,语言不逮。

白:
“原因被李四冷落多年的张三找到了。”
“张三被李四冷落多年的原因找到了。”
前几天抛出的句子,还没有回应。

李:
一个都不对,各有不对的缘由:


后一句不难debug,也值得 debug,前一句也许就拉倒了吧。

白:
“多年”也可以是人名
但即使是人名,也没有体现“被”

梁:
白老师,"原因被李四冷落多年的张三找到了" 是 “原因被张三找到了”,我看了半天才看懂。

李:
白老师出那种句子,我老怀疑有 hidden agenda,就是误导大众,坐收渔利。
那样的毛刺刺的句子应该从测试集刻意排除出去的。否则积累效应,可能留下后患。

白:
模型对头,都是顺手的事情

李:
那类句子最多算毛毛虫的毛刺。不仅灰色,而且罕见。strech 的不仅仅是系统的弹性限度,也是人类表达和理解的限度。

李:
这大概算 debugged 了吧:


顺带把毛刺也抹平了。

白:
“他脚这么大,能穿得下这么小的鞋子吗?”
“盖子这么小,能盖得住这个箱子吗?”

李:

白:
做理解,原则上不需要考虑排斥性;做生成,最保险的方法就是问大数据。实际上,文学家的功底往往在于,既和大数据构成显著差异,又和大数据训练出来的神经网络不冲突。就是“人人心中有,人人笔下无”。就是说,假如“大数据中的裸出现”是初一,“基于大数据的推荐”是十五,文学家就是典型的“躲得过初一,躲不过十五”。
躲过十五,就是前卫作家了。

李:
理解和生成 我的理解是:理解单位之间是有区别性特征的。不需要克斤克锚地给一个语言现象画圈 不需要画得恰如其分。只要在需要区分的现象之间划线(大多可以模型成非常多的种种 classification 的问题)。因此 确定标配很重要,因为标配是娄底的 本身不需要条件 是 free ride 的大路货。也因此 数据驱动是开发的正道,因为在非标配的现象之间划线 没有数据 没法确定一个中庸的全局最优的边界。也因此 没有一成不变的系统 系统总是随着数据逐步逼近。

白:
这就是毛毛虫
句法解决毛毛虫的“包络”,大数据解决毛毛虫的细节。

李:
所以一个适合 debug 的模块化而且不太纠缠(譬如 弯不过三)的系统架构,极端重要。

生成不同。生成可以回避灰色地带 回避鸡零狗碎。如果一个思想有n个表达,其中m是规范清晰的,没必要去管 n-m。 在 m 中排序选优就够烦了 根本不用淌混水。一般来说 生成比解析难度低一个量级。以前的mt系统,生成的代码量比 parsing 的代码量,小太多了。分析完 目标语词汇代入以后,拼拼凑凑也生成了不赖的译文,特别是中文是目标语的时候。由于中文无形态 加上表达上的裸奔性灵活性,生成与分析完全不成比例。如今大数据了,nmt 生成根据数据决定,就显得更顺畅了。鸡零狗碎的那些表达,分析要对付的长尾,到了生成,根本浮不上水面。

白:
鸡零狗碎在理解可以中粗线条应对,在正儿八经的生成中可以粗线条绕行。只有在刻意求变的文学创作尝试中才会触碰到毛毛虫真正的毛刺的微妙所在。

朱德熙先生有一次跟我们讲,他的小孙女偶然说出一句“花灭了”,被他听到,顿感特有诗意。虽然当时说者处在对语言还未熟练掌握的阶段。这就在毛刺的微妙部位了。

消岐、纠(容)错、修辞三者的关系很有文章可做。更何况有一种修辞就叫将错就错。话说,有些组合,比如“烧脑”,不会是早就静静地等在那里供大家飙新词的,中间一定经历了若干铺垫,使得“推荐”已经到位了,但是语言实践还差临门一脚的状态。谁能破译这个推荐的密码,谁就有了创造新词的主动权。机器写作如能成功创造流通度很高的新词,才算真正的“写作”。目前只能算“套路”。在歧义资源没有用尽之前,修辞和纠错浮不上水面。在语用环境许可范围内,修辞资源没有用尽之前,纠错浮不上水面。如果语用环境排斥修辞或者修辞资源用尽时,才能引入纠错。纠错用早了,会让用户觉得系统“自作多情”。

李:
比较明显和容易的是词法纠错 对于形态语言 这个功能有助益
另一个有助益的是 习惯用法和搭配的纠错
这些都是很实用的。

白:
词法纠错是浅层技术就可以解决的。

记得一个有意思的案例。我输入“南摩”(“南京摩托罗拉”的简称),百度偏要把很多“男模”的搜索结果推给我。再不济,来自上海本地的搜索对“南模”(“南洋模范中学”的简称)也应该偏向程度更高吧?

鲁迅用搭配习语的纠错得气死:“屠戮妇婴的___”

李:
如今的纠错已经很友好了 都是交互式 而且一点儿也不 intrusive ,全自动纠错基本没有人买账。半年前装了英语的 Grammarly ,很实惠。虽然用的时候总在想,这玩意儿我要是有时间做,肯定做得更好更贴心。中文的 Grammarly 这样成熟的对等产品,还没见到,将来应该是个巨大的市场。虽然由于中文的毛毛虫更难缠,文法更弹性,纠错难度大很多,但是只要有 resources,这个工作是有把握做好的,只是有很多很多细活要磨。不知道 Grammarly 目前的盈利模式到我大唐可以不可以维持,来 justify investments。当然,帮助人写作,像 Grammarly 那样的 plugin 装了,可以随时随地,无处不在,做得好的话,这是惠及几亿人特别是几千万学生的功德无量的事儿,不仅仅看钱。我会关注这个领域的机会,最不抵,也可以退休以后做。

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【李白之32:从“没 de Vt” 聊开去】

李:
问一下各位老师 “没的吃”、“没的喝” ,算是个什么结构?与 “没吃的”、“没喝的” 有何异同?“没的害臊”、“没的不要脸” 这类大概是口语习惯表达法 不在此列。

没的 vt == have nothing to Vt
VP 动宾结构 否定式宾语前置

“没 vt 的” 或者 “没的 vt 的”,也是 动宾结构的 VP,但否定式落在 v 不落在宾语身上,而且是 的字结构 做后置宾语。

梁:
“没的” 应该是方言吧?wei老师,闽南话。

李:

不仅是闽南 好像各地都有 至少是都能听懂的句式 .

“没的吃” = “没有可吃的” = do not have anything to eat.

没吃的 意思有差别吗?

do not have what to eat ?

没的 vt == 没的 可vt ?

问:“过得怎么样?” 答:“不怎样,这些年没的折腾。”

“没的折腾” 怎么回事?跟 “没的害臊” 类似 也是成语用法 而不是有产生性的用法吗??

白:
没的折腾,不懂啥意思

李:
觉得就是 “净瞎折腾” 的意思。字面是 “没什么可折腾”。

没的害臊 是 真害臊
没的不要脸 是 真不要脸
嗨 别提了 没的生气呢,是 生气生不过来 的意思,太多气生了

咋回事 本来是说 nothing:没的生气 == 净生气了

白:
没的any more
先说这个“没”是副词还是动词。副词不好接名物化的“的”,所以是动词。如果“的”是“得”之讹误,更不具备结合条件

李:
“没” 是状态v,没有动作性,通常不带 【得字补语】

白:
这俩人有的一拼,这俩人有得一拼

李:
“没的 vt” 中 “没” 比 “vt”, 谁主谁副?
“没” 主,那就是 v:have nothing to eat;Vt 为主的话,可以看作否定式 “的字结构”做前置宾语:nothing to eat,eating nothing

白:
没的,更像是存在量词的否定
对比:有人来了
有和来,谁主?

李:
我处理成 “来” 为主。“有” 虚晃一枪:
有人来 = somebody 来

白:
我是把他俩合并,共享坑(不需要那么多萝卜),其他事情落地时再说。

李:
形式上看,自然是“有”为句法的主要谓词。带 【宾+宾补】的 subcat pattern 结构。但实际中,把宾补当做主要谓语,把句首的 “有” 当做小词,处理起来有诸多便利,也更靠近语义实质。

白:
当小词,处理变式需要当心

李:
有前条件的:必须位于句首。严格说是,跳过副词类小词,“有” 居于句首。有这么个约束。

白:
“酱油有买的吗?”
有时又及物,有时又折腾出一个主语状语两可的萝卜

李:
“有” 是个很讨厌的词。台湾国语可以表达完成体,倒是与英语平行了。这个台湾国语的用法如今已经推广到整个华人世界了,算是丰富汉语时体系统的一个小贡献。

白:
闽南话

李:
“我有学琴过,就是一直没上路。”
“你有看《长城》吗?据说巨烂,老谋子的好莱坞滑铁卢。”

还好紧随着动词,这种用法不太难识别。

白:
当助动词好了

李:
查了一下,“我们没得吃,没得喝”,还真是用 “得” 的,比用 “的”的多。想不出来,这 “得” 怎么冒出来的。

白:
没得到吃,没得到喝。
没东西得以吃,没东西得以喝

李:

我们没的(or 得)吃,没的(or 得)喝,已经好几天了。
这地儿没的(or 得)吃,没的(or 得)喝,我们来干啥?

从上例看,没 de Vt 作为谓语,可以要求一个 【human】 的主语,也可以要求一个 【location】 或 【org】 的主语。【human】或【location】常做主语。

【human】 have nothing to eat vs. 【@location】 there is nothing to eat

“没的 Vt” 相对于 “有的 Vt”:

入伙吧,保你从此有的吃、有的喝。

可是除了 “吃喝玩乐”,这个 Vt 也不好延伸而无歧义(歧义表现在“有的”做逻辑宾语还是作为不定代词【human】做逻辑主语,其实这种做逻辑主语歧义在上述吃喝玩乐的用法中也休眠隐藏在内,不过可能性较低而已):

有的喜欢,有的不喜欢:
1. there's some to like and some to dislike;
2. some (people) like it, some (people) dislike it

没的学习???
nothing to learn?

白:
没的项目做,散伙算了。

李:
想得脑仁疼。就为对付这么个简单的破说法。

有一个简单的办法就是,对于这些个模模糊糊的结构,产生性不强,介于习惯用法的成语与非成语之间,见一个扔一个,统统进词典。“没的Vt” 也就不用琢磨这个 Vt 集合到底有多大了,哪些该词典化,哪些该规则化,各自的标配分析和休眠的种子又是怎样。譬如,大数据挖一把,trigram 频率就搞定大部该词典化的现象及其合适处置。而鸡零狗碎里面琢磨规律性,真心难,不值得也没时间花那个力气了。

嗨,奏酱紫了,好歹它了。

白:
“酱油有买的吗?”这里有坑:

第一,“酱油”和“有”没有先结合,而是选择了Sh。第二,“有”和“买”没有立即结合,而是选择了Sh。

李:
买的 = 买的人?
如果换成“卖”:卖的 == 卖的东西,回指 “酱油”。

“酱油有卖的吗?”
“没有卖的,有赠的。”

白:
哈,卖的、送的,买的、偷的、拿的,

李:
酱油有买的吗 == 酱油有买的人吗?== 酱油有人要买吗?
这是最常见的理解。但不排除:
酱油有买的吗? == 酱油有买来的么?(还是全部是赠送的?or 全部是抢来的)。
这里,“买的” 回指 “酱油”。

有意思的是,如果是“买”,指人的概率大(hence 标配理解),回指的概率小。
如果是“卖”,则反过来,回指是标配理解,指人概率小。

白:
在我的处理里,都模糊掉了。

李:
hidden 歧义,句法模糊掉,是对的。

白:
在“卖”的场景下,不完全是回指,存在“整体-部分”关系。也许还有留一部分自用的、送人的。先行词是整体,含省略的搭配词+的是部分:

礼我只收脑白金。

也是同样。

李:
我所谓 “回指” 包括 整体部分的关系。是我用词不确。以前说过类似的: hit sb on the head:hit 的是人 还是 人的头?其实都对:hit 了头 就 hit 了人。头”回指到人。

白:
白马非马

李:
i love iPhone for its screen
I love the screen of iPhone

喜欢的是手机还是屏幕?我们做 sentiment 的认为 都算。喜欢部分就是喜欢整体。

白:
Among the horses you gave me, I love the white one.

讲点逻辑的话,不算。爱屋及乌是有的,只爱屋不及乌也是有的。

说某些议员是狗婊子养的是骂人,说某些议员不是狗婊子养的也是骂人。

李:
逻辑是这样的:

I like the screen of iPhone and hate its battery life

so this person has 2 votes for iPhone:1 positive and 1 negative。只有这样 sentiment 的统计才真正具有舆情的意义。世界上没有完美(脑残粉的视角不算)。喜欢一个 object 永远是喜欢它的(让人喜欢的)部分。有时候这个部分(Aspect)被明确表达出来作为理由。有时候不表达出来。从舆情的角度,就是投票。喜欢一个部分,就是对整体的正面的一票。喜欢整体,没有明确表达喜欢的部分,也算是一票,因为他心里其实是有部分的,理论上不可能是百分百从头到脚到细胞到令人讨厌的部分都喜欢。前者除了计入褒贬情绪(即舆情)的统计票数外,还提供了 actionable insight,具有具体的情报价值,后者只是舆情的发泄而已。

白:
往往,喜欢一部分而不提另一部分,就是委婉表示不喜欢另外部分

李:
那么想,就没法做舆情统计了。你那是言外之意,正话反说;不是没有,总体是少量。

有一次应邀到一家公司给个 sentiment 的 talk,听众有问,讽刺如何识别,我说,讽刺的确是挑战,不仅对我们是挑战,对大家都是挑战。讽刺中的形式痕迹,也有可以识别的,但更多是缺乏形式痕迹的,或者形式表现在语气和表情这些 text 以外的方面。

可以识别的形式有:

1.  thank you for 【BAD behaviour】
2. 【BAD behaviour】,great!

【BAD behaviour】是各种具体的负面表述或吐槽,而句首或句尾的正面情绪 thank you 或 great,形成反差,因此构成了形式上可捕捉的讽刺。通常的逻辑总是拿具体的正面(反面)证据来支持正面(反面)的情绪或评价。如果这个范式被打乱,就可以传达讽刺。

接着我说,但是很多讽刺是没有显式的文本痕迹。对于人的理解有时也构成困难,比较木的人或情商较低或经验不足的人,往往也无法 decode,对于机器自然也就难了。譬如 刚谈恋爱的愣头青 往往听不懂对象的话。但对象说 no 的时候,他不知道其实不一定是 no,很可能是 yes。

达令,给你买个你一直超喜欢的名包吧?
No,这包太贵。

这个傻瓜居然就真地不买了。三个月后,对象跟隔壁阿二跑le。阿二不仅仅有钱,也有心,懂得察言观色 body language,善于 read between lines,尤其擅长 decode 女性的话语。

马:
看得懂这标题吗? "曝国王将考神交易至鹈鹕 联手浓眉组双塔" 也许有背景知识的能秒懂,我是没懂,看了正文才懂

白:
这个例子好
“联手”的逻辑主语怎么确定很有看点。

李:
我完全看不懂。不知道我的 parser “看懂了”没有:

从模拟domain专家理解的角度,几乎肯定错得离谱,因为根本没有domain的知识训练和词汇外挂。我们 domain-independent parser 的是语言学分析的“合理”。在 domain 化(domain porting 90% 涉及的是词汇表术语及其本体的引入,其次才是边缘规则的微调)之前,上面的这个parse,看上去应该说是合理的。

白:
需要知道,“国王、鹈鹕”是org,“考神、浓眉”是individual,联手individual的只能是individual,等等。“a联手b组c”,有兼语的味道。组,是动词,组成的缩写。

李:
“浓眉组和细眉组,分头出击。”
“浓眉组双塔顶不过细眉组单塔,真是不可思议。”

白:
语义场在起作用
球队、球员、转会交易、阵型,暗中互相支持。这些命名实体很可能不用定义什么,就可以自动获得这些标签。大数据太丰富了。还需要知道,在NBA场景下,“浓眉组”是超低频的。

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之31:绕弯可以,弯不过三】

白:
“一定要在他家里没有醒过味来的时侯把生米做成熟饭。”
李:
词典:加入成语 醒过味来:
白:
填坑严重不全的,要减分啊……
“在他家里”这个,貌似掉进就近结合的陷阱了。
李:
“在他家里”不是主要问题,那个可以补救。“在” 本来就是可有可无的 P。
白:
在 和 时候 的间距,被你这么一弄弄短了。
李:
间距短不是问题,小词配对的目的就是把关系厘清。达到目的了,间距无所谓。“在。。。家里” 与 “在。。。时候” 是两个“在”共享了一个syntax。
白:
“在他家里还没有察觉到这一层利害关系的时候把生米做成熟饭。”
李:
白:
也是辖域问题
李:
“在” 比较特别,是个万能介词。做了补救唤醒,主语还是恢复了。
白:
“他家+里”,做主语的可能性就太小了。要是能搞成“他+家里”,就不一样了。
李:
关键还是怎样处置合算的考量。
“在(PRP)家里” 脱离上下文的时候 就是一个扩展的合成词。处置成更多做状语的PP 还是更多做主语的NP 就是一个强盗的规定。事实上目前的处置 “(PRP)家里” 已经是主语状语兼容了,因为方位词结构在汉语的确是大多做状语 像PP,少部分做 NP,因为方位词本身是从名词变过来的。可是前面出现了一个 “在”,因此就几乎决定了其状语特性 很难翻盘了。这时候再带入辖域的考量,说这个 “在” 被 overloaded 了,不能光看就近原则,它可能不就近。然后就要在两股力量里面去权衡。第一股力量是就近原则的  “在+方谓词结构”,非常常见。第二股力量是 方位词结构去填主语的空,这个其实不常见,因为主语是经常省略的。然后指望一个 “精巧” 的系统能在上面两股力量的权衡中,恰到好处地拿捏分寸,达到人的具体情况具体对待的灵活性。这样的要求不大现实 而且极易弄巧成拙。因为里面绕弯太多了,而且都不是确定性的。系统不能做得太精巧,正如人不能太聪明,有过很多这个教训。绕弯可以,但弯不过三是基本原则。
“弯不过三”是我实践中总结出来的开发原则。这个弯就是规则之间的 dependency。理想的系统,规则之间是完全独立的,相互不牵扯,这叫做“规则与规则分开”:否则规则系统就容易成一团乱麻,宁肯冗余,也不要把规则搅合在一起。但是,实践中,我们其实做不到完全的规则独立,分层处置的本身就已经隐含了某些规则之间的依赖关系(dependency):某些规则是 assume 另一些规则做了某事以后才有意义的。这时候,设计开发系统的时候,就需要一个原则性的掌控,那就是“弯不过三”。意思是说,相互牵扯的规则最多可以有三层,多于三层的,就违反原则了,容易造成系统的不鲁棒,最好不要到三层: a 依赖 b,b 依赖  c,这就已经危险了。c 如果 还指望 d 那就超出了系统逻辑链条可以承受的极限了。可以做出一个绕弯多于三层的系统,在某一个时候也调通它。但是这样的系统 几乎不可维护。弯不过三是针对具体规则而言的原则,并不是说 作为一个规则系统,只能做三层,那就太局限了。事实上 规则系统整体绕弯可以多达百层。至少几十层是常见的,那么在几十层的分层处理中,这个弯不过三的原则一定要坚守。模块之间总体的依赖不在此列,譬如做 PP 要求基本 NP 已经就位,做 VP (包括动宾、双宾、宾补等各种 subcat patterns)要求基本的 XP (NP,AP,PP,VG)等短语都已经形成,做主谓要求VP结构已经解析,等。
白:
为什么我的眼中昨天的把字句辖域和今天的在字句辖域是同一个问题
李:
因为你是从一个角度看,确实是同类问题。我说的不是辖域,辖域只是 弯不过三原则中的一个弯而已。如果这个弯与其他弯的交错中,造成了违背原则的危险,就要舍弃这个弯。
白:
都是介词跨定语从句,而且也可以规定跨不过三,那样的话同一个问题就可以在同一个框架下解决。
李:
你就是要说,有很强的可能应该: 家里还没有察觉到 --》 SVO,来让出那个 “在” 去找远距离的搭配。第一,“还没有察觉到”对主语的要求没有那么强烈。主语省略太常见了,以至于人类创造了显式和隐式的被动句。
“在还没有察觉到这一层利害关系的时候把生米做成熟饭”
上句没有主语,一样很顺:“还没有察觉到这一层利害关系的时候”。第二,“在 。。。里” 作状语,是压倒多数。甚至 “在 。。。家里” 也是压倒多数。这个是我毛姑姑 但八九不离十,可以统计验证的。第三 “在” 恰好遇到辖域的远近距离的歧义的情形,就是你现在关注的这个现象,其实没有那么普遍。这个也是我的毛姑姑,也许可以统计推翻。即便就这个辖域现象本身而论,远距离辖域控制 多于 就近原则的可能性有多大?感觉不超过一半。
白:
定语从句中,本来就有缺项,主语再省略就有点过了。所以,正常主句中主语省略状语强化占优我认,但定语从句中应该是主语填全状语弱化占优。
李:
听起来有理,但照你这些说法做,总觉得走偏的危险大。
白:
顺手而已
李:
感觉是属于过分聪明的思路。你又增加了一个维度: 主句 vs 从句。而且用 “占优”  这样的不确定性的平衡。说来归齐,主语和状语弄错了 有什么大后果么?
白:
填坑角度,这都是应有之义,根本就不用加维度。
李:
其实主语宾语弄错了 都没啥后果。因为主语、状语和宾语都是姐妹节点,都与 parent 有直接亲属的关系。弄错了,对于 IE 抽取,没啥影响(对于 MT 可能有些影响)。这是从语用考量。
白:
不是的,他家+里,没有这个意思。
抽不出来。
李:
从句法考量,就是一种关系弄错了,多大程度上影响其他部分的 parsing。如果影响小,就无所谓。在上面的例子中,是没有影响。第三个考量就是,弄错了,真要翻盘,可以不可以,就当是休眠了,可以唤醒不?当然可以唤醒,都是儿女,不过是标签有误,要翻等句法完成以后也可以翻。我不把句法看成是最终的语义理解,更多是把它看成桥梁和标配的语义理解。作为桥梁,有了架子,怎么改都可以,因为句型清晰了。作为标配,翻盘自然也是可以的。
怎么抽不出来?那么 “难过” 是怎么抽出来的?不能因为 “难过” 不是 “难/过”,于是作为非情感的后者就抽取不了?一样可以抽取,抽取出来说,标配错了,这个不是 sad 的情绪(emotion),这个是客观的困难(negative behaviour), 虽然都是负面的东西,情报上我们是当作不同的情报来抽取的。后者是 actionable insight,前者不过是情绪而已。
白:
翻盘多了,线速就是个笑话。
李:
QUOTE: Countless lessons learned over the years in the NLP system development show that a robust real life system should not be too sophisticated just as man should not be too smart.  As a rule of thumb,  anything involving more than 3 levels of dependency is too delicate.  You can "make" it work today, but it will break some day.
基本上如此。
翻盘是聚焦以后的动作,都到了雷达上了,还有什么可以影响线速?长尾在语用层面成为短尾了。这个以前论过。指望句法做长尾是劳民伤财,吃力不讨好。句法对长尾能有一个相对 “合理” 的安置,就已经很尽心了。譬如 都是 children,但是主宾有错位。其实,宾语很少错,主语有逻辑宾语的可能,不过是多了一种可能而已,对于语用是小菜,谈不上影响线速。譬如 我有一条语用规则要查宾语,instead of 查宾语,我不过就是查一下 “宾语 OR 主语” 而已。这个怎么可能影响速度?搜索空间没有任何实质变化。

【语义计算:汉语语序自由再辩】

“张三把眼睛哭肿了。”
眼睛都被张三哭肿了
张三眼睛被哭肿了
张三眼睛哭肿了
眼睛张三哭肿了
哭肿张三眼睛了
张三哭肿眼睛了
哭得张三眼睛肿了
张三哭得眼睛肿了
张三眼睛哭得肿了
张三的眼睛哭得肿了

眼睛 一句是主语 一句是宾语 句法不能说错。supposdly 到语义模块去统一到逻辑语义上去。

Me:
这一组图献给@刘群 老师
我们曾经争论过汉语语序的自由度问题,我说汉语语序除了极少数对svo有直接冲突的OVS(正解SVO)不被允许外,其自由灵活,到了几乎随心所欲、想啥说啥、有法无天的裸奔的程度。
刘老师颇不以为然,坚持孤立语的本性就是语序固定,汉语不会例外。

刘:
谢谢@wei 把这些图献给我
换个例子:猫咬了狗,狗咬了猫,猫狗咬了,狗猫咬了,咬了狗猫,咬了猫狗,……语序自由吗?

Me:
自由度是一个区间,不是二值吧
ovs 不被允许,是其不自由的一面,不过数量上不自由的变式远小于自由的变式。
总之,不看数据的话,我们不会相信汉语如此任性。

刘:
我那个例子,osv,sov,vso,vos都不行啊

Me:
猫狗咬了,狗猫咬了
听上去没啥问题啊,还是我耳朵有问题?

刘:
不知道谁咬了谁

Me:
不知道也没啥问题啊
都是合法的

刘:
意思变了,就不是语序自由了。语序自由的前提当然是意思不能变。

Me:
拿语义或常识来纠缠句法语序自由, 不是一个好的辩护汉语总体语序不自由的路子
窃以为。这样辩论的话,我就给你: 鸡我吃了,我鸡吃了。自由还是不自由呢?

刘群:
你也是用例子来证明语序自由啊?并没有统计数据
规则都有反例,个别反例不能推翻整条规则
语言规则吧

Me:
你举的更像是反例,弄了个猫和狗,恰好是本体上平行的概念,都食肉,也都被食。
这种例子更像是反例 而不是 norm,所以我以子之矛可以还给你否。
当然 到目前 控辩双方都还停留在例句阶段。都还没有统计数据。

刘:
我的例子一点都不特殊:特朗普会见安倍,俄罗斯占领克里米亚,……

Me:
克里米亚俄罗斯啥时占领了
特朗普安倍会见了吗?
安倍特朗普真滴会见了啊?
会见了安倍特朗普还见了谁呢?

我的例子也不是 outliers 呀。说出来听起来都那么接地气

刘:
就用这个例子吧:"我的例子也不是 outliers 呀":我的例子outliers也不是啊,outliers也不是啊我的例子,outliers我的例子也不是啊,也不是我的例子outliers啊,也不是outliers我的例子啊。

Me:
谢谢 & 欢迎刘老师站到我这边来!
这不正是语序自由的现身说法吗

刘:
嗯?你觉得上面那些句子都成立吗?我觉得大部分都不成立。
我是反驳你的说法

Me:
不成立?

刘:
不成立

Me:
看样子得 crowdsource 给 native speakers 去投票决定了。

我听起来无障碍,都理解了不算,感觉还蛮顺,至少是接地气:老百姓就是这么说话的。社会媒体更甚。

当然如果给新闻系教授, 他可能会教育学生不能这样写。在有很多个表达(不仅仅是语序自由)的时候,技术文献和新闻工作者会被教导去选择所谓规范的表达法。但语言事实和普罗通常不听这些指教。

其实 坚持汉语语序自由得不像话的观点,不是为论点而论点,而是提醒自己和同事,我们在写 parser 的时候,必须把语序自由作为一个重要的角度来看汉语。 否则无法做出一个鲁棒和召回率高的汉语解析器。

刘:
不管哪种语言,在社交媒体上,都不太讲究语法的,特别是短句子。这不能成为汉语语序自由的证据。英美人说话,口语、短句子、社交媒体上,不合法的句子比比皆是,不能因此说英语语法就要废除了。

Me:
我们当然希望语言都是语序固定的 这该省多少力气啊。线性pattern就是以次序(linear ordering)为基,语序灵活了,patterns 就成倍增长。非语序的其他因素可以在既定的pattern里面调控,无需增加patterns,唯有自由的语序是一件躲不过去的功/工。

刘:
即使是汉语,我们表达稍微复杂的内容的时候,一般都会用svo的,不会随便改语序,否则给自己添加麻烦

Me:
汉语操蛋就操蛋在这里: 你本来就没有形态,小词也是能省就省,你还要语序灵活自由,你还让人活不活?国人的投机取巧甚至在语言表达上也如此彰显。可是我们还是要面对现实。

刘:
没有这么可怕,汉语parser的准确率比英语并没有低太多

Me:
汉语 parser 比英语没低多少,是在新闻上么?
新闻是语言大海的三滴水。

刘:
其他领域没有确切的数据可比较。

Me:
还是可感觉的

这一回合,算是打平了,如果刘老师不坚持要我举白旗的话。

刘:
不能靠感觉。
@wei 老师客气了学术讨论,有争议很正常。
我也没有数据说服你。

 

 

 

【相关】

【语义计算沙龙:语序自由度之辩】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之29:依存关系图引入短语结构的百利一弊】

李:

至于基本短语的 Phrase Structure (PS) 边界迷雾(【长大的战友】),除非发现碍事(譬如不加修整地在产品 display这样的xp结果),不管他了。说到底,pure dependency grammar tree representation 本来是没有显性边界的,没有短语结构(PS) 的牵扯,一切都发生在词与词(terminal nodes)之间,只不过我们在实践中,把乔老爷的短语结构的概念,有限度地在 shallow parsing 阶段带入,成了一个 hybrid tree, 这才有了这个所谓的边界的问题。换句话说,这是一个系统内部在模型化过程中“人造”出来的问题。

白:
这是“坑”和“坑的坑”不加区别地混同的结果。

李:
这种 hybrid 的表达法的好处太多了,以前论过 (e.g.语义计算沙龙:基本短语是浅层和深层parsing的重要接口》),带来这么点副作用我觉得可以忍受。但我们应该记住,dependency 的本质原本就是独立于短语结构的(属另一个 very competitive 的 syntactic representation),所有的边界都可以通过父子关系,间接而完整地事后确定。譬如上图中“已经”和“儿女”都是【长大的战友】的children,“长大”也是 ,边界事后确定校正就包括了这些儿女,if needed。不影响核心逻辑语义及其理解是关键。

白:
如果站在填坑的角度,区别二者是理所当然的,并不需要刻意多做什么

李:
白老师是,站着说话啊。

白:
这只是说明“树”这种结构不如“坑-填坑”这种结构更接近语言的本质

李:
白老师上面这句话很妙啊:我个人的翻译就是,乔老爷的短语结构那一套(PSG及其表达法),不如词(概念)与词之间的依从关系更接近自然语言的(逻辑)本质。I honestly cannot agree more.

所谓坑与填坑的结构,就是依从关系建立的条件匹配与满足。“不需要刻意多做什么”是你心中的 approach。我现在的patching就不是这样了,在我这儿,为了人看着舒服的事儿,可以做,但不是必做。必做的事儿是在应用的时候碰到了不想要的后果,那就回过来再把屁股擦干净。

白:
他那些杀红了眼,刺刀上沾满血的战友们可管不了那些了。

“儿女”有坑,把“战友”捎带上还可以解释。“刺刀”的坑是“枪”,“枪”的主人是human,这弯儿拐的。句法非标配的坑,靠语义中间件凌空凿开一个坑,才能把定语从句的钩子钩上。

第一个“那些”如果去掉,好像不通了,或者说链条断开了:

?他杀红了眼,刺刀上沾满血的战友们可管不了那些了。

所以,凌空开凿的坑无法填装远距离的“友元”。

李:

白:
“刺刀上沾满血”是自足的,弄个S出来,似乎不能自圆其说。

李:
有那么自足吗?

战友们刺刀上沾满血
战友们沾满血
刺刀沾满血
刺刀上沾满血

这个后置词“上”字把本来可能的一个主语降格了,变成更像状语了。这就为 “战友们” 出场做主语创造了条件或坑。

白:
S,一定有填坑的关系。“战友们”究竟填了什么坑,不深究是看不出来的。
好像“刺刀”和“战友们”通过这种结构浑然成为了一个整体,“刺刀”成为了“战友们”的一个部件(body part)。

李:
虽然董老师那一层的逻辑语义,可以不管这些表层的 trigger 而保持 【human】 和 【physical object】二者的逻辑地位的稳定,但是 parsing 过程中,这些句法痕迹及其引致的句法“坑”的动态变化还是有迹可循的:PP 把潜在主语降格,让位给其他 NP:

他沾满血了?哪里沾满血?
他在(他的)刺刀上沾满血,身上滴血不沾

“战友” 是大物体,“刺刀” 是小物体。“刺刀” 在这个场景,就是大物体中的一个小物体,与 body part 功能很接近。“他刺刀上沾满血,可手上却没有”,这与前一阵子讨论过的英语表达 "hit sb on+bodypart" 类似,到了汉语就成为所有关系的表达了:

他击中了我的头

击中 的是 “我” 还是 “头”? 沾血的是“人”还是“刺刀”?当然,“上”也是一个讨厌的小词,在接近成语的表达法中不一定降格,譬如 用“组织上”代替“组织”做主语的情形。

组织上批准了你的建议。

对于战士,刺刀就是手脚的延伸,成为一个战士的不可或缺的部件。

白:
地方上,县上,州上
甚至“今上”

李:
这现象是词典化的了吗 还是相当地开放?

白:
他衣服上残留着油渍。他工位上挂着两条领带。他单位里流传着很多绯闻。
他桌子上永远整整齐齐。

可以肯定,1、这是一个系统性的现象,不是偶然或者活用。2、到底是主语还是应加但未加“的”的定语,似乎有个连续的谱系。3、一个具体用法在这个谱系中的定位,与形式状语和形式主语整合为一个整体、或者说形式主语延伸到足以包括形式状语的可接受性有关。整合越不可接受,形式主语越像定语;整合越可接受,形式主语越像逻辑主语。

李:

语言学理论中 主语与定语 地位很接近,虽然前者属于 arg 后者属于 adjunct。它们都是 external 的成分 有很多相通之处。乔姆斯基xbar 理论的起因之一就是要统一主语和(部分)定语,在句法结构的理论上给一个统一的说法(参见 乔氏 X 杠杠理论 以及各式树形图表达法)。

 

 

【相关】

【李白对话录系列】

《泥沙龙笔记:漫谈自动句法分析和树形图表达》

乔氏 X 杠杠理论 以及各式树形图表达法

【语义计算群:句法语义的萝卜与坑】

语义计算沙龙:基本短语是浅层和深层parsing的重要接口》

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【语义计算:耍一耍中文 SyntaxNet 和百度翻译】

我:
朋友终于装上了赫赫有名的谷歌 SytaxNet 中文自动分析器。随手试了一个例子。From syntaxnet, we have this parse:

From yours truly, this is the result:

To laymen's eyes, they look alike.  They are both dependency trees. Of course. They seem to have used the same or similar tools for drawing trees.  But beyond these, they are so different.  天壤之别 in data quality.

For the SyntaxNet:(1) the link between 啥 and 体验 is wrong: it is not conj;(2) subject is also wrong,公司 should not be subject, subject is 投; (3)object of 投 is wrong, it is not 人去楼空, it should be 公司; (4) 投-VP is 定语从句,where syntaxnet is wrong too.  Out of 8 dependencies, only 2 can be judged as right (了 is linked right; 的 might be judged as right as it is linked to 投 as relative clause marker) and they only involve 小词, all notional words are linked wrong and the function word 家 is also incorrectly attached, it should be linked to 公司.  This is from the parsing system which claimed most accurate a few months ago.

白:
这里涉及几个细节:1、凭什么断定“家”是量词而不是名词?在扫一个处理一个的工作模式下这很有些勉为其难,因为真正强关联的词“公司”可能隔着远距离才能看到。要明确大家的工作模式都是可以等到不管多远的距离才出现的,大家一起比才公平。

1、凭什么断定“家”是量词而不是名词?在扫一个处理一个的工作模式下这很有些勉为其难,因为真正强关联的词“公司”可能隔着远距离才能看到。要明确大家的工作模式都是可以等到不管多远的距离才出现的,大家一起比才公平。2、“投”和“体验”各空出一个未填充的坑,但这两个坑是有关联的----谁投,谁体验。两种分析结果都没给出这个结论。

2、“投”和“体验”各空出一个未填充的坑,但这两个坑是有关联的----谁投,谁体验。两种分析结果都没给出这个结论。3、“是”接受谓词主语时,对宾语(表语)进行了一次约束,即宾语要么也是谓词,要么是对谓词有概括能力或者收束能力的名词。最后进入宾语位置的,到底是动词“体验”还是名词“体验”,是有讲究的。

3、“是”接受谓词主语时,对宾语(表语)进行了一次约束,即宾语要么也是谓词,要么是对谓词有概括能力或者收束能力的名词。最后进入宾语位置的,到底是动词“体验”还是名词“体验”,是有讲究的。“什么”可以把动词强制名词化,也可以自然修饰一个本色名词。但这对“是”语义是有区别的。谓词 是 什么 + 谓词,说的是两个谓词在时间上的叠合、因果上的联系。谓词 是 什么 + 名词,说的是用后面的名词对前面的谓词进行分类。“投”与作为名词的“家”,有那么格格不入吗?如果语料中投张三家、投李四家、王家赵家都OK,这里仅看到“投了家”就断定不OK,也太武断了点。既然不能断定不OK,起决定作用的还是与“公司”的强连接。对于静态文本处理的场景,一次吃进一堆,把强关联的量名搭配挑出来不难,对于语音或动态文本处理的场景,确实需要等。即使是静态文本处理,如果确定pos和做match是两个分离的步骤,pos的确定不依赖于match的阶段性成果,那么确定pos需要用到的窗口就必须足够大——大到可以把远距离的量名搭配容纳进来。否则,“家”的名词义项会在概率上占优,同时在局部找不到推翻这种优势的硬证据。

wang:
白老师,这里引出了2个问题  1),POS 和match ,如何走的问题? 2)不同情形下,窗口多大要拉多大的问题?

本人的主张,是POS和match协调走 。或说是WSD和Parse协同进行。若不依赖match阶段性结果,单靠pos自己,可能窗口再大,效果也不见得好,除非支撑的语料能足够大。

“投了家去年还是公司业务额超过同行二倍,而今年公司利润却几乎是零的公司”

这里的“家”与最终的关联的“公司”,实在距离太长,而且其中还有干扰型的两个“公司”。要支撑这样的窗口长度的数据,--太难白硕:

白:
有“公司”出现就可以被wsd加分,真正修饰哪一个“公司”,只能靠matcher独立判断。除非构造一个受“公司”干扰、后面居然还不取“家”的“量词”义项的例子。比如,“没有家的支撑他不可能把公司做这么大。” 或者再离近一点,“没有家的支撑公司不可能被他做到这么大。”wei wang:

wang:
窗口长了,内容的处理只好粗糙些了白硕:

白:
如果是纯粹基于规则,可以耍个流氓,把“家”归入一个变色龙词类,见人说人话 见鬼说鬼话。但是基于关联,耍不得这样的流氓。N+和N不能用X来做wildcard。wang:

wang:
嗯,明白。基于关联的方法,虽然有点难,但走远还是有望的。白老师的例子,“没有家的支撑公司不可能被他做到这么大。”,感觉“家”也不能被“公司”挟持着
想了一下“没有家”做特征也不妥,“没有家支持公司开辟海外业务的保险公司”
这里“家”--又变了“量词”。解析不决问谷歌,或百度:Without the support of the company can not be done by him so much.

Without the support of the company can not be done by him so much.
wei wang:
谷歌解析,--把“家”弄丢了No home support company can not be so big.

No home support company can not be so big.
百度,家倒是出现了,“家”字面翻译wei wang:

“投了家人去楼空的公司是啥体验?”
百度:The family went to the floor of the empty company is what experience?
wei wang:
谷歌:Voted to empty the company is what experience?似乎,谷歌对量词“家”还是可以的

似乎,谷歌对量词“家”还是可以的
-----看来“家”是量词和名词,结果也是不尽人意

我:

@wang 你造句的时候能不能普罗一点儿?不带这样的。

wang:
李老师,第一个句子分析不错。第二句子是为了拉长“家“和关联的“公司“的距离,而造的,确实有点难为机器了。只是说明,距离长可很长。

我:
我是说你缺乏同情心, :=)

wang:
第三个句子,那个“家”没处理出来,有点遗憾。
认错,同情心对机器。“开辟海外业务的保险公司” 独揽了,导致断链。

白:
还没有见到用干扰项“公司”把“家”成功引走的例子。

wang:
说明这抗干扰能力,不是一般的强啊。

这家早就成为公司的临时办公室了。

刚才仔细模拟机器分析句子,“没有家支持公司开辟海外业务的保险公司” 分析出“家”为量词,这个确实太难了。好几处匹配都几乎坐实了“家”为名词,而翻盘的力量实在太微弱。当然基于规则的方法,可能会另有春天。
谷歌的翻译确实了!

There is no insurance company that supports the company's overseas business

以上这是百度的翻译

No home support company to open up overseas business insurance company

以上是谷歌翻译。百度的表现,真心不错

白:
本群就有百度的好几位大牛哦。
“难道就没家给公司提供像样的办公用品的公司吗?”

很赞!

wang:
向百度大牛学习!

白:
好几位百度从事NLP的专家在本群潜水。

“百度”没逃过去这个远距离相关的陷阱。

1024位素数作为模,应该够安全了。

digits没翻出来,prime也没用复数,捣浆糊啊。
模翻成model, 数学上也不算对。

三位整数做密码,太不安全了

又是捣浆糊。
但这里明显是三“个”整数的意思,只不过语法错了。原文是一“个”整数,有三个十进制位。

量词兼其他词类的情况,是很细的细活儿。
调戏完毕。

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【一日一parsing:#自然语言理解太难了# 吗?】

白宫命令司法部申请紧急冻结今天华州政府在西雅图联邦法院申请到的总统冻结穆斯林七国入境EO的临时冻结令。
如果成功的话,临时冻结令将被紧急冻结令冻结,穆斯林七国入境继续冻结
#自然语言理解太难了#

wang:
李老师这是要把机器累吐血啊!
不太理解为何要和这类超长难句对上了。
以前只顾着忙着单句,对篇章理解终未敢有奢望。
恩,到时句法分析,感觉可以分成若干小句来分析也不错。
只要把前继跟准了,把大树搞成森林,由若干棵小树构成,而每个小树分析结果表达清晰准确。也是一种选择

我:
不是跟难句过不去,是 parse 着玩。现如今凡是遇到 “绝妙的中文”、,#自然语言理解太难了#  这类标题,就忍不住想,我 parse parse 会怎样呢(e.g. 《立委科普:机器可以揭开双关语神秘的面纱》)。是一种类似于软件工程上 stress test 的心态,人说难,偏试试,看极限在哪里。哭笑不得的结果有之。喜出望外的也有,以为难仔细一想其实不难。总之都会有启发。不特意为这些 outliers 去动手术。不值当。

特别心烦意乱的时候,啥招都不管用,只有调系统可以安神。明知系统是个无底洞,以有涯对无涯。killing time,一点儿也不殆。

白:
“这些泡沫包装糟透了。”
“这些水果包装糟透了。”

我:

“泡沫包装”作为合成词词典化了。

白:
“这些学生宿舍都没回就一头扎进了图书馆。”

我:

第一句差强人意,层次纠缠。知道病源,不敢确定该不该修理。分层这事儿,你不能占尽了它的好处,一点不吃亏啊。主要是衡量亏的大小,值得不值得去打补丁或做高危微调的动作。观望。有时候需要时间和新的数据去驱动和决策开发和维修。

 

【相关】

【李白对话录系列】

《立委科普:机器可以揭开双关语神秘的面纱》

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

 

 

 

 

 

【李白之26:汉语动结式和情态式的隐式被动现象】

李:

这一句有点难有点难。

难在“相比”作为副动词,这口气太长了:里面混杂了并列小句的定从。

这句 tricky,实际上是有两个被动式:一个是“被关押”,一个是 “被...打死”。汉语中被动态可以而且经常不用显式“被”。这样一来,如果两个动词前面出现了一个 “被” 字,这个被字可以给第二个动词,近水楼台不得月的第一个动词没得到这个被,也并非就不可以是被动。

有点操蛋。算了,拉倒:就近原则,作“被关押”解。否则容易顾了东头顾不了西头:

wei wang:
是否有些武断?
双“被“不能同时出现在一个句子,不顺口,区别还是在“病死“or“打死“,语义制导了句法。若是“夹伤“又如何?可能夹伤己,也可能夹伤他,打死,病死排他性强。

李:
对,病死 vi;打死 vt。

白:
病死一个坑

动结式动词,两个坑都相谐的,只说一个,一般认为是逻辑宾。“张三赶走了”意思基本等同于“张三被赶走了”。

李:
动结式 被动态的常规是省略“被”,而且这种宾语提前,比宾语后置更常见。汉语中的 可能情态 也具有这个特点:宾语提前,或者说,隐性被动,更常见:

他可雇
== 可雇他
== 他可被雇

尽管 “雇” 是两个坑,而且都要求 【human】,但是 “他可雇” 里,只有一个 NP 处于主语位置的时候,常常是填逻辑宾语的坑,而不是逻辑主语的坑。机关就在这个“可” 上面。

白:
所以,处理到动结式了,可以把已经入瓮的“被”踢出来,让其重获自由。

记得有个古代的故事,别人给皇帝送的吃的,宫里守卫拦住了,问:“可食否?”送的人回答:“可。”守卫拿过去就把送来的东西吃了。

李:
这个故事妙。汉语的 【可+V】 是一种构词法,其实就是合成(or 派生)形容词(deverbal adjective:derived adjective or compound adjective)了,但是词源上来自动词的情态式。问的人是当动词情态式问的,回答的人是当形容词理解的。拧了。其实是历时语言灰色过渡阶段的现时反映,颇有意思的汉语语言学。

白:
可造之材,可塑性好,高可用

李:
类前缀“可-”,可比较英语的后缀派生词:-able

readable:可读
可行性,可读性:feasibility,readability

这是从形容词通过后缀“-性”进一步派生为名词了。非常有意思的现代汉语“类派生”现象(词法上介于 compounding and derivation 之间的语言发展苗头,我博士论文中谈到汉语类语缀现象时,特别论过: PhD Thesis: Chapter VI Morpho-syntactic Interface Involving Derivation

白:
要,也是:“已经放下武器的敌人不要打”

李:

白:
这些都带有决策性质,决策者就是说话者,执行者就是听话者,不言而喻。所以再有指名道姓的萝卜,一定填逻辑宾语的坑。执行者(听话者)是隐含的逻辑主语

李:
决策的语义对应的是语法的祈使句。当然祈使句在孤立语中有概念,少形式,也不好区分。

白:
如果特别对听话者指名道姓,往往用同位结构:你们三团要狠狠地打。

李:
“你们” 第二人称,可以另算。“我们”第一人称也算有痕迹 (lets)

白:
这是旁证

李:
“咱们” 就更棒了,作为祈使句形式痕迹,更加彰显。

白:
那是套近乎

李:
“咱们” 开头,几乎都是祈使句。

wang:
你们三团要很很打
这句,主动,被动都可能。刚才白老师说的“要打”一被动也成立:
部队一定要打压一些有骄傲的风气的单位,你们三团要狠狠打。
这个例子没举好,
还是不存在被动?只能是主动缺省宾语?看来得求教二位老师

李:
逻辑宾语的解读对于这类句式是一个蛮明显的趋向、heuristic, 总是可以找到反例

wang:
嗯,谢李老师解答,我这边太晚了,有空聊

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之25:句法能简则简,只要不影响总体结构】

李:
董老师的例子。

 

勉强回答了谁逃票翻墙。还有 谁进入 谁被咬死,暂时搁置。貌似汉语“连动结构”可以很自然一路顺下来。

白:
一路顺下来,是因为另一个坑都不是人。
那个“被地主放狗咬伤了腿”可以试试

李:


动宾离合词 “放狗” 带了个句法的 O “那个” 貌似矛盾,原来事出有因:放狗 带上了 passive 特征,于是前置NP就做了 O,已改正:

这里遇到一个层次纠缠的问题。语言中的直接引语,或括号里面的附加成分,不能与外部一锅烩。parser 应该有机制分别处置,然后再拼接。真要实现也不难,但貌似多数系统(包括我们)没有做。假设内部由 blahblah 代表,那么外部应该是酱紫才对路:

白老师,“被地主放狗咬伤了腿”有什么玄机?

是 “腿” 找不到主儿吗?哦,是 谁“咬伤” 的问题。
句法不必管那么多。不影响总体结构的,原则上句法开始都不管:谁咬伤了(腿),谁的腿,这些问题可以推后,后去也许做,也许不做。

白:
什么叫影响总体结构。

李:
譬如上面的 parse 图,就不受影响。没连上的节点在句法上都有直接或间接的联系,而且句法上说得通。后去的语义模块顺着这些直接间接的联系,可以把漏掉的逻辑语义补全。换句话说,句法关系和逻辑语义在这里是可以分开处理的。能分开的时候不分开,就是把句法拖进泥坑。实在分不开了,句法引进语义、甚至常识(碎片),都是合理的。

白:
狗和咬是应该做出来的

李:
“狗”和“咬” 分开了,是因为 “放狗” 是一个分离合成词。“狗咬” 也可以看成是一个合成词。两个合成词相交了,句法原则上不进入词法,这时候,没出来在句法上情有可原,语义模块要想再挖出,条件是具备的。同理,下面的“同事”、“邻居”、“儿子” 都有人与人之间关系的坑。句法阶段只要不影响大局,不用纠缠这些关系的语义细节。都是 mod。先连上再说,这个parsing 还是脉路清晰的。

白:
太死板了

李:
汉语句法已经够麻烦了。个人的体会是,能简化就简化,尽量给句法减压。这对系统的鲁棒、维护和周全,都有好处。后去爱做多深做多深。反正条件只是更好,不会比做句法的时候更差。

白:
狗和咬连不上是硬伤

李:
以前说 parsing 是可以见底(tractable)的事儿,主要指的是句法总体。如果把逻辑语义的每一个细节,包括隐含的,都一一解析出来,就很难说是可以见底的了。所以,总体上的感觉是,句法模块基本可以做周全、完备,而语义模块则是一个 optional 的渐进的(incrementally enriched)。开发NLU产品的时候,语义落地模块应该以句法模块为基础,可以借力慢慢完善化的语义模块,但不要指望语义模块的完整性。所以我以前把句法后落地前的语义模块叫中间件,意思之一是可有可无。

白:
狗和咬,不是语义问题。

李:
狗和咬不是语义问题,那么吃与饭也不是语义问题。HowNet 是语义词典,不是具体语言的词典。查一查 HowNet,应该可以看到 【狗】 和 【咬】 的语义联系。

白:
不对,我说的是本句里狗和咬的句法联系是明显的。
离合词脱离句法后患无穷。

李:
来了来了:

“狗” 倒是 连上 “咬”了,可是与 “放” 的联系切割了。这在句法都没什么,另一边漏掉的,语义模块可以补全,如果需要的话。

白:
本来就是俩爹的结构

李:
兼语结构。不错。如果没有离合词的纠缠,就是一个句法内搞定的兼语结构。
真地无所谓。并不是做不出来。只是系统决定在哪里做方便而已。再如:

老师批评了谁,这也不影响句法总体框架,因此也可以搁置。

发现了什么?不影响,也搁置。(发现的是抄袭事件还是卷子?似乎是前者)

“打一巴掌” 句法动宾(也有一说是动补),逻辑语义是【方式】。“打李四” 句法动宾,逻辑语义【受事】。当二者同时出现的时候,前面的NP降格为 Mod,也是一途(cf:【李白之21:萝卜多坑不够咋办】)。句法结构仍然在:后去语义模块可以解析出【受事】和【方式】,if needed。

wang:
头一天上班,晚上又朋友吃饭刚回到家,看了李白对话。李老师的系统对以上句法解析不错。

句法解析的目的是给后面语义分析使用的,那些句子,如“发现“了什么?“批评“了谁?“躲”过了什么?谁“躲“的?在句法结果后,都是要解决的,也是最有价值的,白老师正是要去解决这些问题的,我定为”句法树(图)后“的问题。

李:
我以为然。

wang:
我在句法树阶段,李老师也许句法(图)阶段,但白老师是在做这之后的深挖。
李老师,我个人认为那个长句分析怎样,意义不是特别重要,纯个人观点.那句可能还存在语病,何况说者不喘气,听者(读者)也得歇口气吧!

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之24:“这碗花纹很别致的”】

白:
“这桩打得头破血流的离婚案真是蹊跷。”
量词兼其他词类的情况,是很细的细活儿。

李:

:

白:
“这碗花纹很别致的冰激凌其实并不好吃。”“这碗花纹很别致的你可别错过了古董。”
这有难度了。“碗”的窗口要很大才能确定它是名词还是量词。

李:

感觉第二句是灰色句法,拗口,罕见。

白:
把后面从“你”开始截掉试试。
“这碗花纹很别致的。”

李:

白:
看起来是句法一本道。但是花纹是有坑的,大小主语结构同样说得通。但是前者量名搭配不相谐,后者大小主语相谐。好的分析器应该搞出后者。但是如果pos在别处做出来,无法利用大小主语信息,就不好说了。这里就存在一个问题,在pos意义上而不是在分词意义上的休眠唤醒。一本道被语义不相谐打断链条,转而寻求另一pos。这是matcher和wsd之间的双向互动,而不是单方向的上下游工序。

“这碗花纹精美。”

所谓一本道是在确定了pos之后的一本道,而pos恰恰是有可能翻盘的。遇见一本道与语义不相谐叠加,不应是如乔氏green ideas般强行闯关,而应是回头检视pos的其他候选。另外,大小主语之间,小主语往往是大主语的body-part、亲属/关系词或者是某个侧面特征(sentiment中所谓aspect),这个subcat层面的联系和相谐是十分明显的。要想pos不回头,就必须使pos“变相多态”,事实上承载多个pos。

李:
算对还是不对?我被绕糊涂了。

白:
分析出大小主语算对,分析出量名强制搭配不算对。
我是在揣摩你的pos是在什么地方确定的。为了得到正确结果,确定pos的那个环节该做些什么。是不是需要某种广义的休眠唤醒

李:
我基本不做 pos,以前专门论过:【中文处理的迷思之二:词类标注是句法分析的前提

白:
那此处的“碗”到底是不是量词?

李:
也是也不是。
论点是 pos 作为独立模块 也许对汉语 parsing 可以有些帮助。但是 第一 不是必要;第二 即便做 也不要做多做全,最多蜻蜓点水就够了。多做无益有害。

白:
不讲一般理论,就讲这个例子

李:
这个例子没看出 pos 的必要

白:
实践中,不做多做全,就必须留反悔的口子。

李:
词典里面 碗 是 【container】,也是 【器具】。这就够了。这是词典信息 不是上下文的 pos tagging。

白:
不管怎么说“这碗”是做了“花纹”的mod

李:
不错呀。mod 是句法关系,可以表达多种逻辑语义,【拥有】、【性状】、【色彩】、【材料】、【施事】、【受事】、【对象】等等,当然也包括【部分-整体】、【数量】。parsing 的句法阶段不细究属于何种逻辑语义。

白:
当然“这碗的花纹”在你那也是“这碗”做mod,小词被过河拆桥了。

李:
这不很好吗?同体后 要细分也是可以的,到语义模块去磨。

白:
感觉是耍了个高级流氓

李:
句法耍一耍 是正道。到了后面的语义模块 就要讲究 love 了,要有 chemistry,句法不到不得已 不谈恋爱。

白:
都勾搭上了,还不说自己是男是女的感觉
李:

李:
新智元笔记:中文处理中的POS、搭配和句法】, FYI for those who came to this group more recently

白:
到了今天这样鲜活的例子才知道这等原则落地是啥意思。

 

【相关】

新智元笔记:中文处理中的POS、搭配和句法

中文处理的迷思之二:词类标注是句法分析的前提

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【语义计算:关于解析逻辑语义角色】

白:
“每人选一种动物做研究。”“每人选一个小伙伴做研究。”

我:
好吧,来两颗圣诞奇异(歧义)树,祝各位圣诞快乐!

当树长得不像树的时候,我们开始怀疑。人可以做研究,动物可以做研究吗?都可以。不过一个主动,一个被动罢了,但汉语的被动不必用显性形式(“被”)。汉语做研究比英语难。
== 汉语被做研究比英语(被做研究)难。
== 对汉语做研究比(对)英语(做研究)难。

总之,“做研究”有两个坑:施事和对象,前者要求【human】or【institution】
后者无要求:无事不可研究。

宋:
有些情形不好办:小王带着哥哥到北京看病。谁看病?
老王带着老伴回乡创办了一所小学。谁创办了这所小学?

我:
parse see see:

宋:
连动结构后动词施事的确定有时是模糊的。

我:
这种模糊貌似不是语言自动分析的问题。因为可以假想有一个没有歧义的表达形式,人要用这种形式去表达上面的两句自然语言语句,我觉得表达的人自己会感到困惑。换句话说,人的表达有时候需要模糊,人的理解有时候也不在乎那个模糊地带的定点。这时候,如果一种表达形式不给模糊留下余地,人就会手足无措,会被逼迫得精细起来。从这个角度看语义计算,有时候我们对这个计算有不合理,也不切实际的要求。人自己都模糊的东西,不能指望机器去黑白分明。人自己需要有模糊区间的表达的时候,不能说这个语言应该清晰到区间的定点。

白:
问题不在于有模糊性,而在于模糊性其实是限制在一个精确的范围里,我们如何把精确范围的表达纳入句法结构的表现?比如这一句“丁丁拉着妈妈去了少儿图书馆”
还有宋老师的两个例子
“小王带着哥哥到北京看病。”“老王带着老伴回乡创办了一所小学。”
“丁丁和/或妈妈”、“小王和/或哥哥”、“老王和/或老伴”
这样的表达应该在句法结构的表现形式上有对应物。
“跑不了是两个之中的一个或两个”
这样的填坑逻辑要能够体现在句法结构的表达之中。

我:
丁丁那句目前是酱紫滴:

我:
白老师说得对。
目前还没有公认表达法 来区分句法关系的两种 or, 但要想加 也不难

白:
next也好,合并也好,说的都是两个谓词有坑要共享,而且共享的位置可能只有一个。现在来了两个候选(就算前一个谓词有一定引导作用但也往往不明确,除了兼语),在没有更多语境信息的情况下,只能是一个有明确嫌疑范围的悬案。

准备了一个坑,两个萝卜都有资格进,弄不好其中一个还可以免额度。这就是“和/或”算子的由来。如果语境能提供进一步的知识,它可以锁定为“和”,也可以退化为“或”,甚至可以精确落地到两个候选当中的一个。

“张三在答辩中回答问题正确。”此句的root在“回答”还是在“正确”?
“回答问题正确”“问题回答得正确”“问题回答得正确了,才能获得奖品”
感觉“回答问题正确”有主谓结构的倾向啊。“回答问题”做主语,“正确”做谓语。可是被后面那些“正确”做补语的出来一搅和,又不坚定了。
“问题回答正确了,才能获得奖品”
“回答问题正确”的最外层说的是“回答问题”还是“回答正确”?我认为是后者。
“正确”是比“回答”高一阶的谓词

单独定性怎么都好办。关键是如果主谓结构成立,那么得字结构的“补语”地位就至少要动摇一下了。或许“得”的作用就是把前面的谓词名词化(降格),以便后面的谓词上位呢。那么,“正确”这个谓词就是个高也能成低也能就的主儿:遇到带“得”的谓词,它当名词吞了;遇到不带“得”的谓词,它当谓词吞了。这是个“变色龙”坑, 我们把这种坑表示为“X”,类似扑克牌里的“混儿”(wildcard)。


当然,root统一为“正确”

这样,跟汉语“张三回答问题正确”或“张三问题回答得正确”对应的英语是 “Zhang San's answers to the questions are correct”。而跟汉语“张三正确地回答了问题”对应的英语是 “Zhang San answered the questions correctly”。

宋老师例子里还涉及到亲属词,亲属词带坑,但坑这里也有一个前置的逻辑门,标配是小王,例外从语境中找小王之外特别提及的说话人乃至外号叫“哥哥”(如张国荣)的命名实体。

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

 

 

 

【李白之21:萝卜多坑不够咋办】

【立委按】核心成分 args 不过三 句型不过百 是我们语言学家对于世界主要类型的语言观察到的普遍规律 或曰普遍文法。语言的奇妙 莫过于此。可是思维没有这么简单 一个事件可以有很多成分。这个矛盾 语言怎么解决的呢?模型语言的 parser 又有怎样的对策呢?不骗你 做个语言学家真好 可以洞悉很多上帝和人的奥秘。

白:
你那个打铁的图,不大对啊

李:
白老师眼毒是出了名的。是的,“打-铁” saturated 在强搭配中了,就不应该再去外挂另一个宾语,这跟娶两个老婆同罪。系统目前没那个严苛,执法不力。但也说明了,后一个老婆也许应该降格,降成姨太太。如果宾语是大房,那么 complement 就是二房,打的是正室的铁(morphology 的 compounding),打的结果就是二房的钉子(syntax)。用逻辑语义的话说,一个是受事宾语,一个是结果补足语:是为打铁成钉。

众所周知,句法的宾语其实可以有很多不同的逻辑语义。默认标配的逻辑语义是受事。但对象、结果等都可以的。“打铁” vs “打钉子”,前者是标配的【受事】,后者是【结果】,但都可以以宾语的身份或分布现身。

白:
如果给盖房子的盖规定只有两个坑的名额:我,房子,木头,怎么填?
“他考清华研究生数学八十五分”
不止四个

李:
这是说的萝卜多,坑不够,是吧?

白:
“这些木头可以盖很多房子”

李:
这个不用试我就知道:目前就是主谓宾。将来细磨逻辑语义的话,“木头”是【材料工具】类的逻辑语义坑,房子则是【结果】。

白:
“这些木头我可以盖很多房子”

李:
这个也可以预测到,耍个流氓,不是 Topic 便是 Next,将来细磨 ontology,也可以让流氓从良。

白:
topic是温吞水,上不着天下不着地,既不是标配的成分,又没说填谁的坑

李:
不过一步之遥啊。但是 Topic 或 Next 所直接连接的 token,通常没错。换句话说,坑是填了,不过妾身不明,不知道跳进了啥坑而已。妾身不明是因为 knowledge poor,一旦有了大数据或有了 HowNet 类的本体知识,knowledge rich 了,也就可以验明身份了。

白:
穆斯林比旧中国好。说好了四个就不可以多。再耍流氓也只能在四个范围里耍。

李:
其实不是。这个问题我想过很久:世界上的语言五花八门,主要类型的语言都有一个突出的共性:就是句型非常有限,不过百(主要句型不过二三十个) 。主要原因是,句法上 arg structure 的坑是有严格的数量限制的,不过三。超过的部分肯定属于另类,那就打入另册 mods 。但实际上,语义层面的 args 和 adjuncts 的界限,比句法上的 complements 和 mods 的界限 要模糊得多。这就是为什么 hownet 里面的坑,比 句法词典里面的 subcat 的坑,有时候更多。本来二者是有映射呼应(correspondance)关系的,但从纯粹语义角度考虑,有些 mods 需要被拉进坑来,语义的本体定义才完整。这是我看 HowNet 董老师的处置得出的体会。

考清华那句也是醉了。语义上的 args 包括:

考-清华 【school】
考-研究生 【graduate program】
考-数学【knowledge】
考八十五分【RESULT】

加上主语 ”他“ 就是 5 args,即便把补语“85分” 当成后置 mod(当成谓语亦无不可),也有四个 args,这不符合 arg structure 原则上不过三的普世句法(UG)。我认为,正因为普世句法有这个args不过三的原则,才使得人类的语言的结构变得 tractable,人类语言因而可理解,方便了交流。三个 args 的排列组合可达 6 种,加上其句型变体可控制在百种之内(常用句型也就二三十个),几乎达到了人脑短期记忆的极限,哪怕再加一个,就几乎不可收拾了。人脑很可怜的。不得不佩服自然语言架构的恰到好处:说语言背后没有上帝是很难让人信服的,难怪乔老爷坚持普遍文法是人天生的、普世的。

可是逻辑语义上,同一个谓词可以有很多 args 的,这就造成了思维内容与语言表达的矛盾。自然语言又是怎么解决这个矛盾的呢?思维上的多坑,到了文句的句法不允许有这么多坑,怎么办?

白:
这是理论问题不是技术问题。技术问题是,准备了俩坑,来了三个萝卜,怎么处理?

李:
有了理论,技术还不好办?纲举目张啊。
技术就是:
syntactic parsing: 耍流氓
semantic parsing:根据 HowNet,教育流氓从良。
也就是,没知识就耍流氓,有了知识立地成佛。

白:
技术就是,其中一个萝卜历史上做mod居多,果断降级

李:
历史不历史,那是语言处理的时候,选择谁 out 的一个数据依据。关键是降级:萝卜多了坑不够,不降级还能怎么着?这才叫:英雄所见略同。

你那一路也行,但是还是重负前行。这个从大数据来的历史 不管怎么表示和使用,都是一个很大的 overhead

白:
在中间件里,matcher是极其轻装的。

李:
中间件庞大。call 它一下,等价于一次信息检索??这个也许 overhead 不大,可是怎么对付优选语义呢?不是相谐还是不相谐,而是多大程度相谐?或者比较另一可能,更相谐还是更不相谐?多大程度相谐是个无底洞,不说它。更相谐与否,就是一个是否判断。这时候提交的是两对。两次在线检索 才能在线比较计算大小,是不是?在线是因为无法预知哪两对需要比较,无法预先计算好。

回到白老师上面的问题:盖房子的“盖” 句法上似乎大家都认为就是两个坑:一个主语 一个宾语,who 盖了 what,但是从语义的本体定义和结构看,至少有三个坑: 【who】 盖了 【what】 by【what materials】。我常把这种多出来的语义坑看成是处于 args 与 mods 边缘地带的东西。还有一个典型的例子 translate:绝大多数动词最多有三个 args:主、宾、补足语,但是 translate 四个比较合适:[who] translates [what] [from what source] [into what target]。语言实践中,PP(from)常被当成状语,而不是arg,有人把 PP(into)也当成状语。这就是 args 降格为 mods 的结构处置现象。

面对萝卜多坑不够的语言表达困境,一般而言,主要是两个路子,(1)一个是迫使语言把多个 args 分散到不同的句子去表达,这样一来每个句子的结构还是在限定的坑数之内,subcat upto-3-arg patterns are very tractable;(2)给 args 降格:降格为理论上随机的 mods。由于(1),于是产生了句法的主语、宾语,可以对应10几个不同的逻辑语义的坑。

刚刚 parse 了白老师的句子,看看目前这个根据语言学句法原则制定的parser怎么对付多于3的萝卜, 结果是:

哈,果然。遵循普世文法来模型自然语言的 parser 采用的是降格,策略(2):“清华”的 arg 和 “研究生” 的 arg 都被降格成mods,只剩下 “数学” 作为 head N,堂堂正正填了宾语的坑。作为句法 parsing,这种处理是符合语言架构原则的,非常合理。但是作为深度分析和语言理解,句法被降格的成分,应该重新“升格”到 args 的逻辑语义 slots 去,语言深度解析才比较完美。逻辑升格了,其他句子的 “考清华” 或 “考研究生” 的说法,就会与这一句的说法语义一致,可以 unify。这个升格的任务,也应是语义模块的任务之一。语义模块不仅要填写句法上省略的 hidden args,而且要把部分mods升格为 逻辑的 args。这些 mods 是人类语言表达的时候被 UG 下意识降格的成分。

假如自然语言不是上帝为人类交流而设 假如我们为机器设计语言 我们完全可以扩展坑和句型的数量。Hownet 几个坑, 句型就几个坑 一一对应。不用现在这样,先句法句型入手 然后再 role labeling 填逻辑语义的坑。

白:
其实我并不关心上限是几,只关心超出上限了怎么办。hownet坑的供给比较充分,但是也很难说一定不会超出上限。(董老师可以试试“这场火多亏消防队来得及时”)

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之19:三探白老师的秘密武器】

【立委按】专业探讨的时候,第一要义是互相搞懂各自的术语。老司机的毛病是经年积淀,自成体系,自创术语,不拘一格。白老师有一套自己的术语,立委也有一套术语。好在过去一年来,在白老师的语义计算群唠嗑唠久了,互相开始明白了各自术语的所指。但对于后学,很可能就麻烦了。为深入虎穴,三探奥秘,我把相关术语编辑在篇末,供各位查阅,不准确处可请白老师指正。

白:
我们先解决“谁和谁发生关系”而不必具体明确“是何种关系”,只笼统地分成:“a是b的直接成分”、“a是b的修饰成分”以及“a是b的合并成分”三种情况。

洪:
@wei 八九十年代 Steven Small 有套Word Expert distribute parsing理论,当时ucsd的Garrison Cottrell和 umass的 wendy lehnert也有类似研究。

白:
word expert理论当年也跟踪过,因为跟汉语实际相差太远,后来不了了之了。

李:
Small 的工作以前常引用,因为我导师刘老师给自己的 MT 机制也取名叫专家词典。术语撞车了,不得不引。句法词典化作为大的方向,在parsing的人以及整个的NLP共同体,长期以来是有相当大共识的,虽然各有做法不同(GPSG以后盛行的词典主义的LFG和HPSG就是这种共识的一个反映)。白老师的分步走,想来是一条结合大数据和词典化的大道。第一步只做 dependency,而且允许以后反悔。只依赖词典,先塔个句法的架子,靠中间件的语义化操作来减除伪歧义的困扰。Parsing 的语义化不外两个层面,一路是 nodes 的语义,即wsd;另一路是 arcs 的语义,就是 matcher 的结构消歧工作,为了求解靠谱的 parses(白老师所谓二元关系)。其后的细线条逻辑语义解析,包括部分二元关系的休眠唤醒以及揭示隐藏的逻辑语义关系,算是深度语义计算。这两路靠的都是大数据与初始结构的“恋爱”结果来克服知识瓶颈,而不是靠带标的treebank。其中最有意思的工作应该是这个无监督大数据与初结构的恋爱学习过程,貌似水性杨花 漫天撒网 愿者上钩,最后根据统计性落实各自秉性与最佳搭配。等着听白老师这个无监督的核爆炸吧,大数据引爆这种针对 deep parsing 的语义知识习得,据说可借力深度学习的 RNN 机制。

白:
不务虚了,讨论点昨天出的具体的例子吧。总会有突如其来的不带介词的NP,让没有坑的VP措手不及。躲得过初一躲不过十五。大数据会告诉我们什么呢?比如,“那堆砖让我垒了鸡窝了”,垒,没有预备坑给“那堆砖”,怎么办?

李:
不务虚 那请教白老师几个问题:第一层词典化二元parsing 是 nondeterministic 吗
还是绝对 deterministic?那么粗糙的 parsing - 如果是后者的话,对后去的学习和反悔 感觉会不够给力。

白:
大数据变了,结果会不同。这算nondeterministic?

李:
不算。那是两套系统,依据的是不同的数据和训练,在不同的时间框架。
不是说不需要大数据吗?连二元关系的性质都模糊,就是先勾搭上而已。

白:
不需要带标大数据。性质可以模糊,但约束必须明确。比如萝卜什么时候占名额什么时候不占名额。Matcher不是语义中间件,他要用到语义中间件。wsd也要用到。一个确定节点标签,一个确定留下的二元关系。

李:
约束不就是词典里面的挖坑,实际中的填坑 ➕ 挖坑么?用的是 cat,因为一个词可以有多个 cats(or subcats),所以调用了 WSD 模块来决定。根据这个决定来填坑构成二元结构。好像就是这么个过程。

白:
“这碗猪”还记得吧。

李:
不搭没关系吧 - 开始的时候。

白:
【碗,猪】这个二元关系有还是没有,问中间件。没有,就不建立arc。虽然cat相配,也不建。

李:
那是大数据训练以后的事儿了,训练之前呢?语义中间件就是一个大数据训练出来的类似 hownet 的资源。在训练之前 大数据怎么结构化的?

白:
训练是独立的,跟matcher无关,跟ontology有关,ontology是结构化的

李:
无监督训练,总要有个啥吧。训练是独立的 offline 进行,利用大数据得出的语义相谐的统计性历史总结,作为 parsing 的资源。Matcher 是 online runner,来对新的 input 做 parsing 的。这跟我们专家去写 patterns 道理一样。训练的结果包含 ontology,
训练的支持难道不是结构化的大数据?这个结构怎么来的?谁给的第一推动?

白:
这是一个冷启动窗口长短的问题。matcher可以只看3个,大数据看13个。大数据的13个中包含被matcher拉近到3个的概率不低。

李:
拉近不是结构化的作为吗?

白:
大数据中非结构化的词串,十三个词里面“碗”和“猪”的共现,以及背后subcat的共现,同“碗”和“汤”的共现相比,这数据有统计意义不?我说的是“包含”。

李:
有意思。非结构化词串就是 ngram,13 词区间大体就是一个子句的长度,再长也没啥统计价值的关联了。

白:
碗,背后的subcat是“容器”“餐具”;汤,背后的subcat是“液体”“食物”。统计subcat共现,可以脱离具体的词例,获得大样本。在大窗口里进行,跑都跑不掉。所以,有无结构的说法是含混的。从parse角度讲,冷启动时无结构;从ontology角度讲,冷启动时结构很丰富。

李:
嗯,为了统计性,脱离具体词,先用 hownet 或 wordnet 支持一下。

白:
冷和热的唯一区别,就是有了冷的基础,热应该更好做。因为大窗口的关联都挖出来了,小窗口更不在话下。

只有一种情况,就是热的情况下,小窗口里面的关联,是把大窗口都覆盖不到的远距离关联拉近了的结果,这种会失手。

李:
好,在 onyology 支持下,在13词窗口内,系统学到了“碗”与“汤”的搭配,so what?

白:
在遇到这碗猪的时候,会选择不match,把“这碗”留着,让“猪”去找自己的坑

李:
这口气得憋多久啊

白:
就是所谓的“过程性因素”,用中间件的查询结果来控制,而不是用手编的语言学知识或规则来控制。

李:
停下的意思类似于入栈。稍有闪失就沉底出不来了。

白:
对啊,RNN+栈。入栈,等着填坑

李:
不知道栈有多深

白:
出不来的情况,参见刚才的例子 “那堆砖让我垒了鸡窝了”。在“垒”只有两个坑的情况,“那堆砖”就是进去了出不来的,如果不想其他办法的话。

荀:
如果这种二元决策是确定性的过程,如果出错,填入的坑的萝卜就得靠唤醒了。

白:
不妨仔细推演下这个例子。

李:
赶巧这个【工具】的坑,处于可有可无的边缘。“垒” 其实也可以带三个坑的。

白:
如果大数据中,存在着大量“砖”带着明确的介词和“垒”共处一个窗口的情况呢?或者投射到subcat上,“建筑材料”带着介词和“建筑行为”共现?

荀:
如何辨认“工具”和“施事”就很重要了

李:
【工具主语】 与 【人主语】 几乎有类似的统计性。

荀:
需要用启发式信息,引导RNN训练,这个引导过程是至关重要的。

白:
这里有“我”,已经明确会填坑。我说的是,没有坑可填不可怕,翻翻大数据,历史上别人用它带什么介词,就把那个介词补上好了。然后就堂而皇之地做状语了。这些东东,有了ontology和大数据的结合,就不要人来操心了。

荀:
把subcat嵌入到RNN中,用启发式信息结合LM训练方式引导RNN编织权重。

李:
如果加上显性形式“用”,工具作为萝卜有很多数据。

白:
我昨天出了那么多例子,伟哥居然没觉出用心良苦:

“这些纸能写很多字”
“这些铁可以打很多钉子”

荀:
[用]这些铁可以打很多钉子
[在]这些纸能写很多字

白:
从形式上,为严谨起见,我们不会去给这个句子凭空添加任何一个莫须有的介词,但总可以用一个不占位置的虚介词吧……
【phi】这些铁可以打很多钉子。

荀:
利用大数据可以做“小词“还原,这对缺少标记的汉语很重要了。

白 :

至少有了这个phi,栈里的不会出不来了。

荀:
借助大数据,RNN做“还原”这类事情很在行。把小词“虚化”,也是一种subcat处理。抓住了小词就抓住了汉语结构命门,白老师在这上花足了心思。对句子做“结构归一化”处理。

白:
推而广之,就是利用大资源+大数据把看起来不那么规范的句子有理有据地整理成更规范的,这样parser负担就轻了,无需独自面对复杂情况。“这场火多亏消防队来得及时”,这里的“这场火”同样面临“没给留坑”的尴尬。但是,把句子中的“火”“消防队”两个实词送入中间件,可以发现与他们共现频次相当高的“救”。有“救”垫底,就可以引入及物的虚动词phi,这样萝卜和坑就相安无事了。

荀:
白老师提到的parser需要确定的三种关系,权重信息编织在网中了,在应用时,词典发出请求,RNN做认定。Parsing就是做<W1,W2,Relation>认定的过程, W1或者W2 可以是小词。 功夫在于Relation定义,在承载结构的小词处理以及<W1,W2,Relation>训练过程,白老师对这些都有一套不同以往的做法。

李:
如果没有坑可跳,就自己挖个坑去跳,这也是 mods 的常规了。在形态语言中,mods 有显性小词或词尾帮助确定该怎么挖坑自裁。在裸奔的汉语,形式没了,只好靠搭配。

白:
救火这个例子,已经不是subcat嵌入了,根本就是词嵌入。

李:
wait:“这场火多亏消防队来得及时”,这里的“这场火”同样面临“没给留坑”的尴尬。

咱们走一走这场火。哪里出来的“救火”,“消防队”本体里面的吗?Hownet 里面肯定有。

常规的做法是,遇到句首 np 没法填坑,就给个 topic 标签。有点像英语的 as for,with regards to,topic 很像pp做的状语。往后找一个谓语挂靠:“这场火” 挂靠到 “来”。

白:
人家只有一个坑,还是给human预留的。

李:
不需要啊。状语是随机的。状语可以看成是不填坑,而是挖坑,挖个坑让谓语填进去
或者让自己跳进去 再去找主儿。

白:
比如“为了”?

李:
想不出来为什么要绕那么大弯,让“救火”出来救驾。Topic 式状语,无需那么清晰的标签,就是把np 降级为 pp。至于什么 p 什么格,另说着。

世界语有个万能介词 je,柴门霍夫这样解说:介词就是格,都是确定性语义的。
几十个介词 就是几十个格。但是如果有一个状语,你不知道哪个介词合适
或者你懒得费劲琢磨什么格合适,你就用 je。与前面提的phi,异曲同工啊。

白:
那样活儿太糙。补介词合适还是补动词合适,大数据说了算。

李:
用了 je 就确定了其地位。不是没有道理。人如果要清晰,他可以有清晰的形式,譬如介词或词尾。如果他不用,那就模糊。虽然模糊,句法地位和关系还是大体确定了。这类模糊要确定语义关系,可以在后面的语义模块(我以前也叫它语义中间件)决定,而不是白老师的中间件在parsing 过程中调用。我选择把二者分开,因为这类情形句法没有到走投无路,就算耍个流氓 亦无不可。先躲过初一,到15再说。其实 15 到了,要求很可能与初一不一样了。人走茶凉不了了之也是有的。

白:
数据支持的话,可以冒进一点。中间件就是在过程中调用啊,否则有啥用。

李:
deep parsing 的过程可以分两个阶段,两个模块:句法和语义。我叫语义中间件是指它在句法模块之后,产品语义落地之前,夹在中间。怎么没用?几乎所有的 hidden 逻辑语义,都可以留到这里做,而不必在句法模块做。

不仅句法模块内部可以多层去做,句法到逻辑语义,也可以分开,成为两个层面的 parsing,Syntactic parsing to semantic parsing。非谓语动词的主宾等都可以后延,
句法只要确定其状语还是定语或补足语身份即可。对于谓语的主宾等,也可以先在句法做一个糙活,到语义中间件再细化或修正。糙活是不到不得已不调用 ontology,如 np 主语,管他 【human】 还是 【instrument】:

张三砍了李四
斧头砍了李四

开始都是同一个parse。

张三吃了大餐
乌云吃了月亮

也是如此。

白:
现在还都没说定性,只说定位,谁跟谁有关系。结论是,就这么糙的事儿,也得动用ontology。

李:
句法不必要太细。语义可以细,但那个活儿可以悠着点,做多少算多少。

回到白老师前面给的句子,试试我目前语义模块还没丰富完善的 parsing:

“那堆砖让我给搭鸡窝了”
“这辆车能坐六个人”
“这个方向不被看好”
“这些铁可以打很多钉子”
“这些纸能写很多字”


see,句法架子是出来了,但未尽如意的语义还有一步之遥。这一步补不补,不紧急,因为语义落地的时候,如果是 integrated 一体化的直通车,而不是提供给第三方做 offshelf support 的,就可以在落地模块内部协调。譬如,“坐车” 带了“六个人” 为 O,ideally,语义模块应该把 “六个人” 从句法的 O 转为 逻辑语义的 S。但是,如果是内部协调,转不转也无所谓。O 不过是一个符号而已。词驱动落地的时候,“坐车”的 arg 是 O 或 S,完全不必计较。当然,如果要补足这一步,虽然琐细,但真要做也不难。在没弄清楚多少利益之前,懒得做这细活。同理:“那堆砖”最好是加一条线,连上“搭”,标签是 【Instrument】。“这个方向不被看好”已经把表层的小词 “被” 带入考量,直接给了 O,一切到位,没有可做了。“打铁” 和 “钉子”,最好是加上标签【Result】。最后一句,最好给 S 进一步加上逻辑语义标签【Instrument】or 【Material】,但其实落地也未必需要这个,就是加上了显得很酷,很智能,让人看着爽,倒未必是对落地产品真地就有多大利益。

 

 

【术语 Index】

Matcher:the syntactic parsing program,有时候我们叫 runner,在白老师的系统里面,就是接受输入文句,对其二元依存关系解析的模块。

WSD:与 community 的依据义项划分的定义有别,白老师的 WSD 模块指的是:在词负载结构的体系里,一个具体的词负载了好几种可能的结构,结合上下文选择其中一种的模块,称之为wsd模块。事实上,这里的WSD 是利用大数据得来的词与词或其上位概念之间的语义相谐,来决定采纳某种区分一个词不同用法的扩展的 POS tags or 白老师所谓 subcats,来帮助结构消歧。粗线条义项的区分成为二元关系结构消歧的副产品。当(细线条)义项区别不影响结构的时候,义项区分就不是这个WSD模块的任务。

二元关系:两个词之间的句法依存关系(bianry dependency)。白老师的系统分为三类:修饰关系(如 定语、状语),算元(args)关系(如主语、宾语)和合并关系。

POS(cat):part-of-speech (or category,相对于 subcat 子类而言)词类,不必是 PennTree 定义的集合。作为模块,指的是根据系统给定的词类标准,自动做词性标注。一个词可能跨类,POS 模块可以根据上下文决定最合适的类别(词性)。在白老师的系统中,是所谓 WSD 模块做这个 POS 的事儿,来供给 Matcher 充当合法填坑的 candidates。在白老师的系统,我们可以把 POS 的词性标注理解为粗线条的 WSD。不影响结构的词义区分不是白老师所说的 WSD 模块的任务,虽然 community 的 WSD 不是这样定义的。

subcat:subcat 的原义指的是谓词的子类,这个子类对应了这个词的特定句型(譬如,双宾句型,宾+宾补句型,等)。白老师说的 subcat 扩展到不一定具有对应句型的子类。譬如,碗,背后的subcat是“容器”“餐具”;汤,背后的subcat是“液体”“食物”。这实际上是本体语义(ontology)的层级结构,如 ISA taxonomy chain:碗 ISA 餐具,餐具 ISA 工具,工具 ISA 商品;商品 ISA 人造物品;人造物品 ISA 物品;物品 ISA 实体(逻辑名词,这是这个 chain 的顶端节点 TOP 了)。

耍流氓”:指的是对于二元依存关系不能定性,但是可以认定具有某种关系。汉语句法中,句首的名词短语在没有确定其性质是主语、宾语或定语、状语之前,往往先给它一个 Topic 标签,挂靠到后面的谓语身上,白老师认为这就是耍流氓。同理,当两个实词之间的关系基本可以确认,但是不能定性的时候,我们往往根据其出现的先后次序,让 parser 给一个 Next 的标签把二者连上,作为一个增强句法分析器鲁棒性(robustness)和查全率(recall)的打补丁的手段。这也算是先耍一下流氓,因为理论上后去还是需要语义模块去确认是何种关系才算深度分析到位。如果是两个中文动词一先一后系统给了 Next,其默认关系是【接续】,就是汉语文法书上所谓的“连动”结构。

Topic:汉语分析中,句首名词短语如果不直接做主语、宾语等,很多分析就给 一个Topic(主题)的标签。汉语文法的一个突出语言句型现象就是所谓双主语句(常常分析成一个Topic or 大主语,加一个小主语:譬如,他身体特别好。这家公司业绩直线上升。)由于这种关系逻辑语义的性质不明,聊胜于无,所以也称这种二元关系的建立为“耍流氓”。

Next:两个词一先一后,但不能确认他们发生了什么句法语义关系,系统常常给一个特殊的关系标签,叫 Next,其默认关系是【接续】。 这是一个增强句法分析器鲁棒性(robustness)和查全率(recall)的打补丁的手段。由于这种关系逻辑语义的性质不明,聊胜于无,所以也称建立这种二元关系为“耍流氓”。

mod:修饰成分或关系。包括定语、状语、补语。

arg:算元成分或关系。包括主语、宾语、(宾语)补足语或间接宾语。

Hownet:董振东前辈发明的面向MT和NLP服务的跨语言本体知识(ontology)网络《知网》的英文名称。

小词:教科书上叫做功能词。包括介词、连词、代词、副词、感叹词、联系动词等。

伪歧义:也叫伪路径,指的是 parsers 产生出来的貌似成功但没有价值的结构分析路径。伪歧义,是相对于真(结构)歧义而言。真的结构歧义的典型案例是某些 PP-attachment 的现象,同一个 PP 可以理解为两种可能:做宾语的后置定语;或做谓语动词的后置状语,这两个 parses 都是有效的语义解析。但是,很多传统的 parsers,会产生很多貌似成功解析输入文句的分析路径(numerous parses),给人以文句结构歧义严重的假象,但其实这些不同路径大多没有区别意义,是为伪歧义。这是一个困扰了传统 parsing 很多年的难题。白老师和立委的系统都利用不同的策略(包括休眠唤醒机制)很好地解决了这个问题。

中间件:白老师的所谓语义中间件,指的是在 ontology(本体知识库,如 HowNet,WordNet)的支持下,通过大数据训练得出来的语言词汇之间的语义相谐(各种关系之间的语义搭配)的统计知识库。这个中间件被 WSD 和 Matcher 模块调用作为对于输入文句的 parsing 的资源。立委以前的NLP博文种的所谓语义中间件虽然有与白老师的中间件相同的一面,但却是不同的所指。在立委的 deep parsing 的系统种,语义中间件不是一个知识库资源,而是指的句法模块后面的语义模块。这个模块利用句法框架,负责深度分析的逻辑语义细化、隐含的逻辑语义关系的解析、休眠唤醒新的语义结构关系(包括改正此前的错误路径),如果需要的话,也可以在这个模块做一些词义消歧工作(WSD的本义)。总之,这个语义模块是独立于领域,夹在句法分析之前和领域的语义落地之前,为了更好地服务于语义落地。为了不再混淆术语,立委考虑今后不再称此模块为中间件,而是把术语让出,就叫语义模块。

:坑是role-provider,萝卜是role-fulfiller。就是依存关系(dependency)的被预期的节点。对于谓词,其坑就是它预期的算元(args)成分,主语、宾语、补足语。对于修饰关系(mods),譬如定语、状语和(汉语)的补语,一般认为是附加的边缘语义,不占坑。也可以看成是修饰语预期了谓词,或看成是谓词不占坑地吃掉了修饰语。在知网里“坑”叫“角色”;“萝卜”叫“典型演员”a) 只从语义考虑,与特定语言无关。

萝卜:指的是那些参与谓词结构(所谓 argument structure)所要求的实体角色的词,譬如充当主语、宾语、补足语的成分。谓词结构通常被认为是一个语句的核心语义。谓词以动词为主(但也有形容词和名词做谓词的),在词典主义(lexicalist)的系统中(白老师和立委的系统均属于词典主义),一个谓词的潜在的结构都标注在这个词的词典信息 subcat 里面。换句话说,谓词的 subcat 规定了它期望什么样的成分(所谓挖坑),需要什么样的词(萝卜)来填。譬如,“走路”挖了一个坑,需要一个优选语义位【human】的名词萝卜来充当其施事主语。再如,“喜欢” 挖了两个坑:谁喜欢什么。充当主语的是【human】名词,充当宾语的是几乎任何词。

填坑:一个词(包括代表短语的头词)根据谓词对坑的句法(甚至语义)要求,充当了其谓词结构的成分,建立了与谓词的二元关系(binary dependency),这个建构过程叫做填坑。谓词结构的成分填满了,核心语义就完整了,这个状态叫 saturated。

萝卜指标:指的就是坑。所谓不占萝卜指标,是说的一个词可以合法填两个坑的情形,其中一个坑不影响其填另一个坑的能力。听上去似乎与坑与填坑的概念出发点相违背,但在依存关系图的构建过程中,是必须考虑一个萝卜填多个坑(一个儿子多个老子)的情形才可以把依存关系进行到底(有些一个萝卜多个坑的情形在短语结构表达中,可以借助非终结节点避免)。

优选语义:最早由著名人工智能和机器翻译前辈 Wilks 提出的概念,指的是在本体网络(ontology)中,概念之间的语义相谐表现在自然语言的表达的时候,呈现的是一个区间,而不是一个固定的语义约束。譬如,【eat】这个概念对于【受事】的优选语义是【food】,但是这只是其优选,并不是一定要是【food】。语言表达的时候,优选语义可以根据句法的约束条件不断放松,以至于达到完全不相谐的程度(nonsense)。乔姆斯基认为,句法可以独立于这些语义相谐的约束,举的就是句法约束决定结构关系,偏离优选语义到极端的例子:Colorless green ideas sleep furiously。对于形态语言,句法独立性的原则有较多的证据。对于汉语,这个原则需要打折扣,合理利用优选语义的约束就成为汉语解析的关键依据。立委 parser 改造使用了 HowNet 来弥补句法形式的不足。白老师的系统是依靠大数据训练出来的中间件来实现优选语义的对 parsing 的约束。

逻辑语义:指的是深层结构关系。最早起源于乔姆斯基的深层结构和费尔默的深层格(关系)。中国NLP和MT的旗手级前辈董振东老师发扬光大,深化了这方面的研究,指出解析逻辑语义是深度自然语言理解的关键:所谓理解一个句子,主要就是理解了这个句子里面概念之间的逻辑语义,谁是施事,谁是受事,时间、地点、条件,等等。在 community,对应于所谓 role labeling 的任务。一般而言,主谓宾定状补之类的句法关系比较粗糙,这些是表层关系,一个语言深度解析器(deep parser)不仅要解析(decode)句法关系,而且要进一步揭示后面的逻辑语义关系,包括细化句法关系(譬如句法主语可以进一步标注为施事、受事、工具等逻辑语义,句法宾语可以标注为受事、对象、结果等逻辑语义,诸如此类),和揭示隐含的逻辑语义关系(所谓 hidden links,就是句法上没有直接联系但逻辑语义上具有直接联系的结构关系,譬如宾语是宾语补足语的隐藏的逻辑主语)。

休眠唤醒:在李白的系列研讨中,这个术语指的是一种把可能性较小的路径暂时搁置的parsing策略,被搁置的路径可以在适当的条件下被唤醒。这种策略据信反映了人的语言解析的过程,可以从段子、相声抖包袱等现象看到这个过程的表现。立委有系列博文专谈这个机制。譬如:【立委科普:结构歧义的休眠唤醒演义

 

【相关】

【李白之18:白老师的秘密武器再探】

【李白之15:白老师的秘密武器探幽】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之16:小词负载结构与小词只参与模式条件之辩】

白:

“是他杀的张三”是一个完整句子吗?

主谓宾都在哪儿?

李:

shi S Vt de O ==》SVO

很常见的句式,主谓宾齐全,

是 S V 的 O == S V 的 O == SVO

不过其中 “SV的O” 有歧义,因为与带定语从句的NP同形。

不过加了强调小词 “是” 在句首以后,似乎歧义就消失了。

白:

“是”当什么?自己没有主谓宾?

李:

是数学我不喜欢。

是在北京他们开的董事会。

是1990年我毕业的。

句首的“是”,是强调小词。

类似于英语的强调表达法: it is X 。。。。

it was in 1990 when I graduated
It was in Beijing where we got the deal

白:

可否认为“张三是他杀的”,然后“张三”后移到句尾。

李:

张三是他杀的 ==》 是他杀的张三 ?

张三他杀的 ==》 他杀的张三

白:

“是他杀了张三”可以这么做。“是他杀的张三”不能。

“是他杀了张三”跟“有人敲门”是一个性质,在坑论里是两个谓词合并,共享一个萝卜。

但“是他杀的张三”不好套用这个结构。没办法把二元关系进行到底。不仅“的”捞不出来,连“是”还得搭进去。

李:

“的” 字的两个用法:1 定语标志(或所有格);2. 肯定语气

表示肯定语气的 ”的“,通常位于句末,也常与表示肯定或强调的 ”是“ 搭配使用: 是 XP 的

貌似由此衍生出表示肯定的  ”的“ 用于谓宾之间。

“是他杀的张三” 说的是对过去或完成的肯定,但是却不允许用助词 ”了“ 或 ”过“,原因可能是这个位置被 “的” 占据了。另一个原因是 这种肯定语气蕴含了完成。肯定的行为动作不可能是没有发生的事件。

在 pattern 中,只要能列举出这种即可,很容易捕捉,除非是歧义。

白:

表达什么先不管,谁跟谁有关系是首先要解决的。

李:

没有句首“是”的pattern  “SV的O” 的确有歧义,但是这种歧义是 consistent 的。对于consistent 的歧义,其实不难处理,可以将错就错。直到错到某个点,系统觉得应该校正了,就校正。现在的处置是,开始 parsing 的时候,一律做定语从句看。

白:

有套路,就把构成套路的词摘到二元关系之外,语言学上不够简约。

前面说到的踢出机制试了几个例子,很好玩,基本通了。

李:

有套路,就把构成套路的词摘到二元关系之外,没有问题啊。因为小词已经在套路(patterns)起到了该起的条件作用,譬如 “是+S+V+的+O”,在这个 pattern 中,没有歧义, SVO 被确定,逻辑语义被解构,一抓一个准,完事了,把 “是” 和 “的” 这种句法辅助小词挂起来。这是pattern的天经地义。pattern 比起二元关系环环相扣的 parsing 有不同的优缺点:pattern 可能比较长,上述 pattern 是个五元组,实词的元是XP,所以实际的跨越可能是很长的 string,用的是长度来换取确定性,牺牲了某种抽象性,或换句话说,带来了一些规则的冗余度。二元关系环环相扣的做法,可能更加简约和概括。

白:

做系统咋都行。做句法。感觉非常实用主义,理论上不连贯。

李:

句法标配说的是 sv 语序,多数系统都用的。你的系统先不用,是例外。

白:

我这不用。至少matcher不用。以后语义模块用另说。

李:

虽然汉语语序很操蛋,孤立语中它自由得简直不讲道理,但是 sv 是默认,有统计性依据,也有心理认知的依据。这一汉语句法标配的形式痕迹,不用白不用。

白:

用了也有误导的时候。

我在尝试踢出边的功能:一个强搭配萝卜进来,在坑饱和的情况下,踢走一个已经进坑的萝卜,自己跳坑。如果没有不占指标的额度的话。一进一出,不破坏结构,不重构结构,也不改变结构对外部的联系。与所谓“回溯”大不一样。拔出来的萝卜再进什么坑,全看后续发展。

李:

所以句法结构的时候 可以不利用语序,因为这个结构的标签暂时不不用给出。其实这是跳过句法标签,直接在下一步进入逻辑语义标签。但传统做法是区分 arg1 arg2 arg3,现在是不区分 只说这是arg,有别于 mod 就可以了。

白:

但是各个arg如果subcat不同的话,需要锁定,免得互相串了。

李:

所以是标签隐藏在后面,暂时不露而已。

对,免得互相串了 是必须的。

白:

如果连另一个可能性都没有指出来,焉知落地想要的不是另一个?

李:

这个问题哪里会有?是落地的需求 drive 开发呀。世界上哪里有飘在天上搞开发的呢。何况开发这事儿也不是一锤子买卖。今天没有的可能性,明天加上可能性也是可以的。系统不可能是一成不变的。pattern 不变的话,在结论上增加点什么,连重新测试都不需要就可以搞定,有何难哉?更何况 我们 patterns 用完小词以后,还发扬了革命人道主义,并没有扔掉敲门砖,还用 X 把小词给挂上呢。所有的痕迹都在,过河没拆桥。不过是不让过了河的桥和敲了门的砖占据我们的语义核心地位而已。

小词负载结构,我的理解,本质上也就是一个过渡,一个粘结剂,一个特定的 parsing 算法所依赖的一种手段,并不是一种必需。小词成为条件,则是一种通用的必需,因为没有小词,结构关系就很难搞定,这是小词存在的理由。

白:

“杀人犯把卖盐的杀了化妆成卖盐的在那卖盐。”杀人犯是卖盐的?

李:

那句话一时看不懂,但 point 明白了。你是在诘问 把“S是V的”处理成 SV 的做法。它们不等同,不仅仅是 affirmative 的差别,还有另一个差别在。这个差别是,“S是V” 的 可以回答 “S是谁” 的问题,而 “SV” 不能回答 “S是谁” 的问题。好,这是一个典型的语义落地决定如何表达的例子。现在的问答系统的语义落地有对这两种结构做区分的需求,那就让第二个pattern在输出表达中,把这种需求满足即可。譬如,可以让第二个pattern (S 是 V 的)输出这样的结果:

arg structure: S V

feature: affirmative

answer: who is S

白:

杀人犯不是卖盐的VS杀人犯不卖盐

这些零碎副词加在affirmative上还是加在普通谓语上怎么区分?

李:

bottom line is pattern1 和 pattern2 是两个独立的捕捉,二者该怎样处理都可以,加在哪里都可以。加在哪里落地好用,落地觉得有用,就加在哪里。这都不是事儿。媳妇都娶回家了,怎么打扮还不是男家一句话吗?

白:

那就是说实际上做了两个谓词,简化成一个谓词是伪命题。而小词负载结构,只不过把两个谓词显性化而已。

李:

早早年的parsing,其原始定义记得是没有parse tree的表达的。什么都没有。就是一个合法非法的结论。所谓合法的结论,就是 parser 把那个句子从头到尾都吃进去了。

白:

判定问题

李:

后来的 tree representation 或其他的表达,全部是 parsing 过程留下的痕迹,或副作用。这样看parsing就明白了娶媳妇是核心,打扮媳妇是具有任意性和功利性的副产品。小词负载结构如果能在语义上表现出贡献,那么这种贡献可以等价地由 pattern 给出。换句话说,如果某种用小词作为枢纽来区别谓词的表达法,对于语义落地有益,那么没有人可以阻挡pattern的编写者,输出同样的表达。但实践中,我们知道,其实绝大多数时候,这些小词丢掉了,核心语义没啥损失。譬如 小词 “把”点名了宾语的所在,借助它表达出宾语的核心语义以后,“把”的使命也就完结了。

白:

“把”和述补结构连接,绝不是只有“宾语”这一个含义。参照“他把眼睛哭肿了。”

李:

小词负载结构的语义贡献注定是有限的小词的本质就是句法的显性形式,在句法走向逻辑语义的过程中,形式走向内容。表层走向深层。言语走向逻辑。这种趋向决定了小词负载结构基本是边缘的语义。换一个角度看这个问题,小词是 language specific 的,而语义的本质是人类共通,language-independent 的。language specific 的东西不会在语义里面唱主角。

30 年前,董老师提出,以人类共同的逻辑语义作为机器翻译的基础,而不是在句子表层实施转换。这样一来,不仅用了不同小词和词序的主动语态和被动语态被认为是相同的,而且动词与deverbal的名词也被认为是相同的。因为其 arg structure 的核心逻辑语义都是相同的。用它指导 MT 就是:

I translated A from B into C

== A is translated from B to C (by me)

== my translation of A from B to C

==> 我把A从B翻译成C

当时觉得董老师的做法的确抓到了要害,但也觉得表层的小词和细微差别(譬如语态)也不能就这么扔了。最后的体会和结论是: 在语义落地的时候(譬如MT),逻辑语义是主要的,表层结构是辅助的。做到了逻辑语义的转换,基本任务可以算是完成了。但是要想做得更好一点,还可以参照表层结构或features,再做一些细节上的调整。譬如 英语是被动态的,也许也翻译成被动态更合适(其实,由于两个语言的显性被动表达形式具有不同的使用频度,只能说,部分的被动态用汉语的显性被动为宜,其他的被动态可以用隐性的被动形式,最后还有一部分被动其实更合适用汉语的主动态来翻译,这个要细细研究的话,可以针对不同情形结合表层和深层结构写一大篇来)。

总而言之,小词和表层,顾不上来的话,扔掉了也没啥大不了的。这些边缘的语义色彩,对于语义落地的不同场景或许可以有参照作用,但不是核心。

白:

实际情况是,逻辑语义也是人参照表层写出来的。本族语表层研究不到位,就只好迁就着走。就好像grandma不知道是姥姥还是奶奶。并不是他们说英语的人逻辑上不能定义和区分爸爸的妈妈还是妈妈的妈妈。我们要高频率地使用,就不能绕着走。

李:

这样看也是一个角度,有其道理。

理论上,逻辑语义应该是参照多数的人类语言提出来。基本立足点就是,人类的概念和思维是共同的,理解也应该是共同的,只是表达的时候穿了不同的外衣。当然,语言对思维也有反作用,因此人类思维和理解的共同性,只可能是大同小异,而不可能是完全一致。

白:
共同性体现为外衣的并集

如果主要外衣缺失,就谈不上共同性了

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之15:白老师的秘密武器探幽】

【立委按】 白老师不动声色开始亮剑了:独创的自然语言的parsing法术,无需规则,无需带标数据,词典主义标注加无监督大数据以克服知识瓶颈。深度计算,句法语义交融,借力RNN,以平天下。小试牛刀,以中文难句为例。先睹为快,以飨同仁。

 

李:
省略 head 最可恨。从“的字结构”和what-clause始,恨的是 队员都在 头儿却跑了,缺少头就缺少了语义相谐的依据。what I read 的语义是 【book】,可是很难找到这个本体的入口点。语义计算和细线条深度parsing就犯难了。当然,可以转弯抹角通过 “read”的 HowNet 网络里面的 logic subcat 的逻辑宾语的标配,把这个语义节点挖出来,这多费劲啊。
白:
别拿“的”不当头儿
李:
“的” 与 what 一样,可以当头儿,但没有本体的底气。
白:
给它它就有
李:
我尝试过把 V 当头, 也尝试过拿 “的” 当头,都遇到这个本体的滑铁卢。V 麻烦更大一些,V 本身的本体在那儿添乱。理论上可以通过 V 询问 HowNet 去 retrieve 出来逻辑宾语的标配,然后赋值,并替代 V 的本体属性。Word 天,这不是人做的活儿。
我吃的 --》【food】
我看的 --》【ANY】
我修读的 --》【knowledge】
我parse的--》【language】
我干的 --【事业,or 勾当?】
白:
只需要指回来,不需要明确哪个坑。
的当头不是问题,当头的赋予什么subcat才要紧。谓词的坑不饱和不要紧,可以到坑里去挖。谓词的坑饱和了还要“凭空”憋出一个subcat来最麻烦了
李:
出去买外卖,路上冒出个英语打油:
What I read -- is not a book
What I eat -- is not food
What I do -- is not a cause,
What I love, is you.
标配被形式推翻,哈。
白:
not a book, but newspapers; not food, but pills; not a cause, but fun.
看看我自己搞的parser的图:
李:
牛叉!看着就高大上。
what I love, is the girl:见过的都说漂亮的。
见过的都说漂亮的:有歌为证:“在那遥远的地方,有位好姑娘;人们走过她的帐房,都要回头留恋地张望。”  里面有两个 “的”字结构:
见过的 --》 【human】
都说漂亮的 --》【ANY】
前者是主语,后者是宾语,补全了就是: 见过的【人】都说【她】漂亮的【那个姑娘】
白:
tomita差远了,我这里没有规则只有词典。
sh移进;up升格;ma填坑;mo修饰
比图栈自动机简单,而且跟语义中间件查询一一对应。
李:
就四个操作?跟汇编似的。记得汇编就是两个字母做操作缩写。我自己没整过汇编,我领导当年整天就是汇编。
白:
还有一个me,合并,这个例子木有用到。
match,modify,merge,那么凑巧都是m打头,第二个跟不同的元音。
下划线义为“关闭”。五角星是关闭后又打开复用。
李:
SH 的缩写是?
白:
shift
李:
my bad, I thought it was shit
wondering why this naming
by the way, shit and crap are NOT negative in Oral English when used in NPs
白:
up含元音u,shift含元音i,这aeiou也算集齐了
shift:move to the next token
李:
we call it read head in FSA
白:
pda players like to call it that way.
但实际上我这也不是栈。
李:
能把姑娘那句串出来,真心不易。
我要是硬做也可以做,可是感觉不踏实,不知道哪天又断了。很多事儿是选择不做,因为没有鲁棒的把握,当然也因为不足够常见感觉不值。
match 是填坑,那就是 saturated 了。up 是升格,意思是?
白:
修饰语提升为被自己修饰的pos
坑有指标,填一个少一个
matcher就做这五个动作
李:
为了理解白老师的parsing机制,咱们对照上图来个walk-through吧:
“这” 是 N++,Up 了一下,就成了 N+ ?
白:
指示词,数词,都是N++
李:
Up 之前为什么 Shift?
白:
位置一开始-1,进入0就是shift
李:
Mo01 就是被吃掉了,N+ 就是往右边找 N,modifier 找 head,找到了 就自裁了。
白:
李:
可是这个 NP 看不出来是一个完整的有 det 的 NP,过了这村,痕迹也没留下的感觉。
白:
弧都在。每条边都是痕迹。
李:
Ma12 那是填坑了,带有 2N 的 “见”,saturate 了一个,成了 S/N,可是怎么知道是主语坑填了 还是宾语坑填了呢?
白:
不知道。也不care。
李:
所以 先吃掉一个再说。也不问问中间件?
白:
目前每步都问
李:
每一步都查相谐?
道理上不需要,只有出现歧义可能才需要查问和比对。
白:
两个如果有一个相谐,就锁定一个,再来只需查另一个。
李:
小词 “过” +S 是向左修饰谓语的,因此 Mo32 就把时态助词吃掉。
so far so good
可这时候没遇到 N,只遇到 “的”。“的” 很特别,谁都要
白:
的,左面吃一坨,吐一个定语N+
李:
X 来了就吃掉。
对 突出了一个 N+
白:
X是wildcard 以前说过的,不管S还是N,来者不拒
李:
Up 4 晕了
原地踏步就是 Up?
白:
定语升格为NP,实际是创建了一个虚节点,图上有
李:
Up 的原因是因为前后的路都堵死了,等于是默认操作?走不下去了,就 Up 一下。
白:
什么因素驱动什么操作,应该是最核心的东东了。
李:
Ma42 填的啥坑?“见” 还有一个没有填的 arg N。
白:
见,残留的坑。
因为是残留的坑,萝卜不占指标,依然可以它用。
残留的坑就灭了。
李:
哦,那是“的”没找到 head N,自我升格为 N 以后,去填了 “见” 的第二个坑。至此我们其实不知道“姑娘”和“的”各填的什么坑:如果的字结构中被省去的N是【非人】(东西),则“女孩”是主语;否则,“女孩”可能是宾语(也可以是主语),类似于说:
这女孩见过的【东西】
见过这女孩的【人】
其实在本例句“这女孩见过的都说漂亮”中,“女孩”是宾语,而的字结构指的是主语【人】。
不占指标的意思是,这个 V 做了定语从句,所以 V 全部saturated 了
白:
残留是指,head已经填坑去了
我们matcher是没有语言学知识的,只知道填坑去了,定语从句什么的,不知道。
另一面说,如果有其他情形导致残留的,也一样办理。
六亲不认。
李:
Ma42 结果 把 “见” /N 变成了_,关闭了,就是用 “的” 填进去的结果?语言学上对应于 “的”字结构 反填为子句里面的主语。
makes sense
反填不占指标,所以动词saturated,可“的”字还是 N,从这个 N 进一步取下一词 (Sh5) ?
白:
sh是先放着,看下一个
李:
入栈?
白:
不完全是栈,暂且理解为栈也将就
李:
小词 “都” S+ 往右找谓词做修饰(Mo56),于是吃掉了 “都”。
“说”有两个 args?一个是 N 主语,一个是 X 爱咋咋:NP宾语也好,宾语从句也好
这时候 的 N 可以填进去 (Ma46),后面的 A 作为第二个 X 也填进去,大功告成?
白:
要处理残留:谁漂亮
李:
Ma17 于是把“女孩”连上了“漂亮”,填坑。
白:
因为是残留,要在之前已经关闭的N里面找一个做兼职。不占名额。
李:
远距离逻辑关系 不能占句法关系的坑。
白:
_是关闭,五角星是再打开
李:
关闭是入栈,打开是 pop?
白:
好像不是
关闭是了结,打开是废物利用。
李:
这个游戏好玩。
parsing 是走通了,哪里看出怎么给标签?主谓宾等
白:
不给标签,只说谁跟谁有什么关系,留下来的arcs正好构成这么一幅图
李:
“什么”关系不就是标签吗?
MO 是修饰;MA 是填坑,但没说主语关系还是宾语关系
白:
水平的是修饰关系(红色),垂直的是填坑关系(蓝色),跨接是合并关系(橙色)。
李:
没看到跨接
白:
这句没有
不说没关系的,范围已经框死了
语义层面往下走接得住
李:
主语宾语怎么接得住?
主宾的区分往往是,相谐只是可能,句法才是决定。“老鼠爱大米” 填坑以后 相谐可以决定主宾,“张三爱李四” 呢?
白:
我们汉语可能要反过来,相谐如果搞定,不问语序;相谐搞不定的,再问语序。
语序的原始编号都在。
李:
至少对于此句,不问语序是对的。问了语序的话,“女孩”在主语位置,应该是定语从句的主语了,但其实是宾语。
白:
如果填坑时没有竞争者,也不用查中间件。
大部分情况只用相谐就搞得定。
三省吾身,用得妥妥的。
李:
有意思,太有意思了。
白:
当个玩具吧,希望尽快升格为不再是玩具。
李:
这可不是玩具 玩具哪里能搞定这样的句子。看得出来 小词很关键。实词一边有坑,一边有中间件。
白:
玩小词其乐无穷啊
李:
“的”字的玩法 令人惊诧。
白:
“圆圆地画一个圈”
这里要解决“伪状语”的问题。顺带考查一下小词“地”。
李:
洗一个痛快的澡
是伪定语,同理。
白:
这里,“圆”残留的/N,靠“圈”的废物利用搞定。二者之间的subcat不要太般配哦。
同理,“痛快”残留的/N,找到了subcat相谐的已关闭的“他N”。
李:
这句没看懂。
“圆” 一个坑,后来让 “圈” 填了。类似于 “痛快” 的坑 让 “他” 填。
白:
画的逻辑宾语坑是“图形”,圈的subcat也是图形,这不是般配是什么?
伟哥没看懂的是上海话吧……
不要太 means 太tm
李:
哦。
北方话就是王八绿豆对上眼了。
对上眼的是远距离的 “圆” 与 “圈” 啊,“画” 与 “圈” 哪里需要对上眼,那是句法绑定 父母包办:
v 了 一个 n
白:
父母包办的也送中间件里,无妨
李:
不需要。先婚后恋。不恋也成婚。
白:
圆圈也包办的
不过我还没处理成包办
需要磨
所谓包办,就是word embedding。自由恋爱,就是subcat-embedding。
李:
前者是强搭配?后者是搭配
强搭配在两个直接量之间进行:洗-澡;搭配可以在 subcats 之间
吃 -【food】
or【consume】-【food】
词对词:洗-澡 ==》 词对subcat: 吃-【food】 ==》 subcat 对 subcat:【consume】-【food】
HowNet 基本是后者,因为是概念之间。汉语词典里面有前者,因为有习惯表达法,language-specific。问题是,由于自然语言有多义,词到概念的映射不是一一对应的,除非存在一个完美的 WSD 支持。因此,subcat 对 subcat 的这个宇宙真理,尽管概括性和逻辑性强,但不好实施,容易走偏。除非有大数据做底,指望 WSD 不太现实。
白:
中间件看到的就是实例对实例、标签对实例、标签对标签(含标签它八辈儿祖宗)。
李:
我把 HowNet 的搭配搬过来以后,吃过亏。不过实例对实例,这个不需要大数据,拍脑袋也不会走偏。基本就是词典的记忆,脑袋里都有了,而且因为概括性弱,走偏的可能几乎没有:譬如 洗-澡。实例对标签 处于二者之间。
白:
WSD再怎么不完美也要分开,绝不能搅在一起。宁可分头完善去
李:
我从来不指望 WSD
默认假设是没有 WSD 怎么做 NLU 或落地。WSD 是其他过程的结果或副作用,而不是支持其他模块的前提。
白:
“洗”是万金油,“澡”是单打一。
一个固定搭配入口在哪很要紧,放在万金油那儿就惨了
李:
那是效率的问题。有不同的 indexing 的入口。“澡”作为入口 效率更好而已。
所谓 word driven 其中一个考量就是入口的驱动词的选择。传统的词典编纂也有这个考量。
白:
WSD和matcher工作时都要调用中间件
李:
一时想不出来 parsing 为什么要 WSD,有中间件就可以 parse 了。理论上 parse结果里面,词的节点应该是 WSD 过的概念。
白:
不存在独立于中间件之外的WSD
给Matcher的是单选的pos流,从多选到单选这一步是WSD做。再回到多选,就是休眠唤醒了。就是我说的,“纵向不确定性”WSD负责搞定;“横向不确定性”matcher负责搞定。二者都要借助中间件。
李:
多选到单选不是中间件吗?当然说这里面隐含了WSD也是不错的,因为所谓相谐就是两个节点的某一个 ws 与某一个 ws 对上了。从图上说,node 才有 wsd 的问题,arc 不是。
白:
义项的多选到单选,由WSD借助中间件做。parsing动作的多选到单选,由matcher借助中间件做。
“我想战胜AI的心,仅仅是为了作为棋手的尊严。”
“想战胜AI的心”,遇到“心”属不属于“那个小集合”的问题。可以人为设定“心”的一个属于那个小集合的新义项,(类似“心情、心愿”),在中间件里面靠“想、V、的”等捆绑,希望运行WSD时可以体现出来。目前资源太小,很多时候不顺手。
李:
我来推演一下:
parsing 到某个步骤,需要决定定语从句修饰的N,是不是应该反填子句谓语还未填的坑。如果 N 与坑的arg的要求相谐,则填,否则不填。如果 args 都已经 saturated 也没有填的问题。
“我想战胜AI的心”: “战胜”已经saturated,“心”不填。无需给心做 WSD
“想战胜AI的心”: 这时候,“战胜”还有一个主语的 arg 没有填,“心” 能不能填,决定于大数据中有没有 “心” 做 “战胜” 主语的历史积淀。应该是不相谐,没有积淀,因此不填。即便是那个“小集合”的典型案例,譬如“消息”,也有可能是相谐可填坑的:
他走漏的消息,很关键。
他走失的消息,很关键。
大数据搞定 “走漏-消息” 是肯定的。至于“走失” 与 “消息”,那应该是词典决定的标配,而不是大数据。换句话说,搭配是大数据的统计,不搭配则是默认。

白: 再看:

因为“碗”和“猪”不相谐,标红的这一步选择了Sh,而不是Mo

王:
白老师,这个句子最后一步match的是17,可以是47么?

Plus,“这女孩见过的都说漂亮”这个句子似乎有歧义?对比:“老祖宗讲过的都说有理”。

“女孩”在这个带“见”的的字结构里,可以当主语,也可以当宾语。

白:
对。这里只取了一种分析结果

李:

这姑娘见到的都说漂亮。
这小伙儿见到的都说英俊。
这小子见到的都说漂亮(因为他以前根本没遇到过漂亮的)。
这姑娘见到的都说英俊(因为她足不出户,见识太少)。
猪八戒见到的都说漂亮。
这傻瓜见到的都说奇妙。

结论,是 ”姑娘“ 与 ”漂亮“ 的高度相谐性,决定了姑娘与句法标配唱反调,做了 ”见到“的逻辑 宾语。甚至替换成同义词 ”英俊“,这种相谐性有所降低,就很难打败句法标配了。这也说明,语义中间件的相谐性不是好玩的游戏,非高手不能。甚至高手也会失手,过犹不及。

王:
操作有Shift, Modify, Match, Up, 还有这个句子里没用到的Merge,一共五种……

白老师,如何决定每一步用哪种操作呢?是在每一步都把五种操作全部轮一遍,看看哪个能用,然后继续,最后把成功parse全句的依存关系留下,没parse出全句的依存关系丢弃?

另外parsing以前做pos tagging的时候是不是也要把所有可能的pos序列全部给出来?

白:
这里面有大量无效的结合需要排除。算法的核心就体现在这个地方。

目前算法还没有面向所有歧义分析结果,取的是按照系统排序原则首先形成的第一个满足条件的分析结果。

另外不同的pos标记是靠WSD模块来选取的,每个词只有一个pos标记胜出。

如果做不下去了,又发现“里外勾结(甲词的首选pos和乙词的非首选pos类型相配)”,则启动翻盘。

李: 总结一哈。

优选的路径亮相的背后是大量的伪歧义,白老师怎么对付的呢?一个是基于训练出来的语义中间件的WSD,它负责提供每一个词的唯一而合适的pos供给 以 subcats 驱动的 parsing 去匹配。另一个就是 parsing 的算法,想来是糅合了某些语言学原则的,来决定操作的顺序。

这解答了我以前的一个疑问,为什么不可以绕过WSD做深度parsing?

在白老师,是绕不过去的,因为是基础支持。在我这儿,基本上是绕过去了。POS (可以看成是最粗线条的 WSD 的语法表现)我基本是绕过去做parsing的。见:【NLP 迷思之四:词义消歧(WSD)是NLP应用的瓶颈】;【中文处理的迷思之二:词类标注是句法分析的前提】。

能绕不能绕,决定于算法。条条大道通罗马 of course

白老师算法的精炼和操作的简约,是建立在两个基础之上:一个是语言学标注丰富的词典,潜在的路径都藏在里面,就等 matcher去选秀。另一个就是要有一个大数据的语义中间件的有力支持。

我这边也要靠信息丰富的词典,词典的一头是语言学,词典的另一头是HowNet本体,前者是主,后者是辅。

另一个靠山就是规则,根据语言学原则和经验设计出来的支持多层parsing 模块的 hierarchical 的规则集。

多层、细线条规则,为绕过POS和绕过WSD施行对伪歧义免疫的高精度深度分析,提供了条件。parsing 本身的基本机制也很简单,但利用这个机制把语言学揉进去来组织多层,那就是可乐式秘方了。

白:

“貌似咱倆把天聊歪了”--隔壁群里的一句话,离合词活用经典。

李: 就此打住吧。

白:
我说,天好好的,没歪。

当规则寓于词典的时候,WSD不是传统含义,POS也不是。某种意义上说,此时选择义项就是在选择规则。也就是说,绕开彼WSD使用的技术,跟此WSD使用的技术是相通的。

李:
WSD 本来是一个独立的与结构分析不必交融的任务,譬如,bank 是选“银行”还是“河岸”的消歧问题。再如,this coach is believed to be tough 这是以前提过的 WSD 经典案例,说的是,利用语义相谐来做 WSD

coach 有n个义项 tough 也有 m 个,二者互谐的只有两个:
coach【human】:教练 ; tough【human feature】:严厉
coach 【vehicle】 :马车; tough 【object feature】:皮实

白:
这不影响结构啊,一个N,一个S/N。pos没有其他选择就不check

李:
这个案例不影响各自的POS,不影响结构,这是 WSD 原本要追求的目标,但不是 parsing 所需要的支持。

然而,如果相谐是需要check的一个条件,出现的情况就是:

1. 由于 sparse data,两个直接量在一起的机会不够,所以系统认为是不相谐: 就是说语义不及格,全靠句法了。如果句法无歧义,没关系。否则影响parsing的质量。

2. 如果数据超大量,不要依赖于 subcat 级别上的相谐,而是利用直接量的 touch 和 coach 就有足够的例证是互谐的,那么语义支持了二者的结合,哪怕这时候究竟是 【human】还是【non-human】仍然无解。

我要说的是,白老师的 WSD 模块不是通常意义的 WSD,而是针对结构歧义(structural disambiguation)而来的相谐的支持,是粗线条的,而且是调用 when needed 的。WSD 的本义不是这个,本义是 lexical disambiguation,是为了确定词义的。本义的 WSD 对 结构 parsing 理论上有帮助,实践中基本不需要。在结构 parsing 的时候,WSD 可以隐含(或成为结果,就是所谓 positive 的副作用),但不必是条件。

即便如此,白老师由于没有显式的多层的 pattern 规则,只有隐含在词典可以被 matcher激发的潜在规则种子,其结果是对所谓 WSD或POS 模块的依赖远远大于多层的规则系统。既然有休眠唤醒,白老师应该也引入了多层。但总体上,白老师的层次是少数的,仍然在传统 parsing 单层搜索空间的延长线上。因此理论上,伪歧义会成为极大的困扰。白老师的创新就在,层次虽然不多,但背靠两座大山。这两座大山,都是传统 parsing 不具备,或者严重不充分的。第一座大山是词典主义标注,这是一个巨大的语言学工作,特别对小词和 top 1000 的用法众多的实词。第二座大山就是大数据的语义相谐的训练。建造这两座山都不是简单的活儿,除了设计家的宏观规划外,牵扯的具体的数据工作和调试测试工作非常庞大。没本事建大山,也就无法克服传统parsing的伪歧义瓶颈。

【相关】

【李白之18:白老师的秘密武器再探】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【语义计算:李白对话录系列】

【立委按】世有李白者,精于语义,勤于计算,一敏一木,一弦一弹,无论魏晋,不知有汉。坐而论道,波澜不惊,各得其乐,天马空行。挥斥方遒,指点语言,和寡曲高,流水云天。有道是,一擎核弹一拨弦,不是冤家不上船。

【李白100:Parsing 的休眠反悔机制】

【李白99:从大小S的整体部分关系看舆情挖掘的统计性】

【李白98:从对联和孔子遗言看子语言自动解析】

【李白97:大S小S句式中插入“的”所引起的交叉陷阱】

【李白96:想哪扯哪,不离其宗】

【李白95:走在路上……】

【李白梁于94:爱因斯坦是卓别林的崇拜者, 谁崇拜谁?】

【李白宋93:汉语语序的自由与不自由】

【李白92:自然语言漏得筛子似的,未必要补漏】

【李白91:休眠唤醒需要打离婚证】

【李白宋郭90:句法与逻辑和语用的纠缠】

【李白王89:模糊语义与真假歧义,兼论PSG与DG】

【李白宋88:再谈量词搭配与名词短语自动解析】

【李白洪87:人工智能,真的该让这样的哲学家走开】

【李白86:这是最后的斗争?】

【李白刘董85:汉字优越吗?】

【李白王董84:再谈POS迷思,兼论 PennTree 的误导】

【李白宋83:点评 “人工智能的诗与远方”】

【李白82:汉语重叠式再议】

【李白81:某些人的讽刺与挖苦】

【李白毛洪80:驯兽散记】

【李白79:中文深度解析的地基是词法分析器】

【李白78:毛主席保证】

【李白77:基本短语是浅层和深层parsing的重要接口】

【李白76:跨层次结构歧义的识别表达痛点】

【李白洪毛75:乔姆斯基批判】

【李白雷宋74:乔老爷的递归陷阱】

【李白73:汉语parsing的合成词痛点】

【李白宋毛72:NLP的测不准与追求完美】

【李白71:“上交所有不义之财!”】

【李白70:计算语言学界最“浪漫”的事儿】

【李白69:“蛋要是能炒饭,要厨师干啥用?”】

【李白68:NLP扯着扯着还是扯到萝卜填坑】

【李白67:带结构变量的词驱动模式注定是有限的】

【李白66:“青春期父母指南”的语义计算】

【李白邢65:“着”字VP的处置】

【李白董冯吕64:NLPers 谈 NLP渊源及其落地】

【李白雷63:做NLP也要见好就收,适可而止】

【李白梅宋62:工程语法与深度神经】

【李白张61:长尾问题种种】

【李白60:事理图谱之辨】

【李白雷梅59:自动句法分析中的伪歧义泥潭】

【李白之58:爬楼NLU】

【李白董57:中文字驱动patterns初探】

【李白王56:与上帝同在和对话的学问】

【李白毛55:漫谈 中文NLP和数据流】

【李白雷54:句法语义纠缠论】

【李白宋53:聪明的一休与睿智的立委】

李白郭 52:单层、一锅烩、反悔

李白董51:说不完的subcat和逻辑语义

【李白之50:符号战壕的两条道路之辩(续)】

【李白梁49:同一个战壕的两条道路之辨】

【李白之48:关系不交叉原则再探】

【李白之47:深度分析是图不是树,逻辑语义不怕句法交叉】

【李白之46:做NLP想不乐观都找不到理由】

【李白之45:从变性谈到模糊与歧义的不同】

【李白之44:“明确”是老子还是儿子,需要明确】

【李白之43:谈谈绑定和回指】

【李白之42:谈谈工具格的语言形式】

【李白之41:Gui冒VP的风险】

【李白之40:逻辑语义是语义核心,但不是全部】

李白之39:探究自然语言的毛毛虫机制

李白之38:叫NLP太沉重

【李白之37:分层与一锅煮的parsing机制探讨】

【李白之36:汉语可以裸奔,不可能无法】

【李白之35:句法分析 bottom up 为基础,可穿插 top down】

【李白之34:汉语情态词和计划类动词的异同】

【李白之33:从语言的毛毛虫特性聊到语文纠错的辅助工具】

【李白之32:从“没 de Vt” 聊开去】

【李白之31:绕弯可以,弯不过三】

【李白之30:李白侃中文parsing】

【李白之29:依存关系图引入浅层短语结构的百利一弊】

【李白之28:“天就是这样被聊死的”】

【李白之27:莫名其妙之妙,妙不可道】

【李白之26:汉语动结式和情态式的隐式被动现象】

【李白之25:句法能简则简,只要不影响总体结构】

【李白之24:“这碗花纹很别致的”】

【李白之23:“一切都在变,只有变本身不变”】

【李白之22:兼语式的处置及其结构表达】

【李白之21:萝卜多坑不够咋办】

【李白之20:得字结构的处置及其结构表达】

【李白之19:三探白老师的秘密武器】

【李白之18:白老师的秘密武器再探】

【李白之17:“我的人回来了, 可心还在路上”】

【李白之16:小词负载结构与小词只参与模式条件之辩】

【李白之15:白老师的秘密武器探秘】

【李白之14:Chinese deep parsing,说的是 deep!】

【李白之13:所谓话题或大小主语的句式】

李白之12:修正乔老爷的保守派自由派之辨】

【李白之11:parser 的三省吾身】

【李白之10:白老师的麻烦不是白老师的】

【李白之九:语义破格的出口】

李白之八:有语义落地直通车的parser才是核武器

【李白之七:NLP 的 Components 及其关系】

【李白之六:如何学习和处置“打了一拳”】

【李白之五:你波你的波,我粒我的粒】

【李白之四:RNN 与语言学算法】

【李白之三:从“把手”谈起】

【李白之二:关于词类活用】

《李白之一:关于纯语义系统》

《李白之零:NLP 骨灰级砖家一席谈,关于伪歧义》

【李白隔空对话录:谁无知呢?】

李白:其实NLP 也没那么容易气死

【相关】

[转载]【白硕 – 穿越乔家大院寻找“毛毛虫”】

【白硕 – 打回原形】

自然语言后学都应该看看白硕老师的“自然语言处理与人工智能”

立委译白硕:“入口载体”之争(中英对照)

《铿锵众人行, parsing 可以颠覆关键词吗?》

【泥沙龙铿锵行:再论NLP与搜索】

【泥沙龙笔记:语义可以绕过句法吗】

《parsing 的休眠反悔机制》

【歧义parsing的休眠唤醒机制初探】

【结构歧义的休眠唤醒演义】

《跨层次结构歧义的识别表达痛点》

乔姆斯基批判

【科研笔记:NLP “毛毛虫” 笔记,从一维到二维】

【理论家的围墙和工程师的私货】

【语义计算沙龙:乔老爷的围墙,community 的盲区】

【deep parsing 小品:天涯若比邻的远距离关系】 

Deep parsing: 每日一析,内情曝光vs 假货曝光

立委科普:关键词革命

立委科普:关键词外传

骨灰级砖家一席谈,真伪结构歧义的对策(1/2)

骨灰级砖家一席谈,真伪结构歧义的对策(2/2)

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之14:Chinese deep parsing,说的是 deep!】

白:

“认错的人我原谅了”“认错的人原谅我了”
“这场雨来的不是时候”“这场雨来得不是时候”哪个对?
“这场雨来的不是时候”、“这场雨来得不是时候”,感觉前者说“来”不是时候,后者说“雨”不是时候。个人倾向前者。

李:


谁原谅谁,句式蛮普通的。这里面还有其他的 catch 吗?

白:
两个不同的“认错”:一个是承认错误,一个是认错人,负面sentiment在不同主体身上。原谅的方向不一样,可以反推是哪个“认错”

李:
我很木
没想到第二个认错(人)。

白:
在“认错”与“人”之间,至少一个S,一个O。

李:
两句都理解成“承认错误”不行吗?

白:
一个大概率,一个小概率
把后者标成O,都是大概率。

李:
明白了。(当然那是在受教以后在明白)

我的问题是,普罗百姓更多人跟我似的木,还是白老师一样敏锐?
第二个问题是,这种不影响句子大局(大结构)的微结构里面的hidden args:decode 出来或不理它,decode 对了或错了,对一般的语义落地目标影响多大?

白:每个都不大,加起来不小。

李:
下面这组更看不出区别了:

白:
的/得,对错别字再加点容忍度,肯定是你这结果

李:
这一组,几乎肯定老百姓对区别无感。
“得”、“的” 混用已经如此普遍,以至于正式文字里面也不少见了。
实践中的体会是,遇到 “得” 就遇到了救星,因为基本可以肯定,用 “得” 的人是有文化的,是有意为之。由于 “得” 的补语标志性很强烈,加上 “的” 用法太多,系统不用担心 “得”,但是对 “的” 不得不格外小心。无论怎么小心,也还常搞不定。现代汉语该死该诅咒的东西很多,“的” 肯定是 top 3 可以千刀万剐的。恨得不止咬牙。

白:
“他菜炒的不够熟练”“他菜炒得不够熟练”呢?前者说的“炒”不够熟练;后者说的“他”不够熟练。其实用哪个字倒在其次,关键是结构不同。不同的萝卜来填坑。

李:

其实第二句的离合词“炒菜”也抓着了,不过显示的时候与 “得字结构” 撞车,没显示出来,这是显示的bug,不是parser的bug。有意思的是,炒菜也可以是名词:

白:
“生的伟大死的光荣”还是“生得伟大死得光荣”?
我觉得谓词的体词化+comments谓词,和谓词与谓词共享坑,根本就是两个结构。
我其实想说,“圈画de圆”和“圈画de慢”是两个结构,不管用“的”还是“得”。
前者是双爹,后者是祖孙三代。
“坑挖de整齐”和“坑挖de突然”也是两个结构。

李:

后者是默认,不论。
前者很 tricky。

白:
这两个用不同字区分,有意义。

李:
没法教育普罗。语言实践中不可操作。

白:
受过教育的尽管都写“得”,其实很勉强。谓词名词化用“的”本来天经地义,为啥算错。
我觉得做区分也是“语文”的需要,并不是“语言学”的必然。所以有今天这样的混用局面
这个区分并不高明。

李:
因为的字过载,其中的 “的字结构” 已经很各别:一个子句突然变成一个 NP,
这已经很让人困扰了(英语的 what-clause 也有这种困扰,容后论),这时候大家在学 “的字结构” 的时候,尽量趋向于收紧。最常最先记住的 pattern 就是“我吃的”、“他读的”、“你扔掉的” 这类。现在突然来了倒装,又夹杂了分离词,别说普罗会懵,就是文化人能整明白的也在少数。

白:
所以我才只问填坑,不贴标签

李:
更主要的还是口语中读音一样,这种细致的语义区别,要想教育用文字区别,不可行。

白:
不说哪个是补语,填坑的方向自然说明一切
@wei 试试旅馆那个?
“这里的旅馆住过的都知道很脏。”
“这女孩见过的都说漂亮。”

这个例子的奇妙之处在于,一般的情态动词和它带的宾语动词具有同一个逻辑主语,但这里却不是。“住过的都知道”似乎像是一个插入语。但是parser怎么会知道这里是插入语?

“这女孩见过的都说漂亮。”

同理。撇开是不是插入语的事情,这就是“很脏”的坑谁来填的问题。有“住过的”和“旅馆”两个选项。为啥不是“住过的”?我之所以拿女孩漂亮的句子做补充,是想说明,这一选择与sentiment无关。

撇开是不是插入语的事情,这就是“很脏”的坑谁来填的问题。有“住过的”和“旅馆”两个选项。为啥不是“住过的”?我之所以拿女孩漂亮的句子做补充,是想说明,这一选择与sentiment无关。

李:


何年何月 肯定做过努力。至于努力的成效就不好说了。汗滴禾下土 有迹可循。弄巧成拙也在所难免。不遇到特别的句子还看不出来。

白:
“这里的旅馆 住旅馆过的”看样子是在容忍不确定性
两个S都指向这个集合,但回避了是否指同一个元素。李:

李:
这是智慧还是油滑?白硕:

白:
这种容忍不确定性又把不确定性圈住的做法,必须发扬光大。李:

李:
听上去像是表扬。白硕:

白:
当然
只是还不解渴
期待更多 更系统 更elegant

白:
是知道一个词这样,还是情态动词都这样?

“这个人大家都相信是无辜的”

似乎“相信”也是对的

李:

白:
“这只老虎尿过的都认为是自己的地盘。” 出现反例了。“尿”本是不及物动词,但是这时候要强制提拔一个编外的坑,给“尿”。处所,很幸运地被选中。

李:
还有:“这个小便池尿过的都说干净。”

计算语言学家的不能告诉我们,我们正在走向危险的边缘。句子越来越诡异,合法非法之间,更要命的是,感觉上不具有统计性:不好拿捏,不仅要费牛劲儿,而且做了白做。

见好就收。拉倒。

前面提到英语的 what-clause 也类似汉语的 的字结构 容易让人懵。因为看上去就是一个 wh子句,可用法上的绝大多数 却是 NP,等价于带定语从句但省略了 head 的NP。蛮操蛋的。结果呢, 遇到复杂情形,晕菜了。What you said is not what you did.

What you said is not what you did.

这个中规中矩,还好。

I don't know what you did.
I don't understand what you said.

前一句,是 NP 还是 wh-子句?其实两可。翻译过来就是:

我不知道你做的(事儿)。
我不知道你做了什么。

这种细微差别,老百姓是不管的,也管不了,大家也就打马虎眼抹平了,反正也差不太多。第二句呢,一般理解就是 NP:我不理解你说的(话儿)。

understand 与 know 近义词,但 subcats 有别。know 既可以带 NP 又可以到 wh-子句:

I don't know who you are, but I know what you are
I also know where you live and how you got your permit.

understand 通常带NP,或比 know 对 NP 更青睐。

 

【相关】

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【李白之13:所谓话题或大小主语的句式】

白:
“我讨厌那种窗户不透亮的房间”
“我喜欢家不在本地的女朋友”
“他期盼着进入一个放学不留作业的学校”
@崔佳悦 欢迎

李:

欢迎@崔佳悦 虽然词库目前未登录 好在 ne 还是对了。

1. “秦汉胡同学员作品展” 里切词有错,可是 NP 对了,应该不影响parsing该NP涉及到的句子大局;

2. “蒙太格” 不在词典,更甭提“蒙太格语法”这个术语了,但是 NP 还是没错;

3. “逻辑语义学研究”,初期 parse 成主语 S,到了语义中间件(不是白老师那种中间件,是句法后的语义模块)发现是逻辑宾语 O,但并未删除初始的主语结论(其实是有意为之,因为这个更新不是百分百把握,留下初始结果可以增加语义落地 recall,不过是一个儿子两个老子而已的可以容纳的 non-deterministic 的结果);

4. 从事的主语应该是【human】or 【institution】,现在错了,这个可以在语义模块更正的,如果磨细活的话。

5. 最后的话(怎么听上去像瞿秋白先烈就义前的心灵忏悔?): 所谓鲁棒,就是步步为营,不求完美。有知识就细柔一点,没知识就大老粗。

白:
“我不喜欢穿没有领子的毛衣。”

李:
人在外 领导血拼 估计没问题 等回家测试
人在外 == body 在外
不是领导ing shopping 而是陪领导 shopping
估计what没问题 等回家测试what
这个要问白老师 语义中间件搞不定。
估计【白句的测试结果】没问题 等回家测试【白句】
白句是what 问一问小冰
据说小冰是目前对discourse最能耐的妞儿了。

白:
窗户那个,看不出细节
如果“不透亮”一个坑,而且被“窗户”占了,而“房间”又不属于“那个小集合”,那么“房间”回填“不透亮”应该遭遇阻碍而且不能不了了之。不知道伟哥怎么摆平的。别告诉我就是不了了之了。

李:
做 sentiment 的 这个都摆不平 就完蛋了:窗户不透亮 是 negative 中最具情报价值的信息,我们叫做 actionable insights,比纯粹情绪的宣泄价值大太多

白:
“没有”两个坑,把问题掩盖了。再来:“我最喜欢吃皮儿薄的饺子。”
估计和窗户一样
毛衣、饺子、房间,都是俩爹。

李:


这个、这个 -- 差强人意了点儿。
可毛主席说了,吕端大事不糊涂。大局不错。

白:
领子、窗户、皮儿,都有坑
在图上把俩爹找齐了才漂亮

李:
哪两个爹?
皮尔 是 薄 的 S, 也是 饺子 的 part?
part-of 关系可以作为支持,不必作为 output,因为这个在 ontology 已经预定了

白:
饺子,皮儿一个爹,吃一个爹。

李:
吃是爹,饺子是宾语儿子。
至于饺子与皮的关系,这是一种不易的本体知识,不是动态的语义,有何必要?HowNet 里面就给了这个关系,这是宇宙真理,放之四海而皆准。没有情报价值。

白:
句法层面不需要知道是part-of,只需要知道有坑

“这些饺子皮儿太厚”,饺子的爹是谁?
是“太厚”,不通。是“皮儿太厚”,违反了词负载结构的原则,答案只能是“皮儿”,而且人家俩的关系就摆在那里。

李:

一个大主语,一个小主语而已,层次不同。
做 sentiment 的,对于这样的描述: 皮儿太厚,非常敏感,因为请报价值大。这是一种抱怨,而且抱怨具有 actionable 情报。下次包饺子,就要注意擀皮儿的人了。

白:
我就是不满意这个大小主语的说法
本来可以做得更好,而且是举手之劳

李:
目前这个做法 很合理啊。
你看看 “皮” 虽然也是 S, “这些饺子” 也是 S,但两个 Ss 明显层次不同

白:
“张三不知怎么搞的亲戚那么多。”
亲戚不是part-of,但有坑的特点是一样的

李:
从短语结构即可看出:"皮"几乎就是词法 open morphology 而 "饺子"则是句法。

白:
亲戚也是词法?
sentiment里面所谓的aspect,在句法里都可以显性处理,不用走曲折道路。

一个性质,完全平行的句子,被处理成了不同样子。

李:


这些扩展的主谓结构,处于词法句法边缘地带,是句子一级的句法的一个单元。违反了词负载结构的原则,也没什么。

白:
硬盘也是?
这台机器不知怎么搞的硬盘总坏。

李:

说是 open morphology 也差不多:硬盘总坏;身体好;性格糟糕;屏幕太宽;价钱死贵 。。。。。。

白:
本来可以纯句法处理的,只要更新一下观念

李:
现在的处理办法, 经过太多的测试,一直感觉很顺溜
语义落地,特别是落地到 sentiment,真地是一顺百顺
展示这样的sentiment 的短语结构的结果 也很漂亮。容易理解,情报丰富。

白:
在句法上把坑显性化,只会做得更好

“硬盘总是坏的机器不要买”
“秘书过于漂亮的老板不好当”

李:
这个 这个 这个 。。。。这个 这个。。。

反正这样玩法,白老师铁心要玩残它。不过:
“硬盘总是坏的采购员不要买,好的采购员可以买”

白:
这个例子好。

问题是我有更好的方法

李:
白老师的问题不是我的问题,但白老师的麻烦却是我的问题。(哈,cf:【李白对话录之10:白老师的麻烦不是白老师的】

白:
有自由度了。中间件该出场了。
如果没有自由度,还轮不到中间件呢

李:
中间件是这样的:没有它 parser 一样行走,而且多数情况下走得还不错。
这就是 parser 第一步要做到的目标。
然后,随着中间件不断丰富,parsing 不断细化、语义逻辑化。这是 parsing 的第二步目标,是 semantic parsing 的终极目标,但不是语义落地的必要条件。

白:
当然。但句法不同,伪歧义表现不同,中间件出场的条件自然也不同。
伪歧义多点少点死不了人,断链子就不同了

李:
无论是 白老师的中间件的 integrated or call-on-the-fly 的做法,还是我的 pipeline 的语义模块的做法,本质是一样的。

白:
我在质疑句法本身,而不是parsing。

李:
现在的情况是,第一步目标几乎达到了,靠谱了。第二步还在断续补足中。
句法的目标只能是方便语义落地。如果较好地支持语义落地,那么就是一个好的句法(representation)。

白:
这里的“方便”往往夹杂着对软件和数据legacy的考量,着眼点不在“地”而在“落“
如果没有legacy,反而更容易着眼于“地”。成功是失败之母。因为任何一种成功都有固化自己的冲动。

李:
评判 syntax 是一个困难的事儿。譬如说吧 虽然我们可以批判 penn tree,抱怨它设计得糟糕透了。但是 换一个人制定标准 估计也好不了太多,我们还会批判它。我可以一口气数落 penn tree 的10大错,而且可以条条是道。所以,在认识到这种评判的困难以后,我们可以退一步说,至少我们评判一个 syntax 的表达,着眼点是多大程度 多么明显地 有助于或妨碍了 语义落地,而不是从一个句法算法的一致性与否的角度。

白:
还是那句话,落地是有潜台词的,站在什么legacy的山上唱什么歌。最后是legacy主导一切,落主导一切,地是啥反而可以不care了。

李:
那是。我是站在 sentiment,或 IE 的legacy 上。

白:
不对,IE/sentiment还是地,不是落。

李:
地 就是 IE (sentiment 也是 IE),落就是 subtree patterns 的 matching白硕:

白:
subtree自身的局限决定了落的局限
我大概4-5年前放弃subtree的。
我当时起名叫 ppt:partial parse tree

李:
结构匹配
聚焦就是这么来的。
叫不叫 tree 无所谓 实际是个 sub-graph,我们以前也叫 svo search or svo retrieval or svo matching,有了这个 老鼠爱大米 就可以挖掘出来了。

白:
“他死去多年的消息终于曝光了”“他死去多年的弟弟终于平反了”

李:

这个是经典 minimal pair 了
同位subcat

白:
“专家对这种方法的意见还是不靠谱。”
“还是”歧义了。

李:

“还是” 还不是问题,“对” 是个隐患。
【对 np 的 n】 ,np or pp?

谁的意见?
专家的。
什么意见?
对这种方法的意见
什么不靠谱?
意见不靠谱。
谈的 topic 是?
专家。

专家作为虚的 topic 和 实的 mod 都 decode 了,parser 也算兢兢业业了吧。
流氓耍到了这个境界,也可以立牌坊了,正所谓:功到雄奇即罪名,流氓耍尽成英雄。

【相关】

 

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

 

【李白之12:修正乔老爷的保守派自由派之辨】

白:
“他们把总裁开掉的人训了一顿。”“他们把总裁开掉的人吃了一顿。”

我:
总裁开掉的那些人吃了一顿。
把总裁开掉的那些人吃了一顿。

“他们把总裁开掉的人吃了一顿。”属于合法非法边缘,语感上别扭:“他们”与“人”coreference,很多人不接受。

白:
同位语

我:
觉得别扭。
这些句子真心难。
试一试 parser。别扭的说法出来了(第二句),顺溜的句法反而走歪了(第一句):

白:
吃的宾语相谐条件太明显不满足。

他们戴着大盖帽的人很强势
他们把子曰诗云挂在嘴边的人对民间俚语一点兴趣都没有。

我:

“他们戴着大盖帽的人很强势”这句稍微好一点,不过这类句子总体别扭是因为有更简约明了的说法在竞争:

他们戴着大盖帽的人很强势 --> 戴着大盖帽的人很强势
他们戴着大盖帽的那些人很强势 --> 戴着大盖帽的那些人很强势

这个“他们”不仅多此一举,而且平添理解困难。

白:
理解是不应该裁定是否别扭的
生成可以

我:
道理是。但是别扭决定了统计性弱,因此理解系统忽略它后果不严重,甚至总体更有利(减少了弄巧成拙的可能性)。可惜,我们目前坏在没有忽略它。因为 local SVO 很正,想忽略也不容易呢。即便想降低 recall,减少对罕见例子的鲁棒性,也不容易,除非费力刻意为之 。。。

白:
我是在探索方法论问题:不回头的matcher需要看多远。

我:
知道,这是"消息"类的延长线。不过这个同位复杂了,需要回头。不好办。弄巧成拙的可能很大。

白:
如果必须在一个阶段内将错就错,那么等trigger到来之际,强行上车的乘客挤掉之前在车上的哪个乘客,还会不会翻掉更早的盘。

代词相当于有个坑,虽然和谓词隔了一层,但毕竟和“信息”类不同。
非代词同位结构不能这样用。

我:
道理明白。
道理是道理。那什么是什么。

as expected,前一句虽然对了,对得不开心。歪打正着,这不是第一次遇到了。在非设计的成功里,设计者不可能开心。而这一路不好设计。

前句各就各位,一路通畅。正因为此,后者只好把“把”落到定语从句的 head N 身上,又因为“把”的句法强势,“。。。那些人”成了盘中餐。哈,荒诞不过如此,但parsing 的逻辑线条却是清晰的。

白:
这里有个逻辑顺序问题。“把”怎么摆布,是有余地的,“吃”做逻辑宾语的语义不相谐,却是没余地的。应该句法不到山穷水尽,语义不相谐的不要登场才是。

我:
这个说法实践中很容易把人带进坑的。
换句话说,白老师自己有一个路数,按照这个路数,这个说法没啥问题。可是 followers 如果不是那个路数,或不明白那类路数,把这个说法当原则去指导实践,九成以上就掉坑里了。比较容易 follow 而大面上不错的原则还是乔老爷的句法独立原则的修正:句法不到山穷水尽,语义相谐的不要登场才是。对比白老师原则:句法不到山穷水尽,语义不相谐的“不”要登场才是。

白:
实践中,语义不相谐又被采纳的基本是活用性质的修辞,它们都发生在“高确定性、低相谐度”那个区域。如果明明是活用性的修辞用法,但却发生在低确定性区域,只能证明句法本身出问题了。

我:
对啊。
“高确定性、低相谐度”那个区域是不小的一个区间。因此句法独立的做法也不是完全要推翻,适当使用还是有益的。

白:
@wei 这个乔老爷原则用在英语上。
汉语不灵。

我:
明白。但还是一个度的问题。
完全实行乔老爷,根本就没有语义相谐或不相谐的事儿,语义被句法踢得远远的,老死不相往来。Note 我的原则是对乔老爷的修正: 句法不到山穷水尽,语义相谐的不要登场才是。可见,在这个原则下,语义登场了,语义句法融合了。
白老师的原则也是融合,也是对乔老爷的修正或反叛。但一字之差,就是保守派和自由派之争。我的说法:作为原则,不到不得已不动用语义。不得不动用的话,动用相偕,而不是不相谐。这个说法是有一贯性的:(1)不到不得已不用语义,差不多就是让句法来主导,暂时不管谐不谐,这等于语义不谐但句法不错的已在网中,因此也就没有再查不相谐的必要了。毛姑姑,这样可以搞定英语的90%+,汉语的 80%+,那么剩下的句法搞不定的,句法出错的,就用语义相谐来细化(句法角色细化为逻辑语义:譬如 确定 agent 主语 vs instrument 主语)或修正(包括休眠唤醒)。这条路稳妥一些,至少感觉跌进坑的可能减少一些。

 

【相关】

《泥沙龙笔记:parsing 的休眠反悔机制》

【立委科普:歧义parsing的休眠唤醒机制再探】 

【立委科普:结构歧义的休眠唤醒演义】

【李白对话录之11:parser 的三省吾身】

【李白对话录之10:白老师的麻烦不是白老师的】

【李白对话录之九:语义破格的出口】

李白对话录之八:有语义落地直通车的parser才是核武器

【李白对话录之七:NLP 的 Components 及其关系】

【李白对话录之六:如何学习和处置“打了一拳”】

【李白对话录之五:你波你的波,我粒我的粒】

【李白对话录之四:RNN 与语言学算法】

【李白对话录之三:从“把手”谈起】

【李白隔空对话录之二:关于词类活用】

《李白对话录:关于纯语义系统》

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【语义计算:从神经机器翻译谈起】

我:
机器翻译所蕴含的厚重和神圣,在新一代是不可理解的

刚入行的时候做的是外汉机器翻译,一直不大敢碰汉外,原因是汉语语法不好形式 化,感觉太难了,当时想,这辈子怕都没指望了。 现如今,汉语语法还真没有见到多少大规模形式化能实用的,按照以前的路子,那汉外机器翻译必然寸步难行,因为汉语分析是前提,然后才是转换和生成。

可谁能想到,机器学习越来越牛,人工翻译的双语资料作为人类活动的副产品,几乎“天然地”源源不断而来,这就成就了深度神经机器翻译。什么分析,什么生成,统统绕过去,端对端直接施行转换。Google Translate 因此可以在同一个模型架构下,支持几十种语言的互译。这简直就是神迹。可却是技术的事实。尤其不可思议的是,以前认为最难的的汉外翻译,反而进步最大(至少汉英是如此)。 译文再不济,也给你个大概齐,不仅立等可取,而且还完全免费。比你学两年外语,带上词典死磕还一头雾水要强多少。除了天堂,天下哪里有这样的美事?

机器翻译(MT)是自然语言处理(NLP)领域历史最悠久的应用方向,从上 个世纪50年代初发轫,承载了中外几代不知道多少人的青春和梦想,也包括青年时代的立委。如今,梦想化为现实,嵌入式机器翻译在互联网无孔不入,已经成为普罗大众手中招之即来挥之即去的便捷工具,每时每刻在默默服务着千百万互联网用户。女儿学汉语用它,学西班牙语用它,去日本动漫网页也用它,用到对它熟视无睹,把机器翻译视为理所当然。只在翻译错得离谱的时候才意识到它的存在,不时报以嘲讽:真笨。可机器翻译呢,谦谦君子,玉树临风,虚怀若谷,无怨无悔。对于已经天然成为女儿这代人生活一部分的机器翻译,我满腹机器翻译的历史和掌故,却不知如何给她诉说。耳濡目染,她从我断续的话语中似乎隐隐觉得机器翻译对于她父亲的一生具有特别的意义,可是我还是无法象对同辈人那样娓娓道来,如数家珍,传达出我内心深处的机器翻译所蕴含的那份厚重和神圣。不仅仅是代沟,是技术的跨越式发展造成了两代人迥然不同的视角,令人感慨。 from 【机器翻译万岁

刘:
@wei 深有同感。科学技术的发展真是出人意料,做梦也想不到机器翻译能到现在这个程度。我一个刚入门不久的学生跑NMT,轻松超过Moses十几个点,仅几年前,这还是天方夜谭,要是超出Moses五个点绝对可以发最高等级的论文、拿博士学位了。
而且现在用现有的深度学习工具编NMT程序,代码量跟SMT相比都很小,不像写一个SMT程序,要花大量时间处理小的细节。深度学习的工具本身太强大了。同一套工具,稍加修改,既可以做机器翻译,也可以做语言识别、图像识别。
深度学习并没有解决所有问题,但为我们解决一些难题提供了全新的框架,带来了新的希望,潜力还远远没有挖掘完,这给我们这些搞研究的也带来了巨大的机会

我:
很羡慕ing @刘 那天与讯飞的院长谈这事儿,他也是超级兴奋,说以前以为大约四五年会有全方位的大突破,神经在大系统大应用上全面开花。现在他确信只要2-3年就可以了,到时候很多事情会超出我们的想象。他是这样描述的,非常由衷。感觉是作为一线领航者,他看到一种排山倒海的科学潜力正在转化为技术力量,面对巨大机会忍不住激动。这很感染人。这种心态我可以体会。

biao:
@wei  所以,哥儿几个在这死磕语法似乎很难看到什么时候是出头之日。

科大讯飞的确有过人之处。起码它的语音输入可以让你节约大量时间。
前几天有人在这里抱怨说输入码字太累。实际上现在语音输入完全可以帮助你非常轻松的输入,而且效果很好。
上面这两段话完全是讯飞语音输入的。一个字没有改,十几秒钟搞定,非常轻松。

刘:
我不敢预测哪些问题能解决哪些不能,但总体的进步是可预期的

我:
说语法没有出头之日 是小看了咱语言学家 等到dl打败我的 parser 再说不迟。
事实是 迄今全世界最牛的 dl syntaxnet 仍然是我手下败将
另一个事实是 迄今没有sentiment系统在 open domain social media 这个几乎最难的 space,能赶上我们。Not even close :the margin is almost 20 percentage points apart

所以我跟讯飞院长说 你我是同一类人。不过你在舞台中央 我在野。但是论信心和对nlp的展望 心态和世界观惊人的一致。要不咱们互补、合作、合流,要不咱们就来个友谊赛,我就不自量力一哈。反正论年龄 我输得起 你们输不起 =)
(我输了 就钓鱼去 乐见ai一统天下于dl if they truly deliver as well as nmt did
可是 nmt 有data 而大多数 nlp 没有那么多clean labeled data 啊)

biao:
语法分析最大的问题是不灵活。鲜活的语言千变万化。一句话稍微变个说法,语法分析就抓狂了。

我:
根本不是这回事 你的理解有误

白:
死守固定语序才这样 但语法分析死守固定语序已经是老黄历了
你变个说法给伟哥试试 他会告诉你一个robust的句法分析器能做到什么

从“计算”角度说,黑盒子容纳结构的能力是最本质的。从“语言”角度说,结构应该长什么样,比其他的事情更值得关注。
两栖人

biao:
先分析一个名句:
”其为人也孝悌而好犯上者鲜矣。”

我:
如果变个说法 语法就抓狂 要这劳什子干嘛。语法的目的不就是为了对付变体吗

白:
大战风车,其乐无穷

我:
你弄句文言做啥?这个 sublanguage 里面没钱,开发他有卵用。
“卵” 属于 P 系列:是现代汉语口语的脏字否定限定词,== fucking no,社会媒体口语的这个 sublanguage 我们倒是对付了,不妨试试。

biao:
你的机器怎么知道它是文言文,半文言文,还是白话文?他们都是中文。

我:
不在一个频道 算了

biao:
“工欲善其事,必先利其器”。这是文言文还是白话文?大量的成语是文言文还是白话文?金庸的小说是文言文还是白话文?四大名著,是文言文还是白话文?鲁迅的文章是文言文还是白话文?
这些都是在现实生活中大量遇到的语言素材。绕是绕不开的。

白:
高频小体量,适合死记硬背。文言文句法上并不比白话文更难处理,某种程度上还容易。文言文没有白话文里那种NP、VP串烧。有词类活用,但有规律可循。

我:
文言文长句 相对少。排比 平行用法普遍 也是形式痕迹。还有些非常固定的文言句式 用到特定的文言虚字 可以借力。等退休以后 玩玩文言文应该是一个不错 time killer。文言词汇量大大减小,字基本就是词,但每个字的用法 包括活用或引申用法 就多一些。

白:
关键看WSD一选出错率会不会增大?

我:
有不小比例的wsd,等价于pos,pos搞定 就搞定:老吾老。及物动词的“老”是一个活用义项,词典可以绑架为“尊崇”、“孝顺”之列,与作为形容词的“老(old)”的本义,以及作为名词的“老(the old,senior,parents)”都不同。
文言处理也少了切词错误的干扰 基本没可切之词。字驱动的路子,有很多字典工作可做

白:
有些歧义是简化字造成,之前古籍并无。比如后,简化之前就有这个字,就是皇后的意思。以后的后,之前是“後”。做pos也好wsd也好,要考虑文本的基准。

我:
所谓更多的活用,可以在字典假想如果处于某种活用,它义项是什么,然后绑架,倒也便利。另外,现代汉语对虚词的省略 似乎大于文言中虚字的省略,这也是文言处理的便利,虚字的频繁使用,给确定句子成分的边界创造了条件。

weidong:
娱乐一下:陈亢问于伯鱼曰子亦有异闻乎对曰未也尝独立鲤趋而过庭曰学诗乎对曰未也不学诗无以言鲤退而学诗他日又独立鲤趋而过庭曰学礼乎对曰未也不学礼无以立鲤退而学礼闻斯二者陈亢退而喜曰问一得三闻诗闻礼又闻君子之远其子也
标点断句先

我:
试了一下我的 parser,满篇都是 Next ;=)

weidong:
没有引号连话到哪儿结束都猜半天

我:
索性也试试前面要求的测试


其为人Next 也孝悌,而好犯上者 Next 鲜矣。

以前学美国之音英语900句,都说有900句,英语的基本句型就搞定了。这些年,我都 unit tested 近两万句了。是不是差不多该搞定了?最近翻阅以前内部论坛的帖子,有这么一贴,好玩:

池子里说说无妨,万一明年中文核弹爆了,你们可以作证立委就是钱学森。
作者: 立委 (*)
日期: 2012/04/18 23:13:13
不说的话,将来被代笔,说中文核弹不是我的作品 ,找个旁证都找不到。 

换句话说,各路身怀绝技的侠客剑法可能不同,但有个共识:就是我们面临技术核弹大爆炸的前夕。至于AI泡沫,那是商业上的炒作,技术的发展与成熟只是给了它一个炒作的话题而已。

 

【相关】

机器翻译万岁

【语义计算:没有语言学的计算语言学,NLP的亚健康现状】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【Parsing 的命根子是 subcat,逻辑的和语言的】

细说起来有两类句型分类:一类是逻辑上的,一类是语言上的。二者相互呼应,前者是内容(output 目标,也隐含了语义条件),后者是形式(input 的句法条件)。

逻辑上说,一个谓词需要几个 arguments,是由这个谓词的意义决定的,譬如 “哭/笑” 这样的谓词概念,需要一个施事 argument 来表达谁哭了笑了,所谓不及物谓词。

“爱/恨” 这样的谓词需要两个 arguments (所谓及物谓词),表达 谁 爱/恨 谁了。
“给/赠与” 这样的谓词,需要三个 arguments,表达 谁 把 什么 给 谁 了。
“认为/声明” 这样的谓词,需要两个 arguments,其中一个是实体,表达谁的认为/声明,第二个 argument 要求一个 statement (嵌套的谓词结构),表达认为/声明的内容。

这种逻辑上的谓词子类的区分是语言通用的,因为它的根基是概念及其意义的完整性(谓词加上arguments就是所谓的argument structure,表达的是一个 statement)。

逻辑工作方面的集大成者就是董老师的 HowNet。

以上的逻辑谓词子类表现在不同语言,就是语言学上的 verb subcategories 及其 patterns。到了语言这个层次,辞典中一个动词的动词句型子类可以标示以下的subcategorization 的信息(及物不及物只是其简化标识,vt/vi, 牛津词典曾经用20多个子类标注每个词条的subcat,v1,v2, ..v21,...):

1. 能带几个 arguments
2. 这些 arguments 要求处于什么形态(主格,宾格,要什么介词,处于什么位置)

词典中这种子类信息的标注直接决定了一个parser的质量,是非常关键的预示信息。对于学习英语,熟悉这些句型信息也非常有用。我以前教英语的时候,经常要求学生看牛津词典或者朗曼词典后面的句型附录(朗曼的分类略有不同,印象是分了30多子类),务必熟悉这些句型的概念,然后在翻阅词典时候注意其标注。 一个词经常分成n个义项,每个义项下的subcat分类标注往往不同,回去翻翻词典就看到了。

这后一步的工作,英语和中文我一直在做,n年了。董老师的中文系统目前也在做。只做不说的白老师或其团队也一定在做。subcat 是 quality parsing 的命根子。大家具体做法可能不同,但大而言之,还是差不多的。就是我们以前说的句法词典化。

 

【相关】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【一日一parsing:自然语言太难了吗?】

今天微博同仁圈子里盛传下面这个年末搞笑的帖子,标题是 #自然语言理解太难了#,其实一点不难,可见即便是圈子内人,如果没深入做过parsing,有时也被表象迷惑。

#自然语言理解太难了# 转发段子:今年基本已经结束了,我刚在群里问了很多朋友今年挣钱了没?大多朋友都有挣,而且挣得五花八门:有挣个屁的,有挣个锤子的,有挣个毛的,更有甚者挣个妹的,简直奢侈之极!最恐怖的是挣个鬼的!有的还可以,挣个球,下午我碰见一朋友,问今年挣了吗?他望着天空喃喃自语:挣个鸟!
看吧,只要肯努力,什么都能挣到[坏笑]

liu:
乐呵乐呵,语言理解很不易啊。

白:
真心不难
基本上可穷尽

liu:
“挣”后面的惯常搭配和选择限制反而简单?

我:
早已解决

liu:
但是,“挣一辆车”就是它本身的含义了。

我:
简单确定的pattern 有限的词汇可填充项 这是 pattern 的拿手好戏

liu:
这倒是的,它的“能产性”不高。

我:
如果训练 有可能漏掉低频率填充项 sparse data
但对于确定性的 patterns 规则可以一网打尽。

liu:
蕴含、推理方面的理解反而是重要的?

我:
一辆车 走通则
屁屎鸟、妹妈奶奶等 走特定规则
我们做社会媒体分析的 这类玩意儿早涵盖了

白:
“规则+例外”的总描述长度最短,就踩到点儿上了。高频用变量泛化,低频用实例枚举。

我:
parse results

图上只是显示这个结构被抓着了,没有显示系统“理解”这种用法的内部表达:实际上这个 chunk 抓住时,系统也就知道头词是动词“挣”,也知道这是一个口语化的动宾否定式,用了脏字,模式匹配规则“绑架”了这一切。

WD:
放个屁 长个毛 真歧义

白:
不是只针对这些话,是一般性的philosophy
这件事跟“挣”关联弱,跟“个”关联强。

WD:
鬼都挣不着
跟”什么女人“类似,有所谓元语否定用法
就是拒绝前一句话的陈述恰当性 负面评价功能
什么一流大学=什么破大学
甲:挣了不少吧。乙:挣什么屁钱啊,都……

我:
“屁”“鸟”之类 有一个英语 no 的用法,是汉语的np 否定式。一般认为汉语没有 否定限定词 no,其实汉语有 不过汉语的 no 混杂着 负面情绪 用的是脏字。而英语的 no 很单纯。
屁事儿: Nothing
没见屁人。在 “没” 后 脏字成了 any,避免double negative 吧,英语也有:
Ain't see nobody == didn't see anybody

从这个例子说开去:“v个P”,P={P,屁,头,鸟,吊,jiba,妹,鬼,......}
从类似的现象可以看到,小数据为依据的规则系统,有时候比大数据训练的系统,更为有效:更加精准,更加能对抗 sparse data 因此而提高 recall(具有 clear patterns 性质的语言现象,可以一网打尽,完全没有 sparse data 的困扰),模拟语言现象更加直接,因此也更加容易debug和维护。

在 IE 历史上,直到 MUC-7,当时表现最牛的 NE 系统 NetOwl 就是基于 pattern rules 的,几乎所有的统计对手都拿它作为拼杀的对象。NetOwl 从 SRA spinoff 出去想以 NE 为技术基础,进行商业运作,一开始在分类广告业拿下了一些业务,终究不能持续赚钱,后来被 SRA 收回,逐渐销声匿迹了。后来追随潮流,系统里面也混杂了机器学习的模块。https://www.netowl.com/our-story/

从此在学界就再也见不到规则系统了,哪怕是对于规则非常适用的某些 NE 任务:譬如 时间,数量结构,等。可见潮流之厉害。反潮流者不得食,发不了论文,拿不到 grants,带不了学生,自然自生自灭。

但事物的本质和本性并没有改变,尤其是对于自然语言中的具有 clear patterns 的现象,依据小数据,经过人脑的归纳,数据驱动去开发规则系统,仍然是如上述,具有高效高质量。工业界默默实行的这类人、团队和系统并不鲜见,只不过大家心知肚明,只做不说而已。犯不着顶风作案。相对应,发动群众去标注大数据,然后用大数据训练一个系统如何?这是主流的默认 honored 的方法。如果数据足够大,其质量的确可以接近或匹敌规则系统。当数据量不理想的时候,就捉襟见肘了: 或者 underkill (由于 sparse data,漏掉很多统计性稍弱的变体)伤害 recall,或者 overkill (smoothing 过度,把不该抓的现象抓进),影响了precision

什么叫有 clear pattern 的语言现象呢?举个例子,抓取邮政地址,这个工作我自己作为一个 fun 做过。出来的系统请邮局员工测试过,他们啧啧称奇。美国地址大体是 门牌 街道 城市 州 邮政编码 最后是 国名,patterns 相当地 clear ,可你可能无法想象上述 pattern 构件的变体之多,有些变体绝对是 long tails 再大的数据量也不可能涵盖其组合爆炸的本性。如果你收集了一个巨大的美国地址库作为训练集(大数据),你完全可以设计一个学习系统来做这件事儿。而另一边,虽然也是 data driven,但只需要小数据样本,然后经过人的大脑去举一反三进行开发。可以拍胸脯的是,后一种办法做出来的系统绝对是高质量易维护,天生地具有 sparse data 的免疫性。

 

自然语言的并列: preference semantics at its worst

NLU、NLP 多年来还有一个公认的难点,就是并列结构(conjoined structure)。并列在思维逻辑里没有地位,它是语言表达的产物。并列是语言学中最不讲道理的程咬金,它总是横插一刀,而且任性,在任一层次。一切的 subcat arg structures 或 mod-head patterns 都必须为它让道,否则就堵塞交通,让 parsing 的路线断链。然而,如果没有并列,自然语言就会难以容忍地单调枯燥,尽失精简。

举个简单例子:

1027a

这句话逻辑上展开以后怎么样呢?

颈椎间盘突出症的最常见和最典型表现是一侧颈肩部及上肢的酸痛
==>
颈椎间盘突出症的最常见表现是一侧颈肩部的酸痛
颈椎间盘突出症的最典型表现是一侧颈肩部的酸痛
颈椎间盘突出症的最常见表现是上肢的酸痛
颈椎间盘突出症的最典型表现是上肢的酸痛

这才牵涉两个并列,一个句子出现五六个甚至上十个并列, 并不鲜见。语言不是逻辑。没有并列,语言面临组合爆炸式啰嗦。很难想象,传统的单层 parsing 系统,譬如教科书上经典的乔姆斯基式 CFG-based chart parsing,可以把各种并列处理妥帖。

Conjoin can be so f* hierarchical, even for a very deep, multi-level parsing system: conjoin remains a challenge if not very carefully/skillfully handled by a very experienced linguist 'cause the boundaries are tough to identify and they just appear at any levels at will.  The conjoined elements are semantically parallel but the parallelness, which ideally should be used as conditions to help identify the conjoined structure and its scope, is unfortunately in practice all relative and fuzzy, which can hardly be enforced. food can be conjoined with food, of course, but look at this:

我喜欢肥肉和哲学。

food and knowledge, totally different monsters of semantics, can also be conjoined, it is preference semantics at its worst.

OK, I am not going to elaborate on solutions, which should be a long article by itself.  This post serves as an introduction of this linguistic monster, to arouse the awareness of linguistic challenges in natural language parsing.

 

【相关】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【立委科普:如何自动区分同一批词表达的不同意义?】

这是上一篇自然语言理解(NLU)博客【如何自动识别同一个意思千变万化的表达】的姐妹篇。看上去似乎是同一个语言理解问题的两面,但实际上这个问题在自然语言领域的产生,很大程度上是因为一袋子词(bag of words)方法的流行引发的。此话怎讲?

本来,同一批词表达不同的意义是自然语言作为人类表达手段的题中应有之意。举个简单至极的例子:张三,李四,爱。是张三爱李四呢,还是李四爱张三呢?同一批词显然可以表达不同的意思。再如,用 “好”、“喝”、“酒” 造句,结果发现六种排列组合都是地道的汉语,表达了不同的意义:

好喝酒: love drinking alcohol
好酒喝: good alcohol to drink
酒好喝: the alcohol tastes good for drcinking
酒喝好: drink your alcohol to your satisfaction
喝好酒: drink good alcohol
喝酒好: drinking alcohol is good

好 (good/love/verymuch)、喝酒(分离词),两个词,三个字,四个义项,各种纠缠,不同语义。

大而言之,人类语言的词汇是相当有限的,表达日常用语99%+ 的词汇不过在万这个量级,而利用这些词来表达的不同意义是无限的。这种有限材料表达无限语义的本事就是所谓语言能力,这种能力的核心机制早已不再是谜,就是大大小小的文法(grammar)规则。自然语言深度分析(deep parsing)和理解,乃是利用词汇和文法去解析(decoding)语句的语义,区分不同意义蕴含在语义解析之内。主流机器学习的路线与传统的符号逻辑路线(又叫规则路线)的不同之处在于对词汇和文法资源的利用不同。前者最流行的一袋子词的模型利用了词汇,其对文法规则的模拟靠的则是粗鄙简陋的ngram近似(譬如,bigram 的“I love” 间接反映了主谓规则,“love you”则模型了动宾规则)。正因为主流的近似方法对于语言结构的模型太过粗鄙简陋,这才导致了不少主流系统难以区分“同一批词表达的不同意义”,这是所有一袋子词为基础的模型的命门。而这个问题在符号逻辑路线的 deep parsing 这边,从一开始就是直接的目标,一切 deep parsing 规则的建立都是直接模型人的语言理解过程。换句话说,主流的一袋子词技术虽然可以对文本的粗线条分类有效果,但面对同一批词的不同意义却容易捉襟见肘。而传统的规则路线利用 deep parsing,在这个问题面前显示了核弹般的威力。

好,我们撇开没有语言结构的一袋子词模型来看这事儿,问题于是简化为自然语言的经典问题:如何自动消歧?在讨论自然语言歧义的时候,我们总是预设的是同一批词或同一个词(某些消歧在中国老一辈NLPers,我的导师辈中因此也叫“同形区分”),因为不同词及其组合的意义不同是天然的,没有消歧的问题。

消歧的话题以前陆续谈过很多,大体的要点总结如下:

1.  同一种表达可能产生歧义是自然语言区别于计算机语言的重要特点,也是自然语言分析理解的难点所在。

2. 自然语言歧义一般分为两大类,所谓表达的多义就是这两类歧义的交织。一类是用词的多义(WSD,word sense disambiguation),一类是结构歧义(典型的结构歧义包括所谓 PP-attachement,譬如英语文句中的宾语后面的介词短语既可能是宾语的定语,也可能是谓语的状语)。

3. 结构歧义不难识别(identify),但消歧却不易,有时需要动用语言外知识,包括常识等。

4. 比较成熟的结构歧义的应对方法包括:(i)parser 通过 enriched subcat 的手段, 把某些关键的常识及其ontology暗度陈仓引进,在parsing过程中消歧; (ii)parser 只识别歧义,输出非限定性结构(non-deterministic structures),消歧留待语义中间件模块,甚或等到领域的语义落地模块再进行(很多时候这个消歧任务自行消解,没必要进行,因为歧义空间不在语义落地的聚焦雷达上);(iii)parser 采取默认路径,歧义的可能先行休眠,让词驱动的encoding埋下种子,等到后面的模块在一定的条件下唤醒。

5. 词汇消歧 WSD 是 NLU 的一个难点,但好在它总体上不影响 parsing,建议不在 parsing 和语义中间件时期做,可以留到语义落地的阶段,这样处理的好处是绝大多数 WSD 都不需要做功,因为他们不在语义落地的聚焦雷达上。

6. 留在聚焦雷达上的 WSD 任务,往往可以与语义落地手段融合起来同时解决,这个 practice 至少对信息抽取的语义落地有效。

累了,也差不多扯完了。年底了,觉得有文债似的,自己跟自己过不去,赶着跑着写这些劳什子,既充不了论文,也评不了教授。人真是奇怪的动物,骨子里都有雷锋的基因。Happy reading,不枉我辛苦码字。

 

【相关】

【立委科普:如何自动识别同一个意思千变万化的表达?】

《泥沙龙笔记:parsing 的休眠反悔机制》 

【立委科普:歧义parsing的休眠唤醒机制初探】 

立委科普:歧义parsing的休眠唤醒机制再探

泥沙龙笔记:NLP hard 的歧义突破

【立委科普:NLP核武器的奥秘】

【立委科普:语法结构树之美】

【立委科普:语法结构树之美(之二)】

NLP 迷思之四:词义消歧(WSD)是NLP应用的瓶颈

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【立委科普:如何自动识别同一个意思千变万化的表达?】

自然语言理解(NLU)的很多应用需要找到解答下列问题的算法:如何自动识别同一个意思千变万化的表达?譬如,问答系统或自然语言的任何人机接口,第一个问题就是如何理解不同用户千变万化的问题,以便从某个库里检索出合适的答案来。主流流行的做法仍然是绕过结构和理解,根据关键词、ngram以及 some word expansion,建立一个模型来计算不同问句的相似度。这种显然是偏离人类理解,最多可算是近似的做法被认为是理所当然,甚或唯一的算法,因为符号逻辑和语言规则那一套貌似模拟人类理解语言的做法早已从学界退出了历史舞台:学习界要竞争连对手都没有,只能自己跟自己玩。

以我骨灰级计算语言学家的身份,本篇就来专门谈谈这个问题的符号逻辑。都说语言学家迂腐得可以,云山雾罩,对牛弹琴。不信这个邪,你就是工程或学习的大牛,今儿个我也要把语言学的琴给你弹明白,不明白不收钱。(当然,明白了也没打算收钱。有心给小费的话,请转而打赏给任何公益项目为荷。)

我们把上述问题分解如下,更复杂的 cases 大多是这些部件的不同组合而已。

(1) 同一个意思的不同表达主要体现在用词的不同上,例如:

我没钱。
我很穷。
我买不起。
我就是个屌丝。
我银子不够。
我手头很紧。

(2)同一个意思的不同表达主要体现在结构的不同上,例如:

我没有那么多钱
钱我没有那么多
我钱没有那么多

同一个意思的不同表达所用的词不同结构也不同也是有的,那不过是上述两种情形的交织而已。任它千变万化,所牵涉到的变量是可以映射的。以上述场景为例,变量是:【human】【lack】【money】。其底层结构是:【lack】(【human】,【money】)。词典级的映射是:

【money】:钱,银子,美钞,RMB,¥,$ ......
【lack】:缺乏,没有,缺少,不够
【human】:我,你,他,人,.....
【lack】(,【money】):穷,穷酸,买不起,手头+紧,......
【lack】(“人”,【money】):屌丝

以底层结构为起点反推(乔姆斯基所谓生成),以上面的词典信息为驱动,加上一些简单的句法约束,包括容忍 optional 的随机成分(譬如加入程度“很”或强调“的确”,时态“已”等等),符号逻辑可以用计算文法(computational grammar)一网打尽语言的不同用词或结构的千变万化,不是清晰可见了吗?

一网打尽的前提是起点是一个定义明确的 logical statement,如果起点不确定,我们面对的是语言海洋,那就不好说了。因此,我一直跟人说,对于领域的问答系统,譬如,起点是 Q&A 的档案或者起点是一个 app 的可能的 commands,利用符号逻辑的自然语言理解技术,建造一个几乎一网打尽的自然语言接口,是完全靠谱,可以拍胸脯的事儿。

这里面的原理就在语言海洋的千变万化被聚焦了(据说深度学习也有了类似的时髦概念 叫 attention,在 IE 领域,这个概念已经有 20 多年的历史了,IE 本身就是 NLU 的聚焦)。聚焦以后仍然有很多变式,让人眼花缭乱的不同说法,但是这些变化逃不过如来佛的手掌。聚焦的最大特点是 vocabulary 急剧浓缩,加上语言学文法的约束(此篇省略其细节,明眼人自可想象,这绝对是 tractable 的任务),貌似的千变万化于是被一张无形的符号逻辑网罩住。

顺便一提:很喜欢张学友一首歌,叫【一张无边无际的网】,说的是情网,用来代表文法也很贴切。文法就是NL的无边无际的网。我们做计算文法的人 为什么乐此不疲,因为是在编织这张无边无际的网。尽管如此,仍然需要语义聚焦,才好最佳落地。

 

【相关】

立委科普:问答系统的前生今世

【deep parsing,deep learning 以及在对话和问答系统中的应用】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

 

【语义计算沙龙:坐而论道 on 中文 parsing】

董:
刺死前妻男友男子获刑5年 死者系酒醉持刀上门 -- 百度新闻
Stabbed her boyfriend man jailed for 5 years, the drunken knife door --百度翻译
Stabbed his ex-boyfriend boyfriend was sentenced to death for 5 years the Department of drunken knife door -- 谷歌翻译
不知道这样结果是什么智能? -- 人工?鬼工?骗工?

白:
也是醉了

董:
我主要是要探讨“连动”--酒醉,持刀,上门。这三个动词在知网词典里都是有的。 酒醉 -- {dizzy|昏迷:cause={drink|喝:patient={drinks|饮品:{addict|嗜好:patient={~}}}}}
持刀 -- {hold|拿:aspect={Vgoingon|进展},patient={tool|用具:{cut|切削:instrument={~}},{split|破开:instrument={~}}}}
上门 -- {visit|看望}
酒醉的上位可达:“状态”;持刀的上位可达“行动”,但它与“拿”不同,它是“拿着”,所以定义描述里多了“aspect=Vgoningon”;最后是“上门” 它是“行动”。于是我试下面的规则:
DefineVP1 0712 CN[*pos==`verb`,*def_h=={act|行动},*syl==`2`];L1[*pos==`verb`,*def_h=={act|行动},*def_s==`aspect={Vgoingon|进展}`,*syl==`2`]$L1[*log==`preceding`]@chunk(CN,L1)# // 酒醉持刀上门;
DefineVP1 0722 CN[*pos==`verb`,*def_h=={act|行动},*syl==`2`];L1[*pos==`verb`,*def_h=={state|状态},*syl==`2`]$L1[*log==`preceding`]@chunk(CN,L1)# // 酒醉持刀上门;
心里还是不踏实,因为没有大数据的支持。想听你们的意见。其他例子如:骑车上街买菜遇到一个老同学;

白:
直观感觉,状态的标签不是太好贴。比如,拿着刀子砍人,拿着是状态;抡起斧子砍人,抡起就不是状态?隔着玻璃射击,隔着是状态;打开窗户通风,打开算不算状态 ?
买菜和遇到老同学,谁是前景,谁是背景?谁是主线谁是旁岔,很难说。像伟哥这样一律next最省事。
打开保险射击,打开保险就不是状态

我:
伟哥于是成为懒汉的同义语 。工业界呆久了 想不懒都不成。我曾经多么勤勉地一条道走到黑啊。Next 的好处是拖延决策 或者无需决策。可以拖延到语义中间件,有时也可以一直拖延到语义落地。更多的时候 拖延到不了了之 这就是无需决策的情形。

白:
董老师说的就是语义落地啊。花五毛钱打酱油,花五毛钱打醋。花五毛钱该贴啥标签?
要不是语义落地谁费这事儿。

我:
花 money vp
这个是 subcat 可以预测的模式。凡是subcat可明确预测的句型 通常都不是事儿。给标签于是成为 system internal 的内部协调。

白:
关键是不知道该有多少标签,如何通过粒度筛选、领域筛选、时空背景筛选,快速拿到最有用的标签。

我:
通常的给法是:money 是 o (object),vp 是 c (complement),这是句法。
句法之上这几个节点如何标签逻辑语义 也可以由 subcat 输出端强行给定。譬如 可以给 vp 一个【结果】的标签,vp 是 “花钱” 的结果。
subcat 的实质就是定义输入端的线性模式匹配 并 指明如何 map 到输出端的句法和逻辑语义的结构。这种词典化的subcat驱动简化了分析算法 而且包容了语义甚至常识。

董:
我是因为首先要解决句法关系引起的。例如:欢迎参观;争取投资,就是VO关系,而不是参观游览。也就是说,两个或更多的动词连着时,如何排除歧义?试着只给两个标签:动宾、连动。

我:
一般而言 动宾 是动决定的,连动可以是第一个动决定, 也可以是随机的组合。后者有一个与conjoin区分的问题。
“欢迎” 在词典subcat 中决定了可以带 “参观” 这样的宾语,就事论事 这个“欢迎-参观”的关系几乎是强搭配,与 “洗-澡” 类似。
连动也有词典 subcat 决定的,譬如 “去” vp,“驱车” vp,“出门” vp。
词典决定的东西 没有排除歧义的问题 就是词典绑架 通过 subcat。只有随机组合才有歧义区分的问题。而动宾的本质是不随机,原则上不存在歧义 一律是强盗逻辑 本质就是记忆。可以假设 人的动宾关系是死记在词典预测(expectation)里的,预测实现了 动宾就构建了 这符合 arg structure 的词典主义原则。

董:
负责挖坑,负责浇水,负责填土。。。动宾关系;

我:
负责 vp
为 vp 负责
后者是变式

董:
这么看来,动宾还是连动还是修饰(限定),都由词典解决了。统统做进词典里,就可以了。明白了。

我:
词典主义。随机度太大的组合比较难做进词典。所以一方面尽量做进词典,另一方面 来几条非词典化的规则 兜个底。
随机性而言 似乎 修饰大于连动 连动大于动宾。

白:
如果只有这三个标签,当然做进词典是首选,就怕落地时要的不止这三个。

董:
33724688194454877

这是我刚才试的一个句子。我们为每个节点预留10个子节点。动词与动词也得包括这些。

我:
进不进词典 主要不是有几个标签 而是这个标签的性质。
语言学的理论比较文科,说的东西有些模糊,但大体还是有影子的。
语言学理论中一个最基本的概念区分就是 complement vs adjunct,这是句法的术语,对应到较深的层面 就是 argument vs modifier。一般而言,arguments or complements 都是词典的主导词可以 subcat 预测的。HowNet 从语义层面对 args 已经做了预测。语言学词典(譬如英语的计算词典,汉语的计算词典等)就是要相应地从具体语言的句法表达方式的角度把 subcat 预测的 complements 定义出来。至于 modifier 和 adjuncts,他们的组合性随机,词典就难以尽收。最典型的就是普世的时间地点状语等。世界上的所有事件都是在时间和地点中进行。

白:
跑步去公园,去公园跑步。前者去公园的路上都在跑步,两个事件在时间上重合;后者只有到了公园才开始跑步,在时间上只是先后衔接。
如果语义落地需要对此作出区分,该有什么标签?怎么词典化?
动词为其他动词挖坑的情况都不难处理,难的是压根儿没有标配的坑。这是从ontology的事件根结点继承下来的。

我:
跑步去公园,去公园跑步。
先说第二句:【去 + NP + VP】 这是可以词典预测的,万一预测不准,可以 fine-tune 条件,譬如:【去 + 地点 + 动作】,总之是词典预测的。既然词典预测了,那么该给什么标签就不是问题了。给什么都可以,要什么给什么。
再看第一句:跑步去公园。
去公园 不是问题 这是一个动宾 VP 是词典预测的:【去 + NP】 或 【去 + 地点】。
问题于是就成为 “跑步” 与 VP(人类动作)之间的关系。 这种关系在哪里处理,词典可以不可以预测?

白:
吃口饭去单位,又是接续关系不是重叠关系了

我:
这个的确有些 tricky 但不是无迹可寻。

白:
跑会儿步去公园,也是接续关系了。

我:
偷懒的办法就是有一条非辞典化的模糊的规则 Next 连接二者。
费劲的办法也有:一个是 “跑步去” 词典化 作为“去”的变体,“跑步”是对“去”的方式限定。

白:
现在的问题是,句法上承认next,语义上细化next

我:
另一个词典化的做法是,在“跑步”词条下,预测 movement 的动词 VP, 【去NP】 、【来NP】 、【到达NP】 等等 都符合条件,可以跟在“跑步”后面。

白:
为啥跑步加了时态,限定就失效?

我:
这个预测的subcat里面的句法规定是:
1. 本词不许有显性时态,不许分离;
2. 后面的 VP 必须是 movement;
3. 输出端:本词作为后一个 VP 的限定方式(句法叫方式状语:adverbial of manner)。
Binggo!
至于为啥?这个问题,系统可以不回答,系统可以是数据驱动的。
系统背后的语言学家可以一直为了 “为啥” 去争论下去,系统不必听见。总之是让 “跑会儿步去公园” 不能在此预测pattern中实现。词典化实现不了,那就只好找兜底的规则了,于是 Next 了。【限定】与【接续】的区别由此实现。前者是词典强盗,后者是句法标配。

白:
在词典之外搞几个标签模版也不难,句法上都对着next,只不过依据前后subcat细化了,这有多困难,而且清爽。

我:
亦无不可。差不多是一回事儿。一碗豆腐,豆腐一碗,就是先扣条件还是后补条件的区别而已。无论前后,总之是要用到词典信息,细线条的词典信息。

白:
看上去不那么流氓

我:
先耍流氓【注1】,还是先门当户对,是两个策略。
很多年前跟刘倬老师做专家词典。他是老一代无产阶级革命家,谆谆教导的是不能耍流氓,要门当户对,理想一致了才能结合成为革命伴侣。后来到了美国闹革命,开始转变策略,总是先耍了流氓再重新做人。其实都是有道理的。

白:
@董 跑步和上班是先后关系,跑步和去是同时关系。

董:
这句分析后,有两个“preceding”,不符合我们理想的结果。我们要的是“跑步”是“去上班”的manner 才好。因为我们要准备用户提出更多的信息要求。例如:系统要告诉用户,我平时是HOW去上班的。

我:
刘老师做系统是在科学院殿堂里面,可以数年磨一剑,we can afford to 不耍流氓。来美国闹革命拿的是风投的钱,恨不能你明天就造出语言理解机器人出来,鞭子在上,不耍流氓出不了活。形势比人强,不养童养媳成不了亲,不抓壮丁打不了仗,于是先霸王,然后有闲再甄别。

董:
是的,我们现在连科学院殿堂都不是,而是家庭作坊,可以慢慢磨。其实已经磨了20多年了。

我:
我还记得当年我们为了一个不足100句的英语sample,翻来覆去磨剑磨了两三年,反复地磨平台、磨算法和磨规则。当时的董老师已经大数据(现在看也不是大数据了)开放集测试“科研一号”【注:中国MT划时代的第一款工业产品“译星”的前身】了。

董:
我们给我们的现在开发的中文分析的目标是:看看能最大限度地挖掘出多少信息。

我:
董老师20年磨出的 HowNet 打下了语言分析的牢固基础。现在是把普世的 HowNet 细化为具体语言的句法规定。路线上是一脉相承的。换个角度看,董老师在 HowNet 中已经把普世的 Subcat 的输出端统一定义了,现在是要反过来再进一步去定义具体语言的句法表达形式,也就是输入端的pattern和条件,然后把二者的映射关系搭上,大功即告成。先深层结构 和 UG,然后回过头来应对每个语言的鸡零狗碎的形式。

董:
这倒是的,我们这个中文系统还没到半年,就有点模样了。词典22万义项,规则近4000条。当然,要真正交给用户,那还有一段磨的。

我:
蛮 impressive。我们开发四年多了,但绝对没有 8x 的规则量。

董:
这回我们不做中英翻译,因为英语生成我们做不起,又没有大数据的。其实做出来也只是给别人添砖加瓦,多一个陪着玩的。这种事情我们不玩的。

我:
对,MT 从大面上就拱手相让吧,数据为王。 符号逻辑和规则路线现在的切入点就是应对数据不足的情境:其实数据不足比人们想象的要严重得多,领域、文体等等,大数据人工标注根本玩不起。不带标的 raw 数据哪里都不缺 但那比垃圾也好不了多少。

宋:
"中国对蒙出口产品开始加征费用"

白:
这个哪里特殊?

宋:
中国对(蒙出口产品)开始加征费用, (中国对蒙)出口产品开始加征费用

白:
进口出口,应该站在自己立场吧

宋:
出口是自己的立场,但也有两种解读:蒙古出口,中国对蒙古出口。我一开始理解为后者,看了内容才知道是前者。

我:
这个 tricky,在争抢同一个介词“对”:对 np 征税;对 n 出口。
远距离赢。

白:
常识是保护自己一方的出口,限制非自己一方的进口

我:
远距离原则有逻辑 scope 的根据。但是具体看 很难说 因为汉语的介词常常省略。scope 的起点用零形式 并不鲜见。
“对阔人征税” 可以减省为 “阔人征税”;“对牛肉征税” 可以简化为 “牛肉征税”。但 “对蒙古出口”,不可简化为 “蒙古出口”。本来也可以简化的,但赶上了 “出口” ,逻辑主语相谐。“牛肉” 与 “征税” 没有这种逻辑主谓的可能,于是“对”可省 而NP的逻辑语义不变。

白:
势均力敌时,常识是关键一票

宋:
这个例子在我所看到的语境下是远距离赢,在别的语境下则不一定。因此,分析器是否应当给出两个结果,然后在进一步的处理中再筛选?

我:
给两个结果 原则上没难度,但后去还是麻烦。

白:
其实关键是什么时候定结果,几个倒在其次

我:
"中国对蒙出口产品开始被加征费用"

加了一个 被 字 哈哈 可能是蒙古对中国的反制。

白:
两个对,有一个和被不兼容

【注1】所谓parsing耍流氓,指的是在邻近的短语之间,虽然他们之间句法语义关系的条件和性质尚不清晰,parser 先行把他们勾搭上,给个 Next 或 Topic 之类的虚标签,类似未婚同居,后去或确认具体关系,明媒正娶,或红杏出墙,另攀高枝,或划清界限,分手拉倒。

 

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录