《李白宋115:句法的脑补,情报的冤家(1/2)》

立委按:cs(common sense):句法的脑补,情报的冤家,是为常识。常识语义在语言理解中的作用,一直是AI符号派的重要话题。常识看上去漫无边际,如何形式化有效利用,也一直是个挑战。沙龙讨论的是轻量级或碎片化的常识语义的可行性与实践体会。具体说来有两方面,一是所谓语义相谐反映的常识条件在语言解析中的作用(譬如,EAT谓词概念 与 FOOD类实体的相谐度高),二是所谓“事理”图谱(譬如,“面试”与“录用”之间的因果关系),反映的是某种常识推理。有意思的是,语义落地所强调的情报性有与常识相逆的特性。俗话说,狗咬人不是新闻,人咬狗才是。

白:“他给张三倒洗脚水”、“他向张三泼洗脚水”,在两句中,“洗脚水”各是谁的?“他给张三拿银子”有歧义,一是他帮张三拿张三的银子,二是他拿自己的银子给张三。介词宾语和主语,什么条件下谁来跟宾语发生领属关系?有钱出钱,拿的是自己的钱;有力出力,拿(拎?背?揣?端?抱?抗?)的是别人的钱。

“他给张三写自传”,自然是张三的自传;“他给张三送自传”有歧义,可能是赠送“他”的自传给张三,也可能是给张三跑腿,把张三的自传送给其他人。赠送义本身有间接宾语,但“给”的介词宾语未必与之重合。因为出现了一个“帮办”角色。主语是帮办,主执行;介词宾语是事主,主名分。帮办做动作,名分归事主。间接宾语角色和事主角色造成歧义。

“张三给李四带口信”有三重歧义。张三委托别人把口信带给李四vs别人委托张三把口信带给李四vs李四的口信委托张三带给别人。这里的角色有:事主、帮办、直接宾语、间接宾语,口信是直接宾语,李四不能是帮办、张三不能是间接宾语。剩下的组合构成上述三重歧义。“向”引入的介词宾语坑,在动词不具有间接宾语坑时(如“吐痰”、“泼水”)临时客串间接宾语角色。在动词带间接宾语坑时(如“投掷”、“赠送”),二者共享一个萝卜。没有事主帮办之分。临时客串的情况下,介词宾语和直接宾语没有领属关系。“为”引入的介词宾语又是另一番景象:它是直接宾语的当然领属者。“为他人做嫁衣裳”不管是谁做,穿的一定是“他人”。

“在公园爬树”,“树”是“公园”的附属物,勉强说得上领属关系。“在公园打人”,“人”是不是“公园”的附属物,难说。“张三在公园放风筝”,“风筝”不仅不是“公园”所有,反而大概率是“张三”所有。所以,介词为“在”时,领属关系似可不作标记。真要追究时,靠事理来弄。没有坑的直接宾语,随他去。有坑的,看相谐性或者大数据。“张三在这个公园有月票,每天早上都来锻炼身体。”“月票”的坑就由“公园”来填。

“他给张三买了块巧克力吃”,是“张三”吃,不是“他”吃。“给”的介词宾语置换出来,在谓词群里面横扫千军。在有接续动词的情况下,“帮办”角色自动消失了!

“他给张三送了本自传看。”没歧义了,是“他”的自传而非“张三”的自传,“他”不是帮办“张三”也不是事主。世界清静了。真神奇啊。“他给张三挖了个坑”有微弱歧义;“他给张三挖了个坑跳”一点歧义没有。

汉语的介词,S+/N,禁止名词右填坑;日语的格助词,S+/N,禁止名词右填坑。英语N向S左填坑只限一次,再多的名词只能受动词短语降格修饰,汉语的N向S左填坑则不受这个限制,所以逻辑主语话题主语大小主语一堆堆。方向性对于加速获得正解还是很必要的。汉语的个别词,如“以前”,是反过来的,S+/X,但是X坑只能从左侧填,禁止从右侧填。从CG走来,先把填坑的方向性全部放开,再选择性地关闭其中个别词的个别方向。特别是,语种选择可以批量设置关闭方向。修饰的方向性基本不放开。头尾修饰是否有副作用,还不清楚。

宋:@白硕 在你的系统中如果一句话内的词相同,词序不同,是不是分析结果相同?

白:@宋柔 不一定,看具体配置,特别是词性标注不同会不一样。比如:张三比李四高,李四比张三高,一定是不同的parse。

谁填“高”的坑,谁填“比”的坑,都是不同的,当然是不同的分析结果。

酱油李四打了,李四酱油打了。这俩,分析结果的拓扑一样,内在语义角色的指派也一样。毕竟酱油不能打李四。

后面四个的分析结果,拓扑结构是一样的。它们当中,1-2的语义角色指派是不确定的,3-4的语义角色指派是确定的。如果有更强的上下文,1-2的语义角色指派会随之更为确定一些。这个机制,在句内的已经部分实现,跨句的还没有实现。

宋:猫抓老鼠和老鼠抓猫,分析结果一样吗?

白:拓扑一样,语义角色指派不一样。看图看不出本质差别。

鸡不吃了,在图上是没有歧义的。

宋:猫抓老鼠和老鼠抓猫,施事都是猫,受事都是老鼠?

白:不是的。能说的是:猫和老鼠,相对于抓,都是“填坑”关系,而且填了不同的坑。谁填了哪一个,句法不予确定。语义角色指派可以根据语序推定,但只限于一左一右这种。两个都在一边就无法推定。图上不标施事和受事。现在图上能看到的是LMa、RMa等。不负载施事受事等语义标签信息。

在双宾语的情况,某些江南方言里有时听到“我给钱你”这样的句式。直接宾语和间接宾语倒挂,而且不加介词。二者一人一非人的场景,是可以搞对的。二者皆人,我还没听到例子(不知道“我嫁女儿你”能说否),但真要区分角色的话,可能需要用到事理了。

宋:也就是说,对于二价动词V来说,N1 N2 V中,N1和N2各填V的那个坑,要看N1和N2与V的语义相谐性;N1 V N2,还是要看语序来决定谁填那个坑。对吗?

白:都相谐再看语序。

如果都在一边,语序也不起作用:“猫老鼠抓了”“老鼠猫抓了”,这时还要请出事理啊大数据啊更大上下文啊什么的。

宋:明白了。

李:都相谐再看语序?

svo 语序 为啥要看相谐呢?

“是乌云吃了月亮 还是月亮吃了乌云?”

白:都不相谐也回到语序。

李:“做了个梦好怪 一张烙饼吃下了一窝兔子”。

白:相信说话者别有用心,或者相信一切皆可为专名,都是出路。有强语境做免死金牌的,更可以回到语序。

李:还可以这么说话:

“一个实体x了另一个实体”。

“x 被律师打黑了”。

白:见怪可以不怪,那还相谐个啥。说都不会话了。提着火车上皮包。小孩说话慢慢教,哪有一井挖个锹。

李:问题是 先相谐 然后看语序 次序感觉不对。

“月亮吃乌云” 是都不谐,“烙饼吃兔子” 是谐与语序矛盾, svo 语序是决定性的,相谐是非决定性的。决定性的句法形式 决定了就完了。形式留下空间 才有相谐出场的必要。

白:“草把兔子吃肥了”。“烙饼把兔子吃噎着了”。完不了。句法形式到了汉语,语序变轻了。

李:语序是句法形式 相谐是语义约束。“烙饼把兔子吃噎着了”,不是句法的反例。语序 小词 都是形式,它们留下空间 才有语义约束的可能性。硬指标以后 才看软指标。显性形式没辙了 才求隐形形式 包括常识语义。

白:还有容错一说吧。“拎着火车上皮包”,就是被容错了。韵律感越好,越容错,乃至无感。反过来搭,和不搭,是不同的处理。反过来搭,容错占主导;不搭,句法占主导。句法一主导,然后就进入疯狂的脑补,拼命找辙。

顺杆儿爬,顺杆儿滑,隐喻,夸张,甚至怪诞的专名,都可以有。此外,局部有伪歧义的情况,不搭是最先要排除的。比如“馒头吃光了”。标准svo啊,但是不work。除非拿到怪诞大比拼的免死金牌。

宋:老鼠抓猫,老鼠一定是施事,猫一定是受事,因此,此时的“抓”不会是“抓捕”。而应该是“抓挠”。语序决定了施动受关系,进而决定了动词的语义。

白:这是事理。恰好“抓”有一个义项符合事理。

宋:如果有更大的语境提示是童话故事,或者发生基因变化,“抓”可以是“抓捕”的意思,但仍然老鼠是施事,猫是受事。

白:当你在处理一个局部的sov时,并不知道其他义项是否会组成更搭的合语法结构,所以对局部不搭的sov而言,是否一定会出头,不是局部能确定的,还要看别人。

“老鼠抓不抓猫都吃得好好的。”

“老鼠一抓到猫就可以睡大觉了。”

“老鼠一抓到猫就可以美餐一顿了。”

“猫一抓到老鼠就可以美餐一顿了”。

一个意思。局部要不要搞成不搭的svo,取决于全局。

宋:好例!

白:所以svo不是教条,只是一种可能性。放大看,svo要不要还两说呢……

宋:“老鼠一抓到猫就大祸临头了。”

白:不搭给这种可能性减分,但也不断其生路。外围有更好的组合,svo又算个啥,该扔就扔。外围没有更好的组合,svo就勉为其难吧。但是,组合好不好,一定是句法语义通盘考量的,哪有句法一定优先于语义一说。

“老鼠一抓到猫就大祸临头了。” 有歧义,充分脑补吧。老鼠居然抓到了猫,这世界该翻了天了,大祸临头。猫抓到了老鼠,去掉了主人的心病,主人也该卸磨杀驴了吧,大祸临头。猫给老鼠抓到只是猫的计策,老鼠大祸临头了。接下来玩死你。

事理可以作用于伪歧义的消除,但是对真歧义,事理也毫无办法。猫大祸临头,老鼠大祸临头,看客大祸临头,都有相应的解读。svo作为一个局部,你根本不知道外面有什么时,根本不敢把赌注押在句法上。

李:T1 svo T2,就够了。绝大多数情况不需要语义出场。trigram 是句法 5-gram 也是句法 都还在可控范围之内。以前说过 任何在(dynamic) 5-gram 之内可以搞定的事情 都是 tractable 的。虽然理论上永远可以找到反例,但是随着 n-gram 中 n 的扩大 (up to 5),随着 gram 的定义由 literal 延伸到包括 token features,以及随着 gram 从 word 延伸到动态的句素(包括各类短语),句法兜不住的伪歧义反例急剧减少 — 直到句法发现真歧义。这时候 语义(主要是常识)约束、语用约束、领域约束等等 可以逐步出场,或不出场(保持歧义,或包容歧义)。

“传统” parser 为伪歧义困扰的事情 已经是过去的故事了。“现代”的句法基本上摆脱了伪歧义的羁绊 因为细线条 词汇主义路线 以及多层动态的 parsing。

白:五元组判定过程中用不用语义?用不用相谐性?如果用,那岂不是说相谐性判断先于svo?如果不用,伪歧义怎么弄掉的?单凭句法?就是说,T1、s、v、o、T2,各自携带了一些特征,用于五元组来判断svo要不要归约为s。这些特征包不包括语义/本体特征?动用这些特征是不是先于svo结构被确定?

不妨就试试 “老鼠一抓到猫就可以美餐一顿了”。看看“一”和“就”的辖域分界线是怎么确定的。实际上就四元组。左侧空缺。右侧再饶一个,又怎样?

“酱油打了李四也该回去交差了。”

到底是把“酱油”理解成一个人的外号,还是放弃svo转投ov(s)?哪一个是符合奥卡姆剃刀原则的?

如果上下文介绍李四是杀手,目标是张三,“张三杀了李四也该回去交差了”是不是应该放弃svo?这个上下文是五元组能cover的?事理:x完成任务—>x交差,任务从上文取得。

李:以反例批评一个一般性策略 其结果就是所有的过程性都是跛脚的 所有的因素都必须同时起作用。

白:有更好的系统性策略,而且并不跛脚。就是加分减分而已。看得分是一个统一的策略。硬约束有一个高的基准分。软约束不把它拉下来他往前走就是,拉下来就别怪谁了。

李:(较)软性约束与(较)硬性约束不同步 是一个总体有利的策略。

白:同不同步只是一个计算策略问题。晚几步发现问题还是早几步发现问题的事儿。只要有问题,拉下来则是必须的。就看付出的代价是什么了。另外的选择也虎视眈眈呢。一遇到合适的软约束,马上张口咬人。以现在的算力,神经网络那么大的冗余都不在话下,几个相谐性检查算什么。更何况毕竟都在线速的范围内。只要不破坏现场,总有翻盘机会。你走你的,但别杀死别人。

李:理论上 一个 l 长度的句子 在 l 没有全覆盖之前,任何 n-gram ( n < l )  的模式都是跛脚的。这一点在分词中表现最为简明。不断有人以“反例”来推论 分词必须包括 parsing、常识、领域知识、世界知识…

白:分词不是最终任务,只是一道工序而已。

李:道理都是一样的。这道工序一旦缺乏某个知识 理论上就是 过早剪枝,但实践中 几乎所有 real world 系统都不理睬这种理论上的批评。保留所有可能分词路径 直到最后的系统 不能说没有 但极少。(当然 这个分词的工序 现在有了 越来越流行省心的 char-based 的路线, 干脆绕过去。)

白:曾经的real world系统还都不睬deep parsing呢。按同样逻辑deep parsing甭活了。real world系统也在进步好不好?

常识,有重量级搞法,也有轻量级搞法。不要被重量级搞法吓住了。

白:

李:

“张三杀了李四也该收手了吧”

“张三杀了李四还嫌不够解气吗?”

“张三杀了李四也该有个说法 不能白杀”。

谁白杀谁?

“张三杀了李四也该有个说法 不能白死”。

谁白死?

“人咬死了狗, 不会受处置 合理吗?”

“人咬死了, 狗不会受处置 合理吗?”

“人咬死了狗不会受处置 合理吗”

白:“这些木头盖了房子。”不是svo。

李:工具s 与 施事s 是一个熟透了的现象。中英都很普遍。

白:木头不是工具,是材料。

李:材料也差不多,工具 占据 s 位置 更普遍一些。材料 对于 制造类谓词 占据 s 位置也很多。

白:贴了标签也无益。人家正主儿可能在后面藏着呢。到时候找上门来,嘿嘿,小三上位了。

李:svoc,句法只有 三个位置,逻辑语义几十个。一对多 很自然,也很谐。不过就是需要增加一个 逻辑语义细分的任务,否认不了 svoc 的句法骨架作用。

“枪不杀人 人杀人”

枪真地不杀人吗?子弹杀人 不长眼睛的。

“x 杀人”

x 与 “杀” 相谐吗?x 是不是 s?如果是,x 是 agent,还是 instrument,还是 material?如果 x 未知 怎么填坑?

白:要真是未知就简单了,坑说了算,抽象的听具体的,奥卡姆剃刀。不举证证明不是他,就是他。

此图像的alt属性为空;文件名为Screen-Shot-2019-07-15-at-6.58.54-PM-1024x200.png

李:“他” 很难说是 “盖” 的 S【施事】,更像是 “盖” 的【受益人】。

语言没有明说的 可以存疑 或 模糊。硬要跳坑里去,也不过就是个情报价值不大的常识默认。

白:这没问题啊,没有证据证明策划人、出资人、执行人、受益人是分离的,就假设他们是一致的。这叫非单调逻辑,举证义务在反方。

李:对于模糊表达 可能无所谓正反。一不小心就是 over reading,读出了不存在的语义。

白:情报价值不应由开发方评价。这类连边都有特殊标记。

李:用户方的证据也不足。多少用户需要不可靠的情报 与 明确表达的情报 混杂在一起呢?

逻辑预备的坑总是很完备,但语言不见得。常识是情报的冤家:用的适度 可以帮助情报的完整性;稍不留神 就伤害了情报的准确性和可靠性。

白:想避免错误的填坑可以用阈值拦一刀。但是拦得住拦不住是水平问题,那个位置该不该给小三则是态度问题。先要端正态度,虚位以待。就算一直虚着,也没小三什么事。这些不进坑的角色,语义上都有后路,才不在乎主语的标签。我们也没有主语标签。只有留给施事的标配坑。

李:

“这些木头盖了房子他很开心”,他才不管谁盖的房子呢 木头物有所用就好。

“这些木头盖了房子他很伤心”,木头是他的 房子却是他人的。

白:这叫自己跳出来。

李:根据常识填坑是危险操作,很容易 put words into others mouth。这不是语言理解的目的。

白:不妨设个开关,一切可控,用不用随你。

李:可以,一个叫 s,明说出来的 有句法依据的;一个叫 hiddenS,常识推出了的。就是到了法庭 也不怕了。

如果任着常识使性子,党指挥枪 与 枪指挥党,就同义了。首先 先帝不答应。

枪不能杀人 背后一定有个扣动扳机的 agent,机器人能杀人吗?机器人背后也有人。

“他造了把土枪 专门杀人”

“他造了个机器人 专门杀人”

是他杀人 还是机器人杀人?

白:系统说是就是呗,反正认的是标签,标签背后的道理,说了也不懂。

李:系统1说 a 杀人,系统2说b,系统3说 a and b,系统4 说 a or b,系统5 说 测不准 ……

白:很正常,除非有人强推标准化。

李:这一路不是一直在论标准吗?材料不是 s “他“是 s,也说的是标准。“党“是 s “枪“是 o。

白:党和枪都是隐喻,指挥的坑里面没有能匹配枪的。

李:重点是 常识与句型,谁说了算、比例如何?

白:只有不匹配得离谱,才引出隐喻。说常识太泛,其实就是一个中间件,给出了相谐度的评价。

李:不匹配离谱 的前提是 先逃进坑。谁决定的 枪要跳进坑o,而不是 s?肯定不是常识。

白:枪指挥党就跳进s。

李:对呀。谁决定的?Svo 决定的,准确说是,T1 svo T2 决定的。

白:反正离谱而且没有正解,于是回到svo,或者说,没有相谐度方面给出加分,改变不了句法初始设定的优先格局。是检查了之后没推翻它,而不是不需要检查。

李:不如不检查。这是争论的焦点。不检查先做,做错了“休眠唤醒”再反悔 也是常态。一多半根本就到不了需要检查那一步 就差不多成了铁案。

白:检查了推翻也是常态。不等检查结果出来就做也可以,这只是不同的控制策略。上不到标准层面。

李:譬如 x 指挥 y,根本就走不到相谐还是不相谐,“系统说了算”,这里系统指句法。

白:维也纳爱乐乐团指挥够了,他又来指挥费城了。

@宋柔 不一定。假设李四有个to do list,上写“打张三”“打王五”等等。做完一件事,就划去一项。

宋:“张三杀了”有歧义:杀别人和自己被杀,如此才有了“张三杀了李四也该收手了吧”的歧义。如果换成“打嬴了”,“张三打嬴了”没有歧义,一定是张三打别人。此时,“张三打嬴了李四也该收手了吧”也没有歧义。这个句子的语义就要靠语法来分析了。

李:白老师可以把 “打-赢” 拆开来论证语义大于句法 也许。谁打 谁赢……

宋:不要“打”。只要”嬴”。“张三嬴了李四也该收手了吧”。

白:打是S/2N,赢是S/N。合并的时候两个坑共用一个萝卜,一个占名额,一个不占。

宋:“张三赢了李四让教练很生气。” 谁的教练?

白:@宋柔 都可以,张三李四都行。

宋:除非有更大的语境进行强制约束,否则还是张三的教练生气。这是句法胜过语义。句法胜过常识。

白:句法语义都行,但是sentiment是顺着一头儿说的。赢和生气的不应该是一头儿的,除非教练安排只许败不许胜。因为有只许败不许胜的“找辙”,句法没被颠覆。

宋:当有人说“张三赢了李四让教练很生气。”后,一定会有人觉得奇怪,问“为什么生气?”

白:如果是“有人说”,那么“赢了”后面会有一个停顿。

宋:这里是说没有停顿的情况。有停顿的话就要加逗号。“赢了”后面没有停顿。

白:不吃最后一个馒头不饱,总有人觉得之前的馒头可以不吃。

宋:一般人都会觉得这个表述很奇怪,违反常理。

白:有保镖在身边没人敢动你,并不说明不需要保镖。“李四”后面有没有停顿?

宋:李四后面与无停顿都一样。

白:好像不是。可以都不停顿,但李四后面的间隔更小。这时难说。主要是叙述的视点变化奇怪,并不是句法。

宋:我感觉这句话体现了了句法的硬性约束:教练一定是张三的。但是,嬴者的教练本应高兴,实际的情况是生气,于是就有矛盾。如果教练可以是李四的,就没有矛盾,听者就不会奇怪了。

白:“张三痛打了李四,脸都肿了。”

谁的脸?是句法决定的?跟上面句法可是完全平行。谁的脸肿了,跟谁挨打有直接的事理关联。这就是常识“拗得过”句法了。刚才那个只是没拗过而已,因为可以只许败不许胜,尤其在团队作战时,为了在下一轮避开某个对手。这说明确实两方面因素在较劲。如果不是同时出场,较劲就不会发生。

宋:任何一种行得通的理解都有一种合理的解释。问题在于听者在强大的事理约束下居然并不顺从,还会疑问,就说明句法胜过了事理。

白:胜过了非但不证明句法早起单独起作用,反而证明了事理因素早期就参与较量。恰恰是我的观点的一个旁证。

宋:但较量不过。

白:是。但不是都较量不过。平行的句子也有相反的结果。语义和事理早期参与了较量,这个就够了。

宋:是的。句法约束胜过语义的例子不大好举。

白:伟哥的意思是根本句法就在唱独角戏,语义和事理没参加较量。

宋:路线斗争。李维:先看句法再看语义;白硕:先看语义,辨不清时再看句法。

白:我是句法先拿到基准分,出不出线,要看句法和其他因素的较量结果。较量可以不改变得分的高低顺序。

宋:合二而一。

白:但是这时,非句法因素相当于最后一个馒头、相当于没有动手的保镖,不可以认为非句法因素是多余的,是不在现场的。较量不是多余的,基准分不是一锤定音的。甚至,如果并行机制设计得好的话,拿基准分和较量可以异步。中间有一段时间存在叠加态,保留部分坛坛罐罐走不齐。

宋:当然。我完全同意语义的重要性,只是觉得词汇语义+事理常识+专业知识,实在是无边无际,难以控制。某个句子可以采用某种语义关系加以解释,但可选用的语义关系非常多,机器怎么就能选对了语义关系进而做出正确的解释?大数据并非万能。所以,挖掘句法的硬约束还是有意义的。

白:硬约束已经在基本分里体现了呀

宋:一些硬约束其实还没有挖掘出来。操纵语义需要极大的功力。当然,做实际应用系统,语义相谐性是绝对离不开的,而且是最大量的工作所在。

白:软约束就像保险,花点小钱,保你关键时刻用非句法兜底。也许没用到,但是不等于没有用。特别是,软约束可以灵活地面对长尾。看起来每一个都是小概率,但是放在一起并不少。所谓没用到,就是较量了但没产生颠覆效果。并不是没较量。

宋:解决长尾问题必须靠软约束,但这个尾巴太大,需要的软约束太多,如何挖掘和使用软约束是一个极困难的问题。

白:软约束不仅数量大而且类型多、机制复杂。我现在尝试做的事情是:1、不管什么类型什么机制,最后都折合为同一种量(优先级),这是较量的前提。2、当个别软约束缺失时,不会影响其他软约束以及硬约束的较量,这是软约束增量化建设的需要。3、集中把两三个重要的软约束类型吃透做透,形成明显的“高地”,再图类型的扩充。其实绝不是无边无际,完全把握得住的。

宋:我觉得难度非常大。在某一个较小的专业领域,可能可以正确解决大多数问题。做一个通用的理解系统,恐怕不好办。

白:先分类型,再抓主要类型,铺开规模时以领域为抓手。做出来的不会是通用理解系统,但可能是通用理解机制框架+领域资源。

宋:AI的知识工程(知识获取、知识表示、知识使用)讲了几十年了,未见到突破性进展。现在的数据驱动+深度学习是一个突破,但是范围很受限。

白:加类型不影响通用机制,上规模不影响通用机制,改参数不影响通用机制。而且它不是知识处理,只是标签演算。也不能说是理解,只是某种程度上的精准解析。

我们范围也很受限。

(喘口气儿,待续…… 《李白王116:常识是情报的冤家(2/2)》

【相关】

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

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

《朝华午拾》总目录

《李白112:白老师秘密武器一瞥(1/2)》

立委按:两载设计,三载实现,白老师的自然语言秘密武器日前曝光。十载孕育,如水流年。挑开面纱,犹抱琵琶,先者为快,一睹芳颜。

白:坑之交响曲:

脑补进行时:

李:白老师的符号给个说明啊,L是左 R是右。LMo 是左成分 不占坑 属于 mod/adjunct,LMa 是左成分,是填坑的萝卜,属于 arg,是不是?

一个及物动词挖了两个坑 2N,左边填坑的叫 LMa 右边填坑的叫 RMa,什么时候确立他们的逻辑主宾呢?

Me 是个什么?条件结果的谓词之间“(如果)选择,(那么)看好”是 Me,动补合成词内部的“哭-肿”也是 Me,所以这是个表示并列或接续的二元关系,不分词法句法 也不分短语还是从句。

二元关系图里面 层次扁平化 结构层次没看见有反映。X-bar 这类层次信息一多半属于语言 一小半属于逻辑。属于语言的可以扔掉 属于逻辑的应该有个表示。起码 “哭-肿” 的二元关系 与两个谓词结构的因果关系 在层次上天差地别。对于 dependency graph 表示,如果不允许逻辑交叉的“飞线”,层次信息可以从子树中 derive 出来,短语就是子树的 parent node 所下辖的节点范围。以此反映思维中的复合概念与单纯概念的区分。但是,现在我们允许 dependency 可以交叉,甚至允许循环(dag 丢掉了 acyclic 特性,成了 dg),以此来挖掘语言中隐藏很深的 hidden dependency (譬如 “眼睛” 与 “肿” 的主谓关系)。这虽然使得深度解析更加深入,同时也带来了层次交叉以后的副作用。复合概念的边界和范围模糊了。逻辑概念的层次没得到应有的表示。图中的主次不再分明。

结构(表示)应该是由关系和层次两个要素构成,否则就难以担当语言的模型和思维的模型。其实 关于 graph representation,以及利用 graph matching 落地到应用,里面很多机制性的东西,还是没有探索清楚。属于深水区,摸着石头过河会不会不小心淹死,也不好说。

白:树是现成的,只是没有做展现而已。

回顾一下五个操作:Ma代表Match,也就是填坑,除了左右填坑还有中填坑,就是分子向分母上的残坑填坑。Mo代表Modify,也就是修饰。Me代表合并,不仅有S(谓词)的合并,也有N(体词)的合并。谓词的合并在传统句法看来那么多种情况,在我们看来其本质都是分子合二而一,分母尽可能共享,在结合的优先级上也刚巧非常合理地靠在一起。Up和Down是升格降格。在扁平表示中,采用了新增虚拟节点和方式,原节点汇聚入边,新节点汇聚出边,新旧节点间则是单一的升降格边。

这些范畴非常“冷血”,非常地就形式论形式,但不代表不能转换成主谓宾。但是,第一,我不认为主谓宾的叫法在句法上比我更科学;第二,句法标签只是个过渡,对接语义标签时,这套标签不仅不会输给传统标签,反而映射更直接,比如话题、大小主语、总分关系、谓语动词周边非逻辑主宾语的地位尴尬的NP。第三,这套标签不是不分词法句法,而是词法句法的边界在一些地方有异于传统认知,特别是紧定中式名词(如“红太阳、好朋友”等)和动结式动词(如“打伤、哭肿、染红”),由于在我们的体系下微结构和句法(比如动趋式、动介式)并无不同,所以放到句法里并没有违和感,也并不因此多费什么手续,完全是搂草打兔子,顺手的事儿。

这个体系会不会乱?我们用了将近两年的时间建立它的what,接近三年的时间建立它的how,经过了无数的推演、测试和复盘。在这样高强度的打磨下,传统语法书里的绝大部分难句都不是问题,也没有因此把普通句搞得不普通,基本结论是结果(what)可用、过程(how)可控。

解析结果保持歧义的能力也有独特风格,比如“鸡不吃了”是传统歧义句,但在我们的表示框架下,句法无歧义,一个左填坑,一个右修饰,如此而已。歧义是语义层面的,鸡不小心即是Animate又是Food而已。这两个角色在句法上都是左填坑的N,并无区别的必要。

如果落地要的是语义标签,我们可以直接去对接。如果一定要传统标签,我们可以做转换,但这就像高清晰度的视频向低清晰度的视频转换一样,我们并不认为它是一种成就,而是一种无奈。比如“这件事我有意见”里面,“这件事”和“意见”有直接的填坑关系,跟“有”没有一分钱的关系。你让我标注出“这件事”是“有”的什么角色,我当然是很不情愿的。


我们说动结式动词的微结构和松耦合的述补结构在本质上是同一类结构,都是分子合并、分母尽量共享坑,但坑的共享是有相谐性前提的。刚才说到的“哭肿”就没有相谐的坑可以共享,所以只好各填各坑,但是分与合,都是在一个机制下的不同子模块而已,并不是说一个很好把握另一个很难把握,都在可控范围之内。

李:落地要的语义标签是逻辑语义,还是语用的标签?语用标签譬如信息抽取里面的事件角色。

白:公共服务落地是逻辑语义标签,应用落地是语用标签。中间隔一层适配。

李:这个落地模块 需要多少额外的知识呢,包括语义相谐。

白:适配具有行业特点,不懂行业没门儿。

李:逻辑语义原则上是行业独立的。

白:也不可能一家公司包打,一定会发展出众多的落地服务商和落地适配包。主打逻辑语义的公共服务,在足够精准的前提下是有独立商业空间的,如果再做几个示范的语用落地,表明生态效应和层次衔接机制work,后续还会有大发展。就好比,逻辑语义提供面粉,应用落地提供面包蛋糕包子馒头。面粉的供应商有自身的商业空间。面粉也需要好的面包蛋糕包子馒头来背书自己的质量。

李:说这些 道理上站得住,听起来好遥远。parser 要独立成为生意,感觉很难,NLP component technology 定位的,迄今几乎没有成功案例。不是没人尝试,而是没人成功,除非今后几年有突变发生。(满世界只知道端到端呢,最近加了个普遍看好的预训练,离开符号语言学更遥远了。)

如果句法就3种关系,嫡系 Ma,庶出 Mo,哥们儿 Me,从数目上看 这不仅比 100种逻辑语义、也比 五六种传统句法关系(“主谓宾定状补”之类)要粗线条。说这个 what 是高清,感觉还不够。

白:这个标签体系显然不是逻辑语义,但它可以直通类似知网的逻辑语义体系。说直通的意思是,拓扑基本上都对,只是需要细化。谁跟谁有关系基本都对,什么关系需要细化。不像有些拓扑都不对的,细化起来遇到的麻烦大得太多。

李:从这个 what 匹配到逻辑语义,是一对n,必然需要更多的知识和做功。

对于短句,标签集很小的时候,凭着词典的预示信息,句法基本不是问题。到了长句 可能挑战就来了。短句不是问题 就好像过去社交圈小 但每个人都必须结婚,谈恋爱就特别容易有结果,因为没得选。很多时候 门当户对以后 候选只剩下一个 那就ta了。

白:结构就是用来拉近距离的。依托结构拉近的距离,比望文生义拉近的距离,更为精准。

李:词典在类别基础上所给的那些subcat预示信息,譬如 S/2N,这类 subcat 也是粗线条。即便原子化 平铺开来 也没有多少,估计 20 个左右。

白:这不算subcat,只是POS

李:上面的标签 S/2N 传统词典是 vt,属于 V 的 subcat,不过叫什么名字无所谓,总之是预示一个潜在 pattern 的词典标签。这类标签的集合 感觉20个可以收住。在 20 个标签以内做句法,结果的关系是 3,这应该还算是粗线条的。

让人眼亮的是这种颗粒度 的确是句法最核心的部分,在回答 “谁与谁发生 directed 关系” 的问题上,是一个不错的抽象。

短句容易做粗线条句法是显然的 因为没得选,“这件事 我 有 意见”,一共两个潜在萝卜 n1 n2,正好有两个坑 空着,“我” 被 “有” 抓走以后,“意见” 的 【对象】 只剩下 “这件事”,不是它 也是它了。

白:还有另一面,明明空着,也不进来。下例中,“今年”,“食堂”,明明是最贴近坑的萝卜,但不是你的坑,打死不填。宁可降格做状语。这就不是那么简单了。还有前面“这碗猪”也不能谈婚论嫁,要等“汤”拉近,这背后有玄机。绝不是一个村里没婚没嫁就可以拉郎配的。

李:这里面玄机如果不论 how 就没法评论了 只能说不明觉厉,特别是“食堂” 不填坑,句法上有点天理不容。

白:所以这样的结果,转换成主谓宾,得多憋屈。那是后退。前进一步,就是精准的逻辑语义。拓扑都对了,就差一个相当于知网的基础设施。

李:可是反过来想,“吃” 与 “食堂” 发生了关系 是肯定的,这个关系中 “吃” 是老爸 也是无疑问的。为什么要把 arg 与 mod 的区分负担,强加给句法,而不是留到语义或语用呢?

“鸡不吃了”里面的主宾歧义句法都可以包容,为什么不可以包容 arg 和 mod。如果句法最好轻装 那就听乔姆斯基的,彻底排除语义,现在看来 这个 “食堂” 的降格 是带入某种语义了。反正 map 到逻辑语义的时候 还是要调用语义约束,想不出为什么一定要有选择地把部分语义前置。

白:语义arg无边无际,句法管不过来。我的原则是:标配的语义arg走填坑,非标配的语义arg走修饰。

李:“我吃月亮” 呢? 现在也降格吗?

白:是。

李:感觉是得不偿失。因为不降格做引申意义的宾语情形,应该比降格做状语的现象更加普遍。

白:“这场火”,也降格。月亮可以是处所啊。怎么非常识了?

李:比起传统的svo句法解析,个人感觉这样做是得不偿失。要是我,就宁肯放宽语义约束,得到一个非常识的解析,也比过早实施语义约束合算 命中率会更高。 这当然只是感觉,还需要数据调查和统计来验证。“把月亮吃了”,就是“非常识”,而非常识的说法 语言中也没有那么罕见(“一片乌云飘来,吃了月亮”)。原因是 非常识为语词的 引申,创造了条件和手段。说话者是用不相谐 来倒逼听话的人去联想 引申。

白:修饰,只是非标配的语义坑而已,不明属性,并不是语义层不能再入,这个修饰的标签并不给语义分析设置篱笆墙。只是说他非标配,非标配的后续,既可以脑补缺失的非标配格标记,也可以作为修辞手段再入标配格标记。两个可能性都存在。并不存在“失”,只有“得”。

李:设不设篱笆墙,说到底还是 句法输出以后,后续工作量 是增加了还是减少了。把“食堂”和“月亮” 都降格了,后续工作量 感觉是增加了 而不是减少了。因为 月亮被吃这类的表述 比 “吃食堂” 这类表述 数量为多,何况 吃食堂其实已经词典化了,本来就不该参合进来的。关键在 它不应该在歧义区分的雷达上,属于常识例外。词典绑架 没商量。

白:工作量不是唯一标准,有利于精准才是最终标准。再入,实际上你可以认为引申受事和常规受事是两个格标记。

即便词典化,微结构仍然是修饰。吃七食堂,吃教工食堂,并不是词典化的,但我们不怕。

李:那种叫成语活用,在词典绑架的延长线上。实现一个成语活用的机制 也就可以不来参合了。

白:吃勺园,吃全聚德。吃麦当劳 … 也不是成语活用,但背后是一个机制。它们如果走了不同路径,反而奇怪。

李:这是真歧义,“吃麦当劳” 作为地点和食品 均可。这其实也成语化了 真歧义也可以在词典绑架为歧义表述。

白:就算吃食堂是词典绑架,但其词典定义依然是S/2N,并没因为“食堂”的加入而变成S/N,这恰恰证明“食堂”填的确非标配坑。

李:话说回来,只要句法不必调用语义相谐的大数据,而只是使用语义标配的二值判断,那不过是查一下本体,也没什么可批评的。不过就是两种各有利弊的路线 择其一而行之。

白:不一定二值啊,可以连续值,折扣么。

李:如果折扣的话,

我吃月亮
我吃石头
我吃土疙瘩
我吃面疙瘩
我吃疙瘩

这些解析结果应该有区别,而不是都降格,或都是宾语。

白:对啊,看你Ontology怎么设计的了。这与分析器无关,取决于Ontology的返回值。

李:返回标配是二值,还是多值,多到什么程度。

白:连续值,看小数点精度。但是0.2和0.3的差别,估计不足以颠覆。能够利用梯度最理想。

李:哈 你这一球踢出去 倒是轻省了,对了是我的,错了是你的。

就是说,ontology 供应商的相谐颗粒度,不一定是二值 但也不要超出太多,多了反正也没有区别,也许三值 很搭/较搭/不搭。也许四值。ontology 供应商最好是婚恋交友网站的架构师出身,懂得如何配对。

我还是没理解 从设计上为什么句法要在 “嫡系/庶出” 上较真,非要劳动 ontology,而在 “主语/宾语” 上反而不较真。反正提供的是半成品。从逻辑语义角度 语义也还是不全的。

白:我觉得这太显然了,这事儿不正是Ontology该做的吗?要站在比它们俩都高的视角看他们俩。句法和本体,我们的方法论是,句法要给出对的拓扑。为此,Ontology、情感、事理都是必要的补充。

李:细节不纠缠 逻辑语义可以算是一个唯一可以公认的语义理解的黄金标准了。arg 与 mod 的区分,本来就不是黑白分明的。这个对错 不好说。

白:但是构建逻辑语义层的输出,虽然也同样使用Ontology 、情感、事理,但是用得更重。这两个方向的用,不可混为一谈。

李:所以说是 双重使用啊,重复劳动。

说起 arg 与 mod 的嫡系和庶出 有点意思 可以展开简单说说。args 是计划内的婚生子女,主语、宾语、宾语补足语,名正言顺,所以受到父母特别关照。mods 属于计划外的秘密勾当。因此,总是 parent 去找 args,利用 subcat 的计划内指标。到了庶出的 mods 就管不过来了,只好是 mods 去找 parent。千里寻父 叫父亲太沉重。

可是这一切的句法区分都是世俗的角度,语义层面 嫡系和庶出并没有那么大的鸿沟,都是围坐在天父身边 各司其职 各有角色。所以说 句法费力气区分嫡系庶出 为的是服务语义和理解,可是 语义那边偏偏对这种区别其实没那么敏感。为啥?因为语义在分配角色的时候,更加看重本人的资质,而不是看重 嫡系还是庶出的出身。“有成分,不唯成分论”,重在个人品质。个人的品质,就是你到底离我的本体要求有多远。

白:就是因为庶出的不加标记的情况太稀疏,句法留这么多资源给稀疏的庶出,不值得。

李:反正语义那边还要政审把关,用的也还是ontology 资质审查,为什么句法还要预审?

白:此地预审,方便彼地直通。

李:我是说 费力区分 Ma 与 Mo,没多大必要性。如果这种区分 不需要劳动各种知识 那当然。如果需要费力 就不值得了。

白:从基础设施建设的角度,只为一个中间步骤建,当然越轻越好。如果建了既可以为一个中间步骤服务同时更可以为有独立商业价值的最终步骤服务,那就可以建的重一点。即使重,也包办不了落地适配。落地适配是一个既统一规划又独立实施的环节。也就是说,从一个必建的基础资源里顺手提取一些信息就可以搞定正确的拓扑,这算不得什么费力。劳动的方式非常清晰和标准化(相谐度查询),也算不得什么劳动。我们目前的算法也并不是对所有候选邻对都进行相谐度查询。只有当前动态优先级最高的邻对才做相谐性检查。

这个,显示还有点小bug,但是揭示了一个现象,就是嫡出的萝卜出现位置太远,需要许多中间步骤拉近。但一旦拉近,那个位置还是人家的,庶出的没脾气。远近并不构成威胁。把“你”挪到“食堂”后面,也是同样结果。“要是这个时间吃食堂你就只剩下包子了”,用传统句法范畴分析这个“你”,就很莫名其妙,它跟“剩下”是主谓关系吗?但是论坑,一点关系没有。它跟“吃”是主谓关系或者述宾关系吗?论坑是的,但是形式上却完全不在那些位置。甚至跑到了另一个从句的辖域里面,要多尴尬有多尴尬。谐我坑者,虽远必填。

李:好例。改造一下:

“要是这个时间吃食堂你就只剩下二厨了 大厨早就自己躲一边吃包子了”

“二厨” 比 “食堂” 如何? “包子”更远 但相谐,为什么不能虽远必填?

“要是这个时间吃食堂 大厨早就自己躲一边吃包子了。”

白:后面又出现了“吃”,截胡了,“包子” 第一次就近填坑。

李:填 “剩下”,与 填 “吃”,不都是劫持了吗?

白:“剩下”的坑,抽象度比较高,万金油。我们的说法是“置换”,就是把首次填的坑从占名额的调整为不占名额的,后续填的坑再视情况决定占不占名额。

李:就是说 对于远近两坑,还要做比较计算,来决定截住没有?

“要是这个时间吃食堂你就只剩下二厨了 大厨早就做完一屉包子回家休息了”

“做完” 与 “剩下” 差不多,都是万金油 vt,截住没有?

白:这个还真可以有。但前提是,子句之间得有依据是连接的。大厨做完了包子,不一定卖完。

李:人的理解,首选不是包子,而是二厨做的档次较低的食品。大厨做的包子 轮不到。

白:如果两个子句只是最低档次的连接(next),还真未必建立坑的共享。但是用连接词连接的,肯定可以共享。

李:有一万个理由否认,因为说话语气是可惜和后悔,想吃大厨的口福 你享受不到。谁叫你迟到呢。共享与共产共妻类似,是高危操作。

白:你那里只有空格,没有上句和下句的明确锚点,不在我们的共享白名单里面,不能建立Me,所以坑里的萝卜是带不过来的。跨小句需要白名单制。前提是:1、甲小句不饱和、2、乙小句有供给、3、两小句连接方式在白名单中。

李:嗯,虽远必填 限定在句法关系圈内,也是一说。

“要是这个时间吃食堂 厨师都出去买海鲜了。”

这个应该是 Me,因为符合 “要是…就…”句型。

白:对。

单从本体看海鲜就是加分的,但是事理是减分的。吃在买前,不符合事理。不符合事理的会减分,就看二者抵消成啥样了。

李:这个事理如何用 感觉漫无边际,“先买后吃” 这样的常识事理,何止以万计。

白:但是人就是这么判断的。这是长尾,攻击到本体的概率有限,不到落地肯定不做。

李:所以 句法一般不带入事理常识,语义语用才考虑用。

白:句法只是中间产物,又不是产品。加了边还可以砍啊。砍了边再加就不那么简单了。有一万种方法砍。一个公司既做句法也做落地,没必要维护句法的面子。整体可以就OK。句法提供的这些边,送神容易请神难。

李:就是大体了解句法模型,用到几个维度的知识,用到的维度 颗粒度如何。之前论过 维度多了就是一锅粥。如果符号逻辑最终还是一锅粥,那就不如索性舍弃符号。因为一锅粥最终丧失了符号的优势。可解释性不再清晰,可定点纠偏也丧失了。

白:还是要区分表示和控制。表示是符号的,控制是符号与神经结合的。这没什么不可以。

(未完待续…… 《李白112:白老师秘密武器一瞥(2/2)》

【相关】

白硕:人工智能的诗与远方,一文读懂NLP起源、流派和技术

文章来源:https://read01.com/AJGzNQN.html

《一日一析系列》

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

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

《朝华午拾》总目录

Interview 1/10: Critique of Chomsky’s Formal Language Theory

Q: Lao Li, I have been paying close attention to your academic track. I deeply admire you for more than 30 years’ in-depth study of symbolic logic in the field of natural language understanding with your unique innovation. On your NLP Channel, I notice that you’ve been critical of Chomsky. Chomsky is the representative figure of the rationalist school. Like many others, I admire Chomsky. As far as I know, you are also a rationalist. So why do you, as a linguist who practices rationalism, criticize Chomsky?

A: First of all, although I have criticized Chomsky, pointing out his theoretical issues and objective misguidance in the field, these are “criticisms within the school”. There is no doubt that Chomsky is the father of computational linguistics and the banner of rationalism in the field of artificial intelligence. His theory of formal language is the cornerstone of computational linguistics. All of us computational grammarians, as practitioners of the symbolic logic of rationalism in language, are his disciples. When we criticize him, we still use his formal mechanism as the frame of reference.

From the perspective of language formalization, Chomsky, who has a deep mathematical background, brings mathematical rigor into the formal study of language. At least in terms of formalism, Chomsky unified human language with computer language to have achieved a highly abstract symbolic system no others could dream of reaching. Without Chomsky’s formal language theory, computer science could not develop high-level languages, and all the achievements of the information industry would be unimaginable.

On the other hand, it can be said that Chomsky’s negative impact on the field is as big as his revolutionary contribution to linguistics and computer science. His formal language hierarchy is a theory of pure genius, which lays the foundation of language formalization. This formalism has become the theoretical basis of computer high-level languages and their compiling algorithms. It is used at its best to create, parse and compile computer languages as a perfect guide. However, perfection is sometimes only one step from fallacy. Chomsky criticizes the finite state machine as not suitable for modeling natural languages due to a lack of recursion mechanism. Too many people are misguided and fall into the so-called “more powerful” context-free mechanism.

Such an intelligent and powerful figure, if he misleads, can impact an entire  generation. The generation that was affected was my direct supervisors and predecessors when I entered this field (in the 1970s and 1980s), their work in natural language understanding was almost exclusively toy system confined to labs, difficult to scale up and demonstrate in practical applications.  This directly led to the rebellion of the next generation. This is the piece of history in artificial intelligence, the famous competition between rationalist symbolic school and empirical statistical school, with long struggles between the two paths. The rationalists of the old generation were at a disadvantage in competition and gradually withdrew from the mainstream stage.

All the advance of the statistical school over the last 30 years has been a practical critique of Chomsky because almost all of these models are based on finite state models, which he repeatedly criticized as inappropriate for natural language. The context-free grammar he advocates has achieved limited success in the field of natural language.

Q: Now that everyone is advocating neural networks and machine learning, is there still room for the symbolic rule school? Rationalism has lost its voice and visibility in the natural language community. What do you think of the history and current situation of the two?

A: Well, machine learning has been on the rise in natural language processing since about 30 years ago, with the rapid development of data and computing resources. Especially in recent years, deep neural networks have achieved breakthrough successes in learning. The success of empiricism, in addition to the innovation in neural network algorithms, also benefits from the availability of unimaginably big data and big computing power today. In contrast, the rationalist school of symbolic logic, due to its implacability,  gradually withdrew from the mainstream stage of the academia after a brief upsurge of phrase structure grammars with innovation based on unification about 20 years ago. There are several reasons for this situation, including Chomsky’s long-term negative influence on computational grammars, which deserves serious reflection.

Looking back at the history of artificial intelligence and natural language, the pendulum of empiricism and rationalism has swung back and forward, but the pendulum of empiricism has been on the rise for the last 30 years (see the red dot in figure 1). In his article “Pendulum Swung Too Far”, Professor Church  predicted and called for the resurgence of rationalism and presented an illustration below:

At present, due to the breakthrough of deep learning, empiricism is still in the limelight. Although rationalism has been accumulating efforts by itself for many years, it has not yet reached the tipping point where it can compete, head-on, with empiricism. When one school becomes mainstream, the other naturally fades out of sight.

Q: I have a feeling that there is some confusion in the community and outside the community at large. Deep learning, which is a method of empiricism, now seems to be regarded by many people as equivalent to artificial intelligence and natural language processing. If the revolution in deep learning sweeps through all aspects of artificial intelligence, will it end the pendulum swing of rationalism? As professor Church says, the pendulum of empiricism has swung too far, but it looks far from falling back.

A: My definite answer is no. These are two different philosophical bases and methodologies, each with its own natural advantages and disadvantages. Although there are reasons for the status quo of the existing one-sided empiricism in the current academic world, it is not a healthy state. In fact, both schools are competitive on one hand and also highly complementary on the other hand. Some older generation mainstream pioneers like Church have been warning about the disadvantages of one-sidedness in empiricism, and some new scholars in deep learning have been exploring the integration of the two methodologies to solve the problems of natural language.

Yes, much of the current surge in AI is based on breakthrough performance from deep learning, especially in the areas of image recognition, speech processing as well as machine translation, where AI systems have reached or exceeded human quality. This is an unprecedented amazing achievement indeed. However, the fundamental limitation still exists with deep learning, as well as all the other successful empirical methods at present, that is, the dependence on massive annotated data, what we call the knowledge bottleneck. The reality is that in many fields and application scenarios, such as natural language parsing, machine translation of e-commerce data, data of massive annotation or domain translation do not exist. This knowledge bottleneck severely limits the performance of the empiricist school in natural language understanding and other fine-grained cognitive tasks. There is simply not enough annotated data in many sub-fields, and without, it is almost impossible to make bricks without straw for learning. This is especially true for deep learning, which has a much larger appetite, like insatiable, than traditional machine learning.

Q: So it seems that deep learning is not an all cure. Rationalism has its place. You said the two schools have respective strengths and weaknesses. Can you compare and contrast them? Why are they complementary?

A: Let me summarise the merits and demerits of the two for a serious contrast.

The advantages of empirical statistical models include: (1) good at coarse-grained tasks, typically, document classification, for such tasks, statistical learning is naturally better to draw the overall conclusion; (2) robustness; (3) high recall: due to the lack of structures and understanding, many tasks might face a ceiling for accuracy, but recall-wise, learning usually performs well; (4) development efficiency: it can quickly scale to a real application scenario of big data.

The main limitations of the statistical school are: (1) the dependence on massive annotated data: this is the biggest knowledge bottleneck; (2) it is difficult to make targeted debugging: the statistical system is more like a black box, a big defect for maintenance and iterative incremental enhancement of a software system; (3) lack of interpretability: whether the result is right or wrong, it is difficult to explain, which affects the user experience and confidence. The main reason is the lack of explicit structural representation and symbolic logic in the algorithm that people can follow.

The rationalist approach simulates human cognitive processes without relying on massive labeling data to imitate on the surface strings. Rationalism directly formalizes the experience of domain experts and uses the explicit rule system from symbolic logic to simulate human intelligence tasks. In terms of natural language understanding, the grammar school formalizes the rules summarized by linguists so as to parse natural language in detail at all levels and achieve deep syntactic-semantic analysis. In this respect, rationalism has its natural advantages.

To sum up, the advantages of rationalist rule-based school include: (1) good at tasks of fine-grained tasks: very detailed analysis, such as the deep parsing of syntactic semantics with logical reasoning; (2) accuracy: the rule system written by experts is easy to guarantee high accuracy, but the improvement of recall is usually a long iterative process; (3) debuggable in error correction: the basis of the rule system is symbolic logic, which is easier to trace to the root of the error in debugging; (4) interpretable: this also benefits from the understandable symbolic logic basis.

The main defect of the rule school is the low efficiency of manual coding, and the dependence on expert coding is the knowledge bottleneck of the rule school. Supported by the same platform and mechanism, different levels of expertise determine different levels of quality. The two paths have their own knowledge bottlenecks, so to speak. One is to rely on a large quantity of “low-level” labor, labeling, though very monotonous,  is work that can be assigned to ordinary students with a little training. The other is to rely on a few experts of “high-level labor”,  much like software engineering, for coding and debugging rules, the knowledge engineer training costs are high, making it more difficult to scale up to the real world. Finally, the talent gap can also be regarded as a realistic severe limitation of the rationalist school. 30 years is exactly one generation, during which empiricism has occupied the mainstream stage, and attracted almost all newcomers, causing a generation shortage of talents in the rationalist camp.

As for the recall, it cannot be simply concluded that high precision is bound to have a low recall rate for rule systems. The actual situation is that, on the one hand, it is not at all difficult to achieve a balance between precision and recall, by deliberately relaxing rule conditions and sacrificing accuracy. On the other hand, while high precision can also be maintained, the more rules added to the system, the more phenomena will be captured, hence the recall rate will come up naturally and incrementally in the iterations as time moves on. In other words, recall is a function of time and development resources put in, without having to compromise precision.

Q: Since each has its own strengths, as the rationalist pioneer and father of computational linguistics, why doesn’t Chomsky exert its due influence in the field of natural language processing? His impact has been waning, and the newcomers to the field hardly hear of him.

A: Indeed it is. Although I am a rationalist, I also see that there is a considerable historical burden from this school that needs to be seriously reflected on from the perspective of formalism architecture.

Chomsky is the founder of modern rationalism, but the theory and practice he developed also involve some misconceptions. We must recognize these so that we can move forward the linguistic rationalism in symbolic logic steadily and deeply for natural language. In fact, after decades of theoretical exploration and practical experiments, the grammar school has seen fairly clearly its own theoretical limitations. Those who stick to the symbolic rule systems have broken through the path of innovation in the inheritance of rationalism, and have made their own breakthrough in deep parsing, the very core of natural language understanding, and in its scale up to big data for real-life information extraction and text mining applications. That’s what we’re going to focus on in this series of interviews.

Q: I know you have great faith in rationalist symbolic approaches in general. However, you have also seen a number of misconceptions in Chomsky’s theories. which are the most critical?

A: On his formal language theory, there are two fallacies to my mind, one I would name Recursion Fallacy and the other Monolayer Fallacy.  On his linguistics theories, one of the very basic propositions in his linguistic revolution is “syntactic autonomy” or “self-contained syntax”.  It involves serious potential consequences in the analysis of certain languages such as Chinese.  His phrase structure grammar tree represenation with his X-bar theory in syntax is also worthy of reflection and criticism, especially when it is put in the comparative study with the alternative dependency grammar and its representations for NLU. Let’s look at Recursion Fallacy first.

In my view, Chomsky’s greatest mislead was to use the so-called recursion nature of natural language to criticize pattern matching in finite states. His cited English examples of center recursion are far-fetched and rare from real life, making it difficult to argue for its being the nature of natural language. Nevertheless, a generation still chose to believe in his theory, taking it for granted that finite states had to be abandoned in order to be able to parse natural language.

Q: Isn’t it generally accepted that natural language is recursive? How to say it is a fallacy?

A: Exactly because it is widely accepted, it is of the more misleading nature and consequences, hence requiring more serious critique.

Recursion in natural languages typically comes in two types: (i) right (branching) recursion and (ii) center recursion. Many people don’t consciously make that distinction, but in computational theory, they are two very different things. Right recursion is linear by nature while center recursion is nonlinear, a completely different monster, of much more computational complexity. In natural languages, right recursion is fairly common and can at times be as many as seven or eight levels nested, which still reads natural and easily comprehensible. For example, the VP nesting example:

(to request A (to beg B (to ask C (to do something))))

For right branching recursive structures, we usually do not feel a burden in the communication. The reason is that, although the right recursive left boundary is in an uncertain position, they all end at the same poin for the right boundary, like this: (… (… (… (… (…… ))))). Thus, we do not need a “stack” mechanism in memory to deal with it, it remains finite-state.

Chomsky cannot criticize finite-state devices with right recursion, so he needs to base his argument on center-recursion, a rarity in language. The fact is that natural languages have little manifestation of center recursion. Center recursion is much like matching parentheses. You want the parentheses to match each other so  you can express and understand the proper nesting structures, like this: { … [ … ( …… ) … ]… }. After as many as three levels of center recursion, our brain can no longer cope with the pairing complexity, which is why it’s hard to fine such phenomena in real life language data.

Q: I remember some examples of center recursion in English:

      The man who the woman who had lost all the keys was calling all day finally came…

A: Is this “human” language? Chomsky repeatedly attempt to teach us that not only this is human speech, but it is the very nature of human language, hardly any hypotheses about language as far-fetched as this to my mind.

Q:  Let me try to understand what you mean: center recursion does not exist, or does not exist over three levels, so natural language is finite-state?

A: Well, not that it does not exist, it’s so rare and far-fetched, and it’s never more than three levels deep unless you’re pulling a prank. Therefore, it can by no means be the “nature” of natural language.

The very idea of unbounded center recursion in language, far from the observable facts, in effect violates the limits set by the short-term memory following psychology. Where in the world do people talk like that, like, keep opening the doors without closing them behind, in a maze-like complex castle, with nested sub-structures after substructures? A path of 3 doors opened, an average person will get lost in the maze. Even if you’re a super linguist, and you can stand it, your audience will be bound to be trapped. Is natural language not to communicate, but deliberately making difficult for people to follow you?  This is not in accordance with the consensus that language is born for communication and serves the ultimate purpose of communication.

Using pranks and verbal games as evidence of linguistic competence and the nature of language is one of the most misleading aspects of Chomsky’s recursion theory. This recursion trap leads many people to automatically accept that natural language is recursive and therefore we must discard the idea of finite states. The people who believe in him, on the one hand, are influenced by his authority as the father of modern linguistics; on the other hand, they often mis-regard the more common and deeper right recursion for center recursion as evidence in support of Chomsky’s recursion hypothesis. Chomsky himself is intelligent and rigorous as not to use readily available right recursion as evidence, he only uses center recursion as an argument.  But he’s in effect misleading.

Q: I guess this is a typical behavior of mathematicians and philosophers: they pursue formal perfection. As long as it is theoretically impossible to exclude multi-level center recursion, it is required that the formal mechanism must have a built-in recursion mechanism. But practitioners of natural language understanding do not have to be bound by that theory, do they?

A: after all, the foothold of the theory should be based on the real-life natural language object and data, right?

In fact, in the research of corpus linguistics, some scholars have conducted a very extensive survey and found that the so-called center recursion in natural language never exceeds three levels, and the occurrence of three-level recursion is extremely rare [reference]. The phenomenon of natural center recursion beyond three levels is simply not found in a very large running corpus, not a single case found. So why boil a very limited center loop down to what seems like an infinite level of recursion, and furthermore consider it the essence of natural language, and use it as an argument to determine the choice of the formal model for natural languages? This has had serious consequences for computing and NLU going beyond labs for applications.

In order to deal with theoretically infinite center recursion, the human brain, or computer memory, must have a “stack” device and a “backtracking” algorithm. Without going into the technical definitions of these computer terms, computer science studies have demonstrated that stack-based backtracking is expensive for computation. Using it as a basic device for natural language severely impedes language parsing from leaving the laboratory. Specifically, Chomsky’s “context-free grammar” with built-in recursive devices is theoretically bound not to have corresponding linear speed algorithms. The absence of linear algorithms means that the computing time is beyond control, so when entering big data out of the lab, this kind of thing is one limiting factor in practice. This is one of its fundamental flaws in his formal language arguments for natural language.

Q: I agree with you: there are only very limited levels, we don’t have to stick to recursive grammars. But I still have a question. Short-term memory is a psychological concept, and most of us in computational linguistics believe that psychology has no place in linguistics. Don’t you agree?

A: I don’t agree. The limitations of psychology have a direct effect on real linguistic phenomena, that is, psychological effects are reflected in linguistic phenomena. Real language phenomena, not imaginary phenomena, are the goal and final foothold of our natural language study. What we’re dealing with is a data set with a psychological constraint, and it’s obviously not appropriate for us to adopt a mechanism to deal with it based on a hypothesis that disregards psychological constraint.

Q: But even with the addition of psychological restrictions, don’t real corpora still have recursion? If yes, without the formal recursion device, such as the finite state machine, how can it handle the actual existence of the center recursive structure as long as it is not a non-existence?

A: Not a problem at all. As long as the recursive structure is bounded, the finite states have no problem in dealing with it. All we need is just cascade a few more finite state machines. Since you have at most three levels of center recursion, then it is 3 machines with 3x time needed, which is still linear. Even 10-level center recursion is not a thing, just add up 10 finite state automata. In our deep parsing practice, we have once applied up to 100 cascaded finite state machines for very deep parsing, in high efficiency. This kind of finite state pipeline systems, often called cascaded FSAs, is essentially the same concept of the pipeline as used in software engineering.

Q: Chomsky Hierarchy, named after Chomsky, is the most famous discovery in Chomsky’s formal language theory, which divides grammars into four types, type 0 to type 3, corresponding to different automata. What do you think of his hierarchy?

A: Chomsky’s formal language hierarchy is like a hierarchical castle with four enclosing walls safeguarding inner cities. Each formal device is like an internal forbidden city. Here we particularly recommend and quote an insightful study of Chomsky Hierarchy by Prof. Bai, which I call  a “caterpillar” theory of natural language (S. Bai: Natural Language Caterpillar Breaks through Chomsky’s Castle):

If we agree that everything in parsing should be based on real-life natural language as the starting point and the ultimate landing point, it should be easy to see that the outward limited breakthrough and the inward massive compression should be the two sides of a coin.  We want to strive for a formalism that balances both sides.  In other words, our ideal natural language parsing formalism should look like a linguistic “caterpillar” breaking through the Chomsky walls in his castle, illustrated below:

Prof. Bai also clearly sees that Chomsky’s recursion theory is too far away from linguistic facts, so he puts special emphasis on “real-life natural language”. After all, formal systems serve as formalized models for natural language, that is, they need to provide an appropriate framework for what natural language looks like. The common answer shared by Prof. Bai and me is that a suitable natural language model needs to get through the walls inside the Chomsky Castle. Any single device in Chomsky’s existing formalisms, when used to model natural language, is either too small to fit, or too large lacking appropriate restrictions. In both theory and practice, it is necessary to penetrate the walls of Chomsky Castle and form an innovative formal system, so as to lay a good foundation for the revival of grammars in natural language modeling. In the formalization process of penetrating the walls, Mr. Bai has his own innovation, and I have mine. My proposition is to extend and overlay the finite-state mechanism, so as to establish a shallow and deep multi-layer rule system for natural language deep parsing and understanding.

Do not look down upon finite state machines, which seem to be a very simple mechanism for pattern matching. When they are added layer by layer in the architecture of a reasonable pipeline system, they can cope with very complicated structures and phenomena and reach the depth of language parsing that is never before made possible by traditional context-free grammars or other devices. Of course, the mechanism itself can be reinvented and recrafted, such as incorporating the unification operation in handling language reduplications, e.g. in Chinese, “看一看”: V 一 V (literally look-one-look: “take a look”).  There are also rules for pattern matching that can effectively eliminate ambiguities by adding post-context conditions, similar to the “look ahead” effect in backtracking algorithms, to the pattern matching device.

It is worth emphasizing that maintaining the linear nature is the premise of any formalism innovation. No matter how we extend the mechanism of finite-state devices, this one remains an unchanged goal, that it must retain the essential characteristics of finite state to ensure the “line speed”. We use a multilayer cascade to bypass the recursion trap, hence eliminating the biggest hidden trouble that hinders linear speed. Since the linear multiplication remains linear, the cascaded finite state system does not change the linear benefit of the system. Computationally, the processing speed required for three-layer recursion is only 3x, which will not affect the scalability potential of the system. In fact, we have deployed multi-layer systems, usually with more than 50 layers. Our Chinese system sometimes cascades up to 100 layers in the architecture, where capturing recursive structures is just a relatively simple task inside.

Q: That’s fascinating.  And very imaginative, too. It is apparent that you and Prof. Bai have both accumulated years of practice and deep dive into natural language so you two have such insights as summarised above in breaking through the internal walls of the Chomsky Castle. Ok, so the first issue with Chomsky formal language theory is the recursion fallacy, what’s the second fallacy?

A: The second major problem with the Chomsky formal language theory is briefly mentioned above, which I call  Single-layer Fallacy.

Turn to the chapter on parsing in the computational linguistics textbook, the typical algorithm for parsing, known as chart-parsing, is often introduced on the formalism of a context-free grammar (CFG). CFG contains recursive calls in its rules for covering recursive structures, a point emphasized by Chomsky as the key feature for natural language. The implementation of this rule system is carried out in the same search space on the same plane, thus the so-called chart-parsing can be illustrated on a flat chart. Successful parsing is represented by one or n search paths that cover the entire sentence.

[consider a chart parsing sample.]

The essence of single-layer parsing is like cooking a hodgepodge.  Everything in an input string,  from morpheme to word, from word to phrase, from phrase to clause, from clause to a complex sentence, all are carried out in the same space.

Q: So Chomsky wants to solve everything at once. Isn’t that good?

A: Problem is, there are three main disadvantages. First, there is no linear algorithm. Many people have tried, but they just can’t find a linear algorithm, it’s a combinatorial explosion.

The second disadvantage is that it is not suitable for modular development, because the surface or shallow level language phenomena and the deep language structures are all mixed on one plane.

The third disadvantage is the so-called “pseudo-ambiguity” issue. “Pseudo ambiguity” is in contrast to true ambiguity. If there is one true ambiguity in the input sentence, the correct identification is for the parser to produce two parses to express the ambiguity. “Pseudo-ambiguity” means that a sentence is not ambiguous in people’s understanding, but the parser still outputs several parses, which are all considered to be grammatical.

The problem of pseudo-ambiguity is a recognized challenge in single-layer parsers. Even for a simple sentence, traditional parsers based on context-free grammars often produce dozens or even hundreds of parses. Most of the time, the differences are so subtle that they don’t make difference in communication. The consequence is that very few true ambiguities are hidden among many false ambiguities. In effect, the parser loses the ability to parse ambiguity completely. Of course, such a single-layer grammar approach is difficult to be truly deployed in parsing and semantic decoding of big data.

Q: Lao li, I think I have now started understanding the drawbacks of the single-layer parsers you discussed. Could you elaborate on why it is not a feasible model for real-life applications?

A: Too big a search space, and too many parses.  In essence, the system makes explicit all possibilities, low probability events as well as high probability events all in the same search space,. The whole idea is that it makes sense in theory, that any small possibility is a possibility, and then from a perfect theoretical model, you can’t block any path in advance. This way, you have to save all the search paths until the global path is complete. And this leads to the fact that the space where the resolution is, in fact, a combinatorial explosion space, so there’s no efficient corresponding algorithm.

Q: why isn’t a single layer suitable for modularity?

A: there is no modularity at all in a single layer. The approach of a single layer means that the whole resolution is a module, and a single layer means non-modularity. Its theoretical basis also has some truth. It says that language phenomena are interdependent, and a complete language analysis scheme cannot completely separate them. As low as participles and as low as the boundaries of basic phrases, these shallow structures are difficult to determine outside the overall structure of the sentence. This is because a locally sound structure can always be overridden in a larger context.

(for instance)

From this interdependent, locally subordinated global perspective, structural analysis, once cut up, creates a chicken-and-egg problem. To deal with this problem of interdependency, theoretically, a single-layer model makes sense. In a single-layer system, all the interdependent phenomena are explored in the same plane according to the global paths as solutions. That forms, of course, an argument against multiple layers, that language phenomena are interrelated, so we can hardly treat them by first cutting them into multiple layers.  Interdependency in a modular pipeline is very susceptible to “premature pruning” of branches. To be honest, if we leave aside the pseudo-ambiguity problem and the non-linear speed from the single-layer system design for a moment, it is quite difficult to refute the above argument against the multi-layer system design. However, single-layer is not very feasible in practice. The consequences of a single layer far outweigh the benefits, and the concern on premature pruning in a multi-layer system actually has its own countermeasures.

Q: Your point of view is not quite the same as my understanding of modularity. In my understanding, a module is actually a concept without hierarchy. Just like with bricks, you can build roads, it’s like a complete horizontal jigsaw puzzle of bricks. Of course, you can also build a wall in which case bricks are hierarchical. It goes up one level at a time. So, in my understanding, modularity and hierarchy do not have to be correlated. Does it make sense?

A: Yes, you’re right. Modules are bricks. They do not have to have layers. If there are layers, like building a wall, then there has to be a sequence architecture of modules. But it is also possible that there is no sequential dependency between the modules and the layers. The modules are defined from an angle beyond layers, which is like paving a road. Road paving does not have to be serial, which can be parallel. In practice, they may as well still be arranged in a uniform pipeline, combining the style of road paving with the style of wall building.

Modularity itself is a seasoned practice that comes from software engineering.  That is, when building a complex system, we always attempt to divide tasks into subtasks and sub-subtasks. Modularity makes the development process more tractable and easier to maintain. Natural language is undoubtedly a fairly complex system. Faced with a complex object like language, a good way is to emulate the approach that has worked in engineering for years. That is to say, the task should be reasonably decomposed and cut into modules as far as possible to implement modular development.

Thanks to http://fanyi.youdao.com/ based on which this translation is revised and polished by the author himself.  This is the first chapter of our book on NLU which consists of 10 interviews on key topics of AI symbolic logic as used in natural language parsing. Stay tuned.

[References]

S. Bai: Natural Language Caterpillar Breaks through Chomsky’s Castle

 

转载:白硕:关于基于规则方法的反思(2)

关于基于规则方法的反思(2)

【问3】基于规则方法的主流技术路线是什么?它的主要贡献是什么?

【答】追溯历史,可以发现:基于规则方法起源于结构主义语言学派,伴随生成语言学派在语言学界占据主导地位而在计算语言学界达到鼎盛,伴随因特网的兴起而被基于统计的方法逐渐趋于边缘化。因此,谈到基于规则方法的主流技术路线,特别是作为基于统计方法对立面的基于规则方法的主流技术路线,一定是生成语言学派的核心学术思想及其在计算语言学中的实践和发展。在总结基于规则方法的主流技术路线的得失的时候,我们必须不带偏见地肯定它对语言学和计算语言学的主要贡献。

如果以为生成语言学派的主要贡献是搞清楚了哪一门具体语言里有哪些具体规则,那就大错特错了。笔者认为,生成语言学派最大的贡献,在于以一种可证伪的方式告诉我们,表示规则的形式化框架应该是什么。通俗地说,就是告诉我们“规则应该长什么样”。一条具体的规则不好,你可以在这个框架之内废了它。一个具体的规则体系不好,你也可以在这个框架之内另起炉灶。只要在原有表示规则的形式化框架内做有限的改良有成功的希望,一般来说就不要去动这个框架。但是如果表示规则的形式化框架离开语言现实太远,局部的修修补补难以充分适应语言现实,我们就必须考虑废掉这个框架了。看看乔姆斯基的学术轨迹,可以发现,几十年来他一直在对“规则长什么样”进行着调整,在战略上不断用新我否定着旧我,但在战术上,他却很少就一门具体的语言到底该有哪些规则发表看法。即使关于英语说到了一些规则,那也是为了解释他的普适原则和理论而举的例子。

那么,在生成语言学派看来,规则究竟应该长什么样呢?在笔者看来,他们对规则有如下一些基础假设:

    1、  存在有限个基本的句法范畴作为规则表示的基本单位。它们既包括词类,也包括词组的类。同一句法范畴下的实例,在组句能力(分布)上必须有共性。

    2、  句法范畴从左到右的线性排列模式,决定对这个模式的“重写(rewrite)”结果。

    3、  语言的合法成分都是有限次匹配上述从左到右的线性模式、施用重写的产物,依照对重写的限定不同,分为不同的规则体系类型。比较常见的是上下文无关类型的语言及其规则体系。

    4、  句子是一个特殊的句法范畴,它的实例都是目标语言的合法语句,目标语言的合法语句都是它的实例(all and only)。

   很遗憾的是,有些人在用统计方法的优点来批评基于规则方法的缺点的时候,并没有分清楚他们批评的是生成语言学派的规则表示形式化框架本身,还是批评这个形式化框架下构建的某个具体的规则体系。比如,有人说“打扫卫生”不能解释为“把卫生给打扫了”,因此述宾结构不成立,因此规则方法不成立。这样的论证是可笑的。

    “规则长什么样”是基于规则方法的最核心问题。如果具体规则错了,可以替换以新的规则;如果关于规则长什么样的假设错了,要调整的则是这种形式化表示框架本身,同时也会连累到许多个基于这种形式化表示框架的具体规则体系。

    关于“规则长什么样”的一般性假设一旦确定下来,就有了对其在计算上予以实现的理论和实践。具体说就是相关的形式语言、自动机以及算法理论。这些理论是生成语言学派关于规则长什么样的一般性假设在计算领域的推论,对于基于规则的自然语言处理系统的实现有一定指导意义。

    但是,在计算语言学领域,对生成语言学派关于“规则长什么样”的一般性假设,也并非照单全收,你假设,我实现。实际上,为了更加贴近语言实际,在计算语言学领域发生了多次对“规则长什么样”的局部修正。词汇功能语法(LFG)、广义短语结构语法(GPSG)、中心词驱动的短语结构语法(HPSG)、依存语法(DG)、树嫁接语法(TAG)等等,都可以认为是对生成语言学派关于“规则长什么样”的假设的修正案。“次范畴”和“合一”的概念,已经成为基于规则阵营中人尽皆知的概念。“依存”的概念则在一定程度上突破了模式必须是句法范畴从左到右依次排列的假定,允许一定的不连续性。它们到底把生成语言学派关于“规则长什么样”的假设向前推进了多远,也许今天评价还为时尚早。但是,所有这样一些局部性的修正案并没有触动基于规则方法的根本缺陷,应该是许多仁人志士的共识。

转载:白硕:关于基于规则方法的反思【连载1】

【立委按】今天才发现白硕老师的这个很久以前的NLP系列问答,相阅恨晚,叹服其洞见远见,拍案叫绝。一开篇就心有戚戚焉,字字珠玑。

“败的一方是基于规则的方法吗?我认为不是。最多只能说,是基于规则方法当中的某种主流技术路线。但是,这种主流技术路线,不足以概括基于规则方法的全部,也不足以决定基于规则方法的未来。特别是,基于规则方法和理性主义不存在必然的逻辑捆绑。人们对基于规则方法有诸多误解,基于规则方法的主流技术路线也有诸多弱点和缺陷,值得一切尊重语言事实、尊重规则的人进行深入的反思。我们这个问答系列,就是试图在对基于规则方法进行深入反思的基础之上,探索基于规则方法未来发展道路的一个尝试。笔者认为,基于规则方法的处境前所未有地艰难,但也正在孕育着巨大的机会,“抄底”在即。”

特转载学习。

关于基于规则方法的反思【连载1】

 

【问1】:基于规则方法和基于统计方法,被称为自然语言处理的两大“阵营”,并且上升到理性主义和经验主义“之争”的高度。请问,这个概括是否准确?两大阵营“之争”到目前为止是否已经见分晓?

【答】:确实有两种技术路线之争。从上个世纪九十年代初阵营划分确定以来,从主流杂志、主流文章、主流技术、主流产品等各方面看,其中一种大获全胜。这是一个基本的事实。任何进一步的讨论,都首先要基于这个事实。

进一步追究,胜的一方,确实是基于统计的方法。那么败的一方是基于规则的方法吗?我认为不是。最多只能说,是基于规则方法当中的某种主流技术路线。但是,这种主流技术路线,不足以概括基于规则方法的全部,也不足以决定基于规则方法的未来。特别是,基于规则方法和理性主义不存在必然的逻辑捆绑。人们对基于规则方法有诸多误解,基于规则方法的主流技术路线也有诸多弱点和缺陷,值得一切尊重语言事实、尊重规则的人进行深入的反思。我们这个问答系列,就是试图在对基于规则方法进行深入反思的基础之上,探索基于规则方法未来发展道路的一个尝试。笔者认为,基于规则方法的处境前所未有地艰难,但也正在孕育着巨大的机会,“抄底”在即。

【问2】:那么,语言是有规则的吗?语言是可以用规则来描述的吗?

【答】:语言有多个层次。为简化问题起见,以下“规则”仅指词法和句法规则,更深层的语义语用规则暂不考虑在内。

首先让我们看一看“规则”及其对应的英文术语rule的含义。在英语中,规则(rule)与尺子(ruler)是同根词。在汉语中,“规”是圆规,“矩”是角尺,二者都是依据某种标准产生几何图形的工具,而“则”具有“明示的条文”的含义。英语中Rule还兼有统治的意思。在现代汉语中,作为名词的“规矩”和“规则”同义,但“规矩”比较口语化,“规则”更具书面语风格。“规则”的意思是“对一个社会群体有强制约束力的明示的条文”。

规则的强制约束力来自于两个方面。第一个方面是来自社会的约定。所谓约法三章,所谓社会契约,说的都是有人来制定并遵守规则。不方便拿到台面上但在台面下仍然被讲究和遵守的是“潜规则”。第二个方面是来自自然规律的强制。由人类社会中热衷科学的人士发现自然规律,用人类的概念体系表述出来,在应用科学知识的场合比如工程设计中遵守。规律是客观的,规则是人类用自己的概念对规律作出的表述。囿于人类认知能力所限无法清晰表述但仍在暗中起作用的是“隐规则”。

具体到语言,语言是人们约定俗成并与时俱进的符号交际系统。既然约定俗成,那语言就是靠口耳相传,本质上就不需要什么明示的条文,也不需要人们协商产生,把小孩子放到一个现成的语言环境,小孩子自然就能学会。一些部落只有语言没有文字,一些社会缺乏甚至全无学校教育,但这都不妨碍他们自发地形成和传承语言。既然与时俱进,那语言就确实在社会的发展中改变着自己的模样,一些词死了,另一些词新生出来;一些现象淘汰了,一些现象新冒出来。旧瓶也可能装新酒,老树也可以发新芽。一些网络新词层出不穷,一些语言在经历了不同历史时代后形式上出现了巨大变异。

这样看来,语言是一种不以单个个体的意志为转移的客观存在。作为单个个体只能适应而不能约定,因此语言的规律性有跟自然规律相像的一面;语言又可根据群体行为交互作用“涌现”新要素,因此具有大时间跨度下、大群体流通中产生的人为约定性的一面。在人们对一种语言的认识能力不足之时,拿不出有关这种语言的完整的明示的规则体系,但这不表明不存在暗中起作用的“隐规则”。

因此,语言和规则,从语言诞生之始,就注定存在一对深刻的矛盾。任何所谓的语言规则,都是人(语言学家)总结出来的语言学知识,又要求人(语言使用者)去遵守的。理论上,人不总结这些规则,原则上也不妨碍语言的传承。人不把规则明示出来,这些规则也会隐性地发挥作用。仅仅从这个角度看,人总结的语言规则,确实显得可有可无。但另一方面,语言的相对客观的规定性又持续稳定地发挥着不以人的意志为转移的作用,人类求知好奇的天性总会催生一些语言学家,试图用明示的语言学知识来揭示这种作用的奥秘,而人类跨语言交流、人机交流、机机交流的需要则进一步昭示这种语言学知识的巨大社会价值。

所以,语言有客观的规定性,人类有必要总结语言学知识,语言学知识采用规则的形态,是人类对自身语言规律好奇心发展的需要,也是人类为解决人际和人机之间以语言为媒介进行沟通的需要。至于规则长什么样,完全要根据语言的现实来确定。任何先验确定规则长什么样的行为,都是不足取的。在最广泛的意义上,不仅生成语法的规则是语言规则,统计模型、转移概率、词性标注,也都是语言规则。

 

from http://blog.sina.com.cn/s/blog_729574a0010134bq.html

 

《马修·赫松梅:人工智能研究人员声称机器学习是炼金术》

《人工智能研究人员声称机器学习是炼金术》
在领英上分享
马修·赫松梅。2018年5月3日上午3时

梯度下降依赖于试验和误差来优化算法,目标是3D场景中的最小值。亚历山大·阿米尼丹尼拉·鲁斯。麻省理工学院

Ali Rahimi是加州旧金山谷歌人工智能( AI )的研究人员,去年12月,他的研究领域受到了猛烈抨击,并获得了40秒钟的掌声。拉希米在AI会议上说,计算机通过反复试验学习的机器学习算法已经成为一种“炼金术”。他说,研究人员不知道为什么一些算法有效,而另一些算法无效,他们也没有严格的标准来选择一个人工智能体系结构而不是另一个。现在,在4月30日于加拿大温哥华举行的国际学术会议上,拉希米和他的合作者发表了一篇论文,记录了他们所看到的炼金术问题的例子,并提供了加强人工智能严谨性的处方。

拉希米说: “这是一个痛苦的领域。我们中的许多人都觉得我们在使用一种外星技术。”
这一问题与人工智能的再现性问题不同,后者由于实验和出版实践的不一致,研究人员无法相互复制结果。它也不同于机器学习中的“黑盒”或“可解释性”问题: 解释特定人工智能是如何得出结论的困难。正如Rahimi所说,“我试图区分机器学习系统是一个黑盒,而整个领域变成了一个黑盒。”

他说,如果不深入了解构建和培训新算法所需的基本工具,创建AIs的研究人员就像中世纪炼金术士一样,只能依靠道听途说。加州山景城Google的计算机科学家弗朗索瓦·乔莱特补充说: 人们被货物崇拜活动所吸引,依赖于“民间传说和魔法咒语”。例如,他说,他们采用pet方法来调整他们的AIs“学习率”——每次出错后一个算法能自我纠正多少——而不理解为什么一个算法比其他算法更好。在其他情况下,人工智能研究人员训练他们的算法只是在黑暗中跌跌撞撞。例如,它们实现所谓的“随机梯度下降”,以便优化算法的参数,以获得尽可能低的故障率。然而,尽管有数以千计的关于这一主题的学术论文,以及无数应用这一方法的方法,这一过程仍然依赖于反复试验。

rahimi的论文强调了可能导致的浪费精力和次优性能。例如,它指出,当其他研究人员从最先进的语言翻译算法中剔除了大部分复杂性时,它实际上更好、更有效地从英语翻译成德语或法语,这表明它的创造者并没有完全理解这些额外的部分对什么有好处。相反,伦敦Twitter的机器学习研究员费伦茨·胡塞尔说,有时候算法上附加的“铃铛和口哨”是唯一好的部分。他说,在某些情况下,算法的核心在技术上是有缺陷的,这意味着它的好结果“完全归功于应用在上面的其他技巧”。

rahimi为学习哪些算法最有效以及何时工作提供了一些建议。首先,他说,研究人员应该像翻译算法那样进行“消融研究”:一次删除一个算法的一部分,以查看每个组件的功能。他呼吁进行“切片分析”,其中详细分析算法的性能,以了解在某些领域的改进可能会在其他方面产生什么成本。他说,研究人员应该在许多不同的条件和设置下测试他们的算法,并且应该报告所有这些算法的性能。

加州大学伯克利分校的计算机科学家、拉希米炼金术主题演讲的合著者本·雷希特说,人工智能需要借用物理学的知识,在物理学中,研究人员经常把一个问题缩小为一个较小的“玩具问题”。他说:“物理学家在设计简单的实验来找出现象的解释方面很了不起。”。一些人工智能研究人员已经采取了这种方法,在处理大的彩色照片之前,对小的黑白手写字符的图像识别算法进行测试,以更好地理解算法的内在机理。

伦敦DeepMind公司的计算机科学家csaba szepesvari说,这个领域还需要减少对竞争性测试的重视。他说,目前,如果报告的算法超过了某个基准,发表论文的可能性要比论文揭示软件内部工作原理的可能性大。这就是花哨的翻译算法通过同行评审取得成功的原因。“科学的目的是创造知识,” 他说。“你想生产一些其他人可以接受和利用的东西。” ”

不是每个人都同意拉希米和雷希特的批评。纽约Facebook首席人工智能科学家yann LeCun担心,把太多的精力从前沿技术转移到核心理解上,可能会减缓创新,阻碍人工智能在现实世界中的应用。“这不是炼金术,而是工程,” 他说。“工程总是凌乱的。”
雷希特认为这是一个有条不紊的冒险研究的地方。“我们都需要,”他说。“我们需要了解故障点在哪里,以便我们能够建立可靠的系统,我们必须开拓前沿,以便我们能够拥有更令人印象深刻的系统。”

张贴于:技术

搜狗MT(https://fanyi.sogou.com) 译自(translated from):
http://www.sciencemag.org/news/2018/05/ai-researchers-allege-machine-learning-alchemy?utm_source=sciencemagazine&utm_medium=facebook-text&utm_campaign=aialchemy-19247

 

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

李:
大S小s 即所谓双主语句,又叫话题句、主谓谓语句,是中文文法非常著名的现象,与西方语言很不同的一种句式。例如:

她个儿高 盘儿靓 心眼儿还特好

“她”是主语 是话语研究(discourse study)中的话题(topic),谓语的内部结构里面还有个小主语,所以叫主谓谓语(主谓结构整体做谓语)。中文里面特常见,翻译成英文试试?没有对应的句型 只好转弯抹角换个说法 不是换词汇 就是换结构。

She is tall, pretty and kind.
She is tall, with a pretty face and kind heart.

硬译过去 就惨不忍睹:

* She body tall face pretty and still heart kind.

老外不是看不懂这种洋泾浜,但文法错乱难以忍受。好回到今天正题,再看一个实际例子:

“和我在超市买的速溶咖啡口味不同”

买的是咖啡,不是口味,可真要辨别清楚,不容易,或不值得。“口味不同” 貌似可以成为一个复合谓语,但这样处理,需要协调前面的 possessive NP 的情形,比较:

1. 速溶咖啡【口味不同】
2. 速溶咖啡的【口味不同】

【口味不同‘】做了谓语,例2中那个“的”字就悬在那里了。如果硬要建立 possisive 的关系,从 PSG (短语结构文法)来看,就违反了关系不得交叉的原则:

  • <(速溶咖啡)的 [ 口味 > 不同 ]

有意思的是,这类交叉关系的逻辑困境,换了 DG(依存关系文法) 表达法,就烟消云散了:

只要允许同一个儿子(“咖啡”)可以有两个老子:做“不同”的主语“大S”,做“口味”的定语 Mod,依存关系里面逻辑纠缠的问题就迎刃而解。道理就是,PSG 是在线性流上面标记,很容易陷入边界陷阱。而更加逻辑化表达的DG则是增加一个维度,head (头词)可以上升为老子(父节点),空间的伸展化解了逻辑形式的矛盾。

白:
交叉要有前提条件,就是过继。“口味”也是有价名词。同理。“王冕死了父亲”,“父亲”的坑过继给“死”,吃一吐一,还留着一个坑给王冕。操作层面算在动词账上,实质层面算在有价名词账上。

李:
以前遇到的左右两个修饰语争抢中间的 head 的伪歧义也是同理,在 PSG 里面不可化解,于是成为歧义(其实是没有意义的“伪歧义”),但到了 DG,head 沿着 Y 轴上升为老子,歧义就自然消失:mod1 H mod2

(1)  ((mod1 H) mod2)
(2)  (mod1 (H mod2))

到了 DG,就是:

(mod1 (H) mod2)

这个 (H) 实际上是升上天了,mod1 mod2 也就没得抢了。

其实 SVO 也是如此,文法书一贯的教导都是: VO 先形成 VP 做谓语,才有资格与主语 S 对谈。但 DG 其实不管,动词中心论说的就是把 V 推到皇帝的宝座,S 和 O 不过左右丞相的区分而已。

所以:((S V) O) 其实不比 (S (V O)) 逊色,反正是两个坑,谁先跳进去,其实对于逻辑和理解是无所谓的。只是到了具体语言,这个次序在句法上可能有个方便和不方便的区别。强调句法的人,可能觉得 VP 先成立 对于语言现象的概括和捕捉更加方便和精炼,但实际上这树怎么画没有想象中的那样绝对。

“和我在超市买的速溶咖啡口味不同”

“和咖啡不同” 还是 “和口味不同”?显然是口味。但是如果短语结构是那样的话,“买”的就是“口味”而不是“咖啡”了(见上图)。PSG parsing 常常遇到这种忠孝不能两全的困境。如果硬要 “买咖啡”的 VO 和谐,把“口味”从VP中踢出去,前面加的那个”和“字,就找不到北了,因为“和”所引导的比较对象是“口味”而不是“咖啡”。矛盾不矛盾?

白:
张三和李四不是同一个老师。
张三和李四不是情敌。

买的口味,肯定错了。买的咖啡、口味,传统说法是大小主语的关系。咖啡-口味能作为大小主语,就不作为定中关系。即使作为定中关系,反填也优先于定中。

李:
说的就是难以两全:

1. 和我在超市买的速溶咖啡口味不同
2. 和我在超市买的速溶咖啡的口味不同”

照顾了1 就照顾不了 2.

(我(身体好) 和 ((我的身体)好) 也是如此。身体好先行成为谓语,就把 “的” 字悬在空中了,当然我们也可以强行,把小词用 X 抹去,过河拆桥:

(我S 的X (身体好)Pred)。

白:
“孤苦伶仃的王冕父亲死了。”

谁孤苦伶仃?

“不符合规定的流程取消了。”

不符合规定,还是不符合流程?

李:
不符合规定的流程, 取消了。
不符合所规定的流程, 取消了。

白:
“的”的辖域本来就有歧义。

李:
或者就霸王硬上弓,出现“的”就X抹去,等到将来建立“所有”关系(反填逻辑语义)需要借助“的”的时候,再复活它。

白:
大小主语关系和定中关系,落到有价名词身上,填坑效果是一样的。区别只是名份的区别,没有实质意义。“的”字的介入,只是在没有实质意义的区别天平的一端加重了砝码而已,结果做出的区别仍然是没有实质意义的。

李:
“的”的句法默认就是 possessive,突然悬空了,句法上的确不好看。两害取其轻,管他“的”不“的”,见贼杀贼,抹去就抹去罢。

白:
所以伟哥建议去掉“的”在这个具体场合有他的道理。问题是,如果能判断出属于这个具体场合,也就等于解开这道题最难的部分了。感觉画树纯粹是面子工程,就该直接画图,管他交叉不交叉。

李:
实际上是把显性句法形式的定语关系,与隐性的逻辑语义所属关系,都化作隐性对待了。使定中有形式,但无PSG表达。属于不得已为之的。最终还都是图,而不是树。图比树多了个维度,摆脱了语言线性次序的束缚。

白:
画树只是为了对应栈操作。实际上栈操作可以通过“过继”机制实现有控制的交叉。也就是以树为“拐棍儿”,达成图的目标。把树神圣化、教条化,就走向反面了。

李:
PS树从来就是拐棍。用的时候,还要再转一次。

白:
所以,有没有桥,和有没有路,是两回事。没有直通的桥,还可以有借路的桥。过河拆桥,是拆的借路的桥。最终看到的和最终关心的其实是路。

李:
PSG 的交叉把边界节点算进去了,到了 DG 边界节点不算 两头相安无事。真正交叉的逻辑陷阱 不应该包括边界点 因为逻辑层是脱离了线性次序的,思维的本性就是天马行空,无拘无束。

白:
“王冕父亲死了”无论把“王冕”和“父亲”的句法标签确定为“定中”还是“大小主语”,都显得多余。它们之间逻辑上只有领属关系。

李:
当然 的确也有合理的交叉 可以跳进其他结构的内部去这种。但毕竟统计上罕见多了 而且凡是出现那种情形 人的理智和情感就多少感觉拧巴。换句话说 跳进内部 里通外国 干涉别国内政 必须要有非常强大的理由 不是儿戏。

在长期批评中文的种种文法不严谨的缺点以后,可以为中文句法表达的丰富性点个赞了。寸有所长 有些优点是缺陷的孪生子。说的是谓语的丰富性。与欧洲语言谓语必须由动词当纲不同 汉语谓语丰富多彩多了。名形动三大类 NP、AP、VP 都可以上台主演谓语的戏,PP 更不要说,介词跟情态词类似,是副动词,做谓语都天然合理。更绝的还有这“主谓谓语”。

这小护士大眼睛 盘儿靓 爱读书 一心为病人 非常漂亮暖心。

S【这小护士】Pred【NP(大眼睛) sV(盘儿靓) VP(爱读书)PP(一心为病人) AP(非常漂亮得暖心】

NP sV VP PP AP 连在一起 做并列谓语 毫无违和感。厉害了,汉语。搁在英语 就要叠床架屋了。

那个味道好
(i) That taste is good
(ii) The taste of that thing is good.

这么简单的句子也有歧义了。虽然一般人不问这里面的区别,对歧义无感,但汉语的主谓谓语句式的确提供了另一种解读的可能性。第二种解读在口语里面,“那个”后略有停顿(应该加逗号或留个空格):“那个 味道好”。

汉语中,主谓谓语居然可以嵌套,一个大S,一个中s,和一个小s:

(i)   小 s:味道好
(ii)  中 s:菜味道好
(iii) 大 S:这场宴会菜味道好,饭不怎么样。

【这场宴会S【菜s【味道s 好】】】

这个现象真地有些奇特,头小身子大,是集体领导的奇葩。凡遇到中文特别的句法,神经翻译就真地神经了:

 

【相关】

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

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

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

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

《语义三巨人》

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

《朝华午拾》总目录

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

Me:

NLP:人工智能的诗与远方
好像是白老师的最新指示。刚在微博看到。金句连珠,隆重推荐。行文如流水,简洁 干净 深刻。

无论使用什么样的句法分析技术,有一点必须明确,就是句法本身是不自足的。细粒度描述的句法不具备鲁棒性和可行性,而粗粒度描述的句法往往必然带有伪歧义。

“粗粒度描述的句法往往必然带有伪歧义”没疑问,为什么“细粒度描述的句法不具备鲁棒性和可行性”?是的,细粒度描述的句法不具备完备性,但鲁棒性与细不细的关系何在呢,可行性就更可以商榷了。

细颗粒的极致就是“词专家”,没有看到不鲁棒或不可行的问题,就是琐碎,劳动量大,概括性弱。

“句法本身是不自足的”,是反乔姆斯基的论点,反得好。但与鲁棒和可行不是一类概念。白老师自己给的简要定义是:鲁棒性(对灵活语序和修辞性失配的适应性)。

鲁棒与规则层级体系(hierarchy)关系大,与规则本身的颗粒度关系小。语序说到底是(显性)形式条件,语义适配(语义相谐)也是(隐性)形式条件, 所有的形式条件都有弹性(优选语义),可松可紧,这就是层级安排因而鲁棒的根本原因:紧的条件精确但不鲁棒,松的条件鲁棒但不精确,配合得好,就可以又鲁棒又精确,或者至少维持在一个兼顾鲁棒和精准的准入门槛之上。

白老师的《NLP:人工智能的诗与远方》值得咀嚼。标题好文科、浪漫。但这是一篇严肃的高阶科普。一如既往,白老师的文字,举重若轻,高屋建瓴。

wang:
在我看来,李老师最后这一段描述,和白老师对句法所描述的,是一致的,并不矛盾。只是选的视角不一样罢了。完全同意李老师的弹性适应,这一点我也是这样做到

白:
1、琐碎到不合算就是不可行;2、一头扎进细粒度,一定会失去对灵活语序和修辞性失配的宏观把握;3、分层就是在粒度方面保持弹性的good approach之一。顺便说一句,这个是节选版本,原稿比这干货多得多。

李:
原稿在哪?

wang:
期待白老师,合适时机放出

李:
1. 琐碎到不合算其实很少存在:
如果是狭窄domain(譬如天气预报),琐碎是可行的,也就谈不上合算不合算。

白:
狭窄 domain甚至不需要deep parsing

李:
如果是 open domain,几乎没有琐碎单打一的。总是在一个大的框架下(better,层级体系的设计中),利用琐碎(细颗粒度)做增量修补。

白:
这就是分层了

李:
换句话说,琐碎不可行,最多是一个吃饱了不饿的真理。这也就回答了第2个问题:一头扎进去,单打一,做系统没人这么做。

白:
不是人人如伟哥般真理在握的。从外面搬来开源系统就想比划的不知道有多少,伟哥这是高处不胜寒。

李:
“3、分层就是在粒度方面保持弹性的good approach之一”, I cannot agree more

期待看原稿:这篇稿子太过简洁,很多地方真地是点到即止。

好,再精读一遍,摘录一些当面请教白老师,摘录可classify 为:1. 可圈可点;2. 可商榷;3. 没看懂

鉴于自然语言丰富地表现了人类的认知、情感和意志,潜在地使用了大量常识和大数据,自身在算法和模型上也多采用各种启发式线索,目前一般均把自然语言处理作为人工智能的一个分支

“算法和模型上也多采用各种启发式线索”:heuristics?

白:

李:
这个总结直感上很精到:无论什么模型,规则也好,统计也好,联结也好,其实都是反映 heuristics,英语没问题,汉语读者大概搞不清“启发式线索”的不在少数,这个术语以前论过,从来就没有好的译法。

白:
启发式这个翻译,在中国大陆的大学里正式的人工智能课程里应该是比较通行了的。

李:
第一张图,机器翻译和人机接口作为NLP的现实代表,很合适。但什么叫“纯人机对话”?

白:
就是没有任何grounding的人机对话。

李:
哦,以前是玩具 bot,现在是聊天机器人,将来可以落地(grounding)到老人陪护或心理疏导。

落地艰难:非良定义

什么样叫非良定义?点解?
不能完备定义,只能例举,或就事论事?

白:
说不清标准,说得清答案。ill-defined
知道输入对应什么输出,但不知道依据什么得到输出。

李:
我其实想问:这里想说明什么?是说NLP落地很难,主要是因为目标不明确吗?

白:
非良定义和落地艰难是并列关系不是因果关系。

李:
这句赞 赞:对于各种自然语言来说,大体上占到2型的很少但很不规则的一部分,但部分现象呈现上下文相关性,会在局部对2型有所突破。这就是笔者所说的“毛毛虫”现象。

其实2以降“很少”到几乎可以忽略(或绕道而行)。“突破”一般不必是着力点。

0型语言是翻译为“递归语言”吗?文法上,0 型是短语结构文法。这个其实也很 confusing,因为层级体系是蕴含关系的:3 也属于2,1和0,但窄义或另义的 PSG或短语结构图,是相对于 DG 而言,PS 是 constituency 的同义词,讲的是“兔子吃窝边草”的路数,而不是 DG 的兔子不必吃窝边草的逻辑跳跃的路数。

白:
PSG的原始定义就是0型。窝边草是对的,但窝边草怎么来的有玄机。把一堆窝边草重写为另一堆草,这就是0型。

李:
从语言类型学角度,一般而言,PSG 适用语序相对固定的语言,英语、汉语等;DG 适用自由语序的语言(如 俄语)。0 型 从复杂度角度,不是没有章法么?爱怎么整都行。因此,最有章法的正则自然也属于0型,有限制的一定落在没有限制之内。

白:
只是对重写有不同的限制,依据都是窝边草

李:
但学习这个层级体系的不少人,可能本能地把层与层隔绝在互不包含的院墙里(也许只是文科生容易这样陷入?)

白:
这篇文章不是讲给没学过类型分层体系的人的。计算机专业学过形式语言与自动机或编译原理的都应该不陌生。

李:
不懂:“实际上,鉴于欧氏空间具有良好和丰富的数学工具可用,语言/文本的向量化努力是跨越统计和联结两大阵营的”。

不过,这不是行文的问题,应该是受体的知识缺陷,可能讲解了还是不懂。

白:
欧氏空间这段,详解被删了。统计的典型是LSI,联结的典型是词嵌入。

李:
word embedding 最近体验了一点,是有点神奇。

可圈可点:这段时期之所以NLP既远离“人工智能”的招牌,也远离“计算语言学”招牌,是因为人工智能招牌在当时并无正面贡献,而语言学家在经验主义范式下不得施展甚至每每成为负担。

这是对历史的精确描述。AI 曾经像个丑小鸭(或瘟神),人人避之不及。计算语言学名不副实或有名无实,久矣。

白:
原来这杆旗下的人还要继续混日子啊

李:
后面一段是革命乐观主义和浪漫主义,蛮鼓舞人心的:

深度学习技术以摧枯拉朽之势横扫语音、图像识别和浅层自然语言处理各类任务,知识图谱技术为语义知识处理走向各行各业做好技术栈和工具箱的铺垫,人工智能招牌强势的王者归来已经在所难免,自然语言处理技术也自然地成为了这王者头上的王冠。这是因为,语音和图像识别大局已定。自然语言处理已经成为一种应用赋能技术,随着实体知识库的构建、知识抽取和自动写作在特定领域的实用化和对话机器人从对接语料到对接知识图谱的换代,正通过新一代人工智能创新创业团队,全面渗透到人工智能应用的各个角落。

其中强调两个支柱:(i)深度学习的算法;(ii)知识图谱的表示。
其实有点格格不入:前者是经验主义的极致,后者是理性主义的表现;前者显得高大上,后者显得平庸但实在。

白:
所以波粒二象性啊

李:
by the way, “对话机器人从对接语料到对接知识图谱的换代”这是在下目前的重点课题或挑战。

知识图谱的概念被谷歌炒热以后,其实稍微拔高一点看,没有多少“新意”。不过就是“结构化”的具象而已,结构的图示(visualization)化、大众化而已。图谱早就植根在乔姆斯基符号体系以及其他种种语义流派的传统里,通过MUC的信息抽取的语用落地,导致谷歌利用搜索把它活生生展示给亿万受众,激发了大家的想象。

白:
而且只是一小部分。被删掉的部分讲了哪些地方是“一小部分”不能涵盖的。

李:
对的,被炒热的知识图谱就是结构化中的一小部分。也是最简单的一部分。知识图谱是很平民化的东西,讲到底就是一个烧钱烧资源的知识工程。典型代表就是一个多少亿的三元组,还不如 tree bank,从数据结构看。更不如各种规则 formalism,最简单的产生式规则也有 if then。

白:
挑战性的东西不少,看不到就没办法了。不能光看表达力,还要看技术栈、工具箱。后者丰富前者贫乏,仍可以做大事情;前者丰富后者贫乏,只能做玩具。

李:
是 是:“后者丰富前者贫乏,仍可以做大事情;前者丰富后者贫乏,只能做玩具。”

自然语言处理从浅层到深层面临范式转换,还处在对接情感计算与常识计算的战略性要地的关键位置。谁能拔得头筹,谁就能在当下的人工智能“军备竞赛”中处于有利地位。

深层解析需要常识计算我们在本群讨论中见过无数例证了。需要情感计算也见过一些。

基于统计的范式繁荣了近二十年,终于在2010年前后被同为“经验主义”学派的基于联结的范式所全面取代。这是深度学习算法显现的巨大威力,也是数据和算力积累到临界点的一次综合性的爆发。

据说,有一代人有失落感,他们当年横扫千军如卷席,各种算法花样翻新,从朴素贝叶斯,HMM,CRF,MaxEnt,。。。各种参数设计身怀绝技,突然九九归一,以前的绝技似乎不再闪光。这种失落不亚于语言学家面对统计学家长驱直入而带来的边缘化的失落感。历史循环还是报应?真是 30 年河东,20 年河西。

白:
没那么不堪吧,有啥用啥,干嘛一定站队。

李:
目前,基于联结的范式风头正盛,但“深度”自然语言处理的需求压力之下,“理性主义”学派以某种方式再度回归,实现“波粒二象性”的有机结合,也是可期待的。

这个有机结合,NLP老司机呼吁较多,新一代的联结主义者似乎无暇他顾。当然,无暇不仅仅是“攻城掠地忙”(毛委员打土豪那阵,农民革命就曾“分田分地忙”),也因为这种“有机”结合,真心不容易。

看今后10年吧。

词法分析领域绝非基于词典的分词这么简单,这个领域还有大量有待攻克的难关,有些难题已经与句法分析搅在一起,非统筹考虑是无法单独推进的

这个观察到位,但真认识到的人不多。特别是汉语,在进入句子结构之前,基本分词之后,还有一个广阔的地带。其中不乏难题。有些是致命的。领域化在这个方面也有很大的挑战。譬如,看电商的标题,那种 sub language 简直就不是汉语。

白:
这一节删掉甚多。提到了词性标注、命名实体识别、形态还原、构词法。形态还原中特别提到了离合词。

李:
的确删太多了。

还有一个可以探讨的事儿:觉得 DG 和 CFG不好相提并论。DG 本身不是算法,只是表达法。

白:
都不是算法

李:
CFG 比较直接地蕴含了算法,譬如 chart parsing,DG 不蕴含任何方法,也许隐隐蕴含了自由语序的匹配方式。从表达法(representations)角度,DG与PSG并列,是两套表达体系。声称 DG parsing 的人,其实用的 formalism 与做 PSG parsing 的人无异,逃不过乔姆斯基的佛掌。anyway,只是感觉大家在讨论中这方面有时候似乎容易概念混淆。从表达法来看,也没有单单的 CFG,CFG 属于 PSG,所以表达法只有 PSG 与 DG 之别。

Nick:
白老师这篇要认真学习

李:
@Nick 咱有样学样啊。。。

最后要说明,即使语言的结构表示模型是基于理性主义(符号或规则)路线的,但语言解析过程本身仍可以采用基于统计的或基于联结的方法。比如PCFG就是基于规则的结构表示与基于统计的过程控制的有机结合。

PCFG 是有机结合的先行,但不算成功,文章似乎不少,但没见多少实效。今后几年看白老师的了。

词典化(免规则)、单子性(免复杂层次)、局域化(免跨成分关联)和鲁棒性(对灵活语序和修辞性失配的适应性),是自然语言句法分析技术未来的发展趋势。

“局域化(免跨成分关联)”不大明白,其他几方面可说是有相当共识,所见略同。

知识图谱的技术栈里算力充足工具齐全”:这个需要检阅一番。

白:
PCFG不见实效的关键原因,一是CFG先天不足,二是标注成本过高。如果不能变为非监督或弱监督,必死。

李:
对,P 要到位就要超大数据,否则怎么个概率法?可是结构标注根本就不是人做的的活儿(PennTree 这么多年成长也很有限,增长部分大概是语言学研究生的苦力)。

quote 此外,人类的语义解析过程充满了所谓“脑补”。可见,借助知识图谱,智能化地完成这类需要“脑补”的语义理解过程,是语义分析技术走向实用和深化的必然要求。

这段话群里的人 可能会理解,但对于大众,无异天书,必须要有相当的 illustrations,脑补的是常识,专业知识?是常识中的默认选项,etc. etc.

白:
这里也删去几百字。

李:
知识图谱的好处是为结构化张目。很久以来,没人尿结构化这壶,一草包词 多厉害啊,鲁棒到极致。用于搜索,不仅鲁棒,还特擅长长尾,tf-idf,越长尾 关键词越灵 要什么结构劳什子。连词序都可以舍弃,何况结构?

到了 ngram,词序带入考量了,算是对语言结构的一个看上去拙劣粗鄙 但实践中颇有效的模拟近似,因此也不用着急蹚结构这个浑水了,来个 bigram or trigram model,还有个 viterbi 的高效算法。

现在好了,趁着图谱热,结构化的旗帜高高飘扬。终于可以理直气壮、名正言顺地大谈结构化乃是自然语言理解的正道,乃是人类智能的基石。为这一点,要感谢谷歌。就好比我们应该感谢苹果,通过 Siri 把自然语言接口送到千家万户,教育培养了用户。

下面这些都是字字真理:
自然语言处理能力以平台化方式提供服务,是广大自然语言处理技术提供者求之不得的事情,但目前还受到一些因素的限制。现实中,更多的自然语言处理技术是融合于一个更大的行业应用场景中,作为其中一项核心技术来发挥自己的作用的。

NLP平台化迄今没有大规模成功案例。趋势上是必由之路,但今后何时真地可以平台化广泛赋能,真地是一个未知数,我们从业人员都在努力 。。。。

除了法律、医疗、教育等先行行业之外,金融证券行业对自然语言处理技术业有很迫切的落地需求,但往往必须结合专业领域知识和私有数据才能构建有价值的场景

就是。

熬了一夜,精读了白老师最高指示。
两个等待:一是等着看原文(非删节版);二是等着看白老师的系统。

宋:
读白硕的文章,的确高屋建瓴,分析得透彻。我觉得还应该补充一点(也许是简本删掉了的),就是语言学研究的必要性。具体来说,就是语素、词、词组、小句、句子(小句复合体)的定义,以及相关属性(如词性)及关系的定义。对于英语等西方语言,似乎一切都很清楚,不言自明,无需当回事儿去研究,但是论及到汉语一切就都糊涂了。不能适用于汉语的语言学概念的归纳,都是偏置的。基本对象及其属性、关系的概念不清楚,相应的模型和计算就不可能完全适用。

白老师的全本中会讲离合词,这个概念就是其他多数语言中没有的。但是,如何从人类语言的高度看待离合词,期待看白老师的全本。

白:
@宋柔 我感觉语言学并没闲着,只是节奏慢了点,在NLP这边是没人理睬,而不是挑出很多毛病。挑拣的才是买主。挑拣才能让语言学加速。

宋:
语言学方面的问题是没有照着机械化的可操作的要求去做研究。

白:
@宋柔 光算法层面的机械化,语言学家或可手工模仿;扯进大数据,连手工模仿都不可能了。

宋:
基本概念的定义,比如词的定义,应当适用于大数据中的所有样本,语言学应当做这件事。

白:
只要承认运用中可拆解,词的定义不难。@宋柔

宋:
不仅是运用中拆解的问题,还有一个粘着性的问题。

白:
粘着性倒是真的可以大数据说话

宋:
你说的有道理。语言学的基本概念的定义。真的不能是静态的,需要在大数据的环境中定义。基本原则是这样。定义的结果,哪个是词哪个不是,要看参照哪一堆文本。

白:
“以国防部长的身份”当中的“以”,可以是介词,也可以是名词的拆解物(“以色列”的简称)。这个拆解物当名词用。

宋:
即使数据集定了,也还有模糊性、两可性。那又是另一个问题,即符号的歧义问题。

白:
承认可拆解的另一面就是承认微结构。宋老师说的粘着性,可以从词根与词缀结合的微结构角度来考虑。

宋:
微结构的节点应当有波粒二象性,既是词,又不是词。

白:
拆解出来当词用,封在里面就是词素。

宋:
微结构可能会有相当大的跨度:这个澡啊,从来没洗得这样舒服过。语言学理论必须把这些现象包容进去。

白:
必须的

宋:
这样的澡我从小到大,再到老,还没洗过。

李:
离合词是可以解决到很完美的不再是问题的问题,关键就在词典与句法的接口上。大规模验证过的。

【相关】

白硕:知识图谱,就是场景的骨架和灵魂

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

《朝华午拾》总目录

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

白:
“我电话费用不完”谁家分词系统强?

李:
这不仅仅是“分词”问题,而是词法分析(morphology analysis)问题,对比:


Note: M=Modifier, S=Subject, H = Head;
N=Noun, NP=Noun Phrase, AP=Adjective Phrase, CL = CLause

这里,“不”(还有“得”)是现代汉语的中缀(infix),派生词构词法如下:

用完 –》 用得完
用完 –》 用不完

而三元组“用不菲”却不成词:

“用不菲的价格购得”。


Note:M=Modifier, R=Adverbial, X=Functional, H = Head;
N=Noun, NP=Noun Phrase, AP=Adjective Phrase, VG=Verb Group, PP = Prepositional Phrase

白:
不菲 应该成词吧,不完 不该成词。

李:
对。但是 “用不完”成词,是派生词。上述词法分析除了派生(derive)了这个词,而且得到了这个派生词的分析结果:

(i)原词:“用完”
(ii)原词词典“绑架”的词法结构:述补
(iii)词法特征:【否定】【结果(述补结构)】【可能(情态)】

这不是切词,这是以派生的方式做词法分析,对比同为情态的等价表达“不能用完”:

(i)头词(Head):“用完”
(ii)句法短语:VG(动词组)
(iii)词法特征:【否定】【可能(情态)】

特别有意思的是,“用不完”的构成不是 “用” 与 “不完” 的拼接(concatenation),而是 “用完” 与 中缀“不”的派生式构建。这不是语言学上的合成构词法(compounding),而是派生构词法(derivation)。由于汉语被普遍地粗线条指认为缺乏构词法手段的所谓孤立语,大众一股脑把所有的构词都叫作 compounding(也叫“小句法”),但是现代汉语其实不是这么单纯。欧洲语言的构词手段大多在现代汉语也有体现,包括 类词尾(quasi-inflection)如表达完成体的“了”,也包括利用类缀(quasi-affix 如前缀。中缀、后缀)的派生(derivation),以及大量使用的重叠(duplication)构词手段(如:高兴–》高高兴兴)。我的博士论文对这些现代汉语的词法(morphology)现象及其计算机处理,有详尽论述,语言学味道浓一些(见:Ph.D. Thesis: THE MORPHO-SYNTACTIC INTERFACE IN A CHINESE PHRASE STRUCTURE GRAMMAR)。

现在已经清楚,为了中文自动分析,所谓中文分词,不仅仅是把要词“切分”出来, 而是应该输出白老师所说的微结构及其词法特征(时、体、态等)和句法特征(如类别、子类等) ,除此之外 还要通过“词典绑架”输出语义特征(叫 lexical semantic features)及其背后的本体知识层级体系(类似于董老师的HowNet,内含常识)。这样的词法分析器(lexical analyser)才算是完成了词法任务,为下一步的句法分析和语义分析打下基础,从而为汉语的深度理解开辟了道路。

所谓实体识别 (NER),属于合成词范畴,也是题中应有之义。还有 Data Entity 的合成,譬如各种度量表达法(长度、体积等)也是合成词。当然也要包括与句法纠缠的离合词(“洗澡”)的识别和绑定。

中文深度解析(deep parsing)的大楼不是凭空可以建造起来的,词法阶段就要夯实。

白:
“用不完”搞成词没啥意义

李:
这个没的争的。根本不是什么“搞成”词的问题,而是词法分析的问题。说到底,这个中缀的词法意义必须抠出来,因为它是 open-ended,绑架不全。最终系统要知道 “不能用完” 与 “用不完” 不过是用不同的词法句法形式,表达相同或相近的语义。否则何谈语言理解(NLU)?

白:
“用不完”在句法层次一样处理。放到构词法层次,难不成就是为了凑一个长词优先?

李:
句法与词法本来就是一伙的,从万米高空俯瞰,都是形式分析。句法如果能分析出词法分析同样的结果,亦无不可。以结果论英雄。但语言学上,它就是一个派生词,这个没有多少疑问。其实,“凑成一个长词优先”不仅是词法的“凑”,背后有其所以为词的原因在。词法句法在中文纠缠,并不说明二者没有顺序。顺序的一个体现就是长词优先。

白:
好的分词系统,即使“用不完”分成三个词,总体得分还是占优的才对。

李:
如果较真的话,中缀现象在通常的句法里面还真不好处理妥善。我们可以用近似、逼近的句法去处理中缀,但派生词的处理在词法是一个常规的过程,是词法里面避不开的一类。

白:
“我电话费用也用不完”

李:
这与沙滩望远镜看女孩有点异曲同工(自注:这是NLP领域最著名的代表结构歧义的例句:I saw a girl with telescope.  句末介词短语做 girl 定语,与做 saw 的状语,二者都说得通,是为“真歧义”)。这种人为的真歧义(1. 我电话费,用也用不完; 2. 我电话费用, 也用不完),系统怎么做都不能算错。理想的情况是输出两个结果,但人脑理解貌似也是先绑定一个结果(不同的人可能绑定不同的路径),有时间咀嚼的话,再想到另一个结果。人际交流和理解中,多数人不拘小节,根本不在乎这种歧义区分,除非是遇到较真的人,或在段子里。问题是,就算一个高明的系统可以区分这种较少出现的“真歧义”与大量存在的“伪歧义”,下一步接不上还不是白费。还不如就绑定一个。

“v 也 v 不完” 这种重叠手段与派生手段纠缠的汉语现象,不是应该把 “用不完” 置于句法的充分理由。首先,这种纠缠现象非常局限,基本上还在词法范畴内部,不像离合词“洗澡”,已经明显溢出到句法了,经常是“远距离”离合,那才真地需要词法(包括词典)与句法有一个灵活的接口。

白:
“电话费用不用得完成任务了再说。”

允许“用也用不完”成词,那就得允许“用不用得完”也成词吧?其后果是,即使“完成任务”算一个词也压不住了。

李:
压不住就不压呗。弯不过三。压不住的,基本上是长尾的尾端。

白:
这不是自然的压不住,是人为的压不住。不把那东东搞进词法就没这事儿。不是天灾,是人祸。拿解释天灾的逻辑解释人祸,欠妥。

李:
关于词法、句法,对于多层系统,就是一个连续体,有顺序,但没有一个黑白分界线,这与教科书里面的词典、词法、句法、语义等组件的各自完全独立不是一回事儿。
譬如说 1层到10层是黑色的词法,20层到40层是黑色的句法,但11层到19层呢,那就是灰色地带。可以说是词法后期,也可以说是句法前期,安排什么现象到灰色地带,是根据现象的特性来决定。因此争论某某是扔进词法还是句法这样的问题,前提的假设就是两个前后模块,而不是离散又连续的多层系统。

撇开抽象的模块分界,真正有意义的问题是,“凑成一个长词”(并参加分词大餐)是好处大于坏处还是相反?其实,答案是相当清楚的,利大于弊太多。与其指望一个“聪明”的分词程序来应对 “v -也(都)-v-不-完”这个五元组,不如把“长词”做出来心里踏实:这样再“笨”的分词程序也不至于出乱子。五元组分散开来进入分词所可能造成的副作用,较之合成了五元组长词(并同时做了词法分析)可能引起的后续的切分问题,前者比后者严重得多,也频繁得多,根本不是一个数量级上的问题严重程度和频繁程度。因此,恕我直言,白老师的“人祸vs天灾论”或者是唯心的,或者是误导的。

白:
关键是长词是什么时候做出来的,我很赞赏前面说的灰色地带的说法。长词是句法分析介入以后做出来的。做出来以后就可以反悔分词方案。这样分词和句法两方面就都是可控的。走的路线类似分词1-句法1-分词2-句法2………这种。

李:
有道理。不过白老师举例来说的人祸论实在不能让人心服。事实上,分词系统免不了要用 heuristics,对于每一个heuristic,无论如何表达,也无论如何安排先后次序及权重永远可以找出反例来,这是 heuristic 的本性。但我们最好不用(罕见的)反例来结论某种安排是人祸。如果不那样安排,这个人祸是避免了,另外一个更大的人祸很可能就在身边,因为所谓“没有了人祸的更高明的方案”其实并不能保证周全。这不是说方案与方案之间没有优劣,而是说,门户之见很容易让我们看到别人方案的缺点,忽视了自己方案的副作用。

白:
可以有一些另外的表述,比如结构冻结,比如分词永远在进行时,都能让人更好地理解所说方案的建设性。人贵在举一反三。如果从反例中只能看到个别、长尾、噪音乃至门户之见,那很可能就忽略了真正有意义有价值的问题。

李:
对,道理是这样的。不过,直觉还是很担心五元组进入分词程序的。晚上睡不好觉。汉语是二字词为主,五元散列的情况让人心慌,老觉得会当成外国人名给打入了另册。如果v是二字词,则另当别论,可以句法处之:“反正学习也学习不完”。换句话说,不是不知道这个现象可能需要句法:即便五元组参加了分词,同样的组合在句法还是要重复一遍,否则上面的7字组就不能做统一的分析和处置。这算是支持句法处置的一个可以接受的 argument,但是,词法结构规则在句法重复,听上去不经济,实践中个人认为并不是问题。多层系统的框架下,重复的不止这一项,否则也解不了乔老爷的递归魔咒。

刚开始入行的时候,老想着 generalizations(语言系学生的通病,被教授洗脑了,一直以 generalization 为语言学家天职),总是避免规则的冗余和重复。后来有几次看到了机器学习出来的符号规则,重复冗余简单到无语,反而受了启发。如今对重复冗余的耐受强多了:只要简单,何妨啰嗦,完全抛弃了铁路警察各管一段的理念。现在是词法做了句法做,句法做了到语义也不妨再做,螺旋式上升,相互照应,只要为了一个共同的目标就好。

 

【相关】

Ph.D. Thesis: THE MORPHO-SYNTACTIC INTERFACE IN A CHINESE PHRASE STRUCTURE GRAMMAR

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

《朝华午拾》总目录

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

【原立委按:微信泥沙龙,谈笑鸿儒,高朋满座,信马由缰,言无所忌,摘之与同仁分享。】

李:
今儿个咱要吐槽乔老爷,不吐不快。

开题:乔姆斯基,对领域的误导,或负面影响,与他对语言学的革命性贡献,一样大。

他的hierarchy,是天才绝顶的理论,是不可泄露的天机,从而奠定了形式语言的基础,用来创造、解释,或编译计算机语言,是完美的指导。可是,完美往上走一步,就成谬误。乔姆斯基拿这套理论,硬往自然语言套,导致整个领域,在所谓自然语言是free,还是sensitive,还是 mildly sensitive等不靠谱的争论中,陷入泥潭。太多的人被引入歧途,理所当然地认定,因为自然语言复杂,因此需要 powerful的文法。这个 “powerful”,是世界上用的最误导的词。

工程师发现,有限状态好用,但经不起理论家的批判:你那玩意儿太低级,不够 powerful,只能拿来凑合事儿。实际上,做过大工程的人都明白,对象的复杂,并不是使用复杂机制的理由,有本事使用简单机制对付复杂的对象,才是高手。

乔姆斯基最大的误导就是,用所谓自然语言的center递归性,一杆子打死有限状态,他所举的center递归的英语实例,牵强和罕见到了几乎可笑的地步,绝非自然语言的本性。结果一代人还是信服他了,彻底地被洗脑,理所当然以为必须超越有限状态才可以做自然语言深度分析。

为了所谓语言的递归性,人脑,或电脑,必须有个堆栈的结构才好,这离语言事实太远,也违背了人脑短期记忆的限制。世界上哪里有人说话,只管开门而不关门,只加左括号不加右括号,一直悬着吊着的?最多三重门吧,一般人就受不了了。就算你是超人,你受得了,你的受众也受不了,无法 parse 啊。说话不是为了交流,难道是故意难为人,为了人不懂你而说话?不 make sense 嘛。

既然如此,为什么要把不超过三层的center循环,硬要归结成似乎是无限层的递归?

毛:
递归成了他的宗教。

李:
不错。乔老爷的递归误导语言学,坑了NLP太久。我对他的语言学不感冒,对他对NLP的误导,更感觉痛心。一个如此聪明强大的人,他一旦误导就可以耽误一代人。被耽误的这一代是我的前辈一代(上个世纪70年代80年代),他们在自然语言理解上的工作几乎一律为玩具系统,在实际应用上无所作为,从而直接导致了下一代人的反叛。老一代被打得稀里哗啦,逐渐退出主流舞台。

在过去30年中,统计NLP的所有成就,都是对乔姆斯基的实际批判,因为几乎所有这些模型,都是建立在ngram的有限状态模式的基础之上。

洪:
从乔姆斯基的所作所为,就能分出构造机器智能和解构人类智能难度上的差异。他五十年代略施小计就把形式语言夯成了计算机的Cornerstone,可是穷毕生精力,总是在重构其语言学理论。

毛:
如果没有乔老的那些理论,人们能做出计算机语言编译吗?)

洪:
语法mapping到语义,总是要做的,不必须用形式语言,就像现在做nlp的人也不必须懂语言学。还是 David Marr,David Rumelhart 等立意高远,总想找到人机等不同智能实现上的共通计算机制。

刘:
Marr 也是人神级别的

毛:
跟上面问题类似的是:如果没有图灵和冯诺依曼的理论,人们会造出计算机么?

洪:
Babbage的分析机可行,Ada的程序/算法也早可行。其实,问题不在于出冯诺依曼还是马诺依曼,问题在于,不管他们的理论表面上如何不同,可能都受同样的约束,能力上可都能都等价。而Chomsky 研究的是这些约束能力。

毛:
那图灵不是更加么?

洪:
Turing 从机器一侧,Chomsky从人一侧。)

李:
洪爷说的是事实,过去三十年不懂语言学做NLP的占压倒多数。但那不是健康状态。不过,语言学里面也很混杂,进来的人很容易迷糊。但是,语言学里面确实有一些指导性的东西,了解与不了解大不一样。比如索绪尔,就值得琢磨。索绪尔说的大多是原则性的,有哲学的意味,是传统的非科学性的语言学,特别具有宏观指导意义,可以提醒自己不至于陷入细节的纠缠,而忘记了方向。他谈的是共性与个性的关系,语言和言语,规则与习惯,共时与现时,都很洞察、到位。

白:
我觉得线速、柔性很关键,多层次递归和远距离相关必须搞定。方法不限,八仙过海。

李:
那些已经搞定了,伪歧义也不是问题,都搞定了。有一种叫做cascaded FSA的方法,与软件工程的做法极其类似,就能搞定这些。前提是指挥者架构者不能失去全局,要胸怀索绪尔,而不是乔姆斯基。架构和interfaces设计好,下面就是模块的开发,匠人的干活,可以做到很深,接近逻辑表达,比典型的chomsky CFG文法深透。传统规则系统受乔姆斯基CFG影响太大,很不好用,而且也无线性算法,所陷入的困境与当年神经网络以及一切单层的统计系统类似。正如多层的深度学习被认为是AI的突破一样,有限状态一多层,一 cascade,以前天大的困难,递归啊远距离啊伪歧义啊,就消解于无形。

白:
数学上的函数复合。

李:
就这么一个简单的道理,结果至今批判规则系统的人,还在打稻草人,以为规则系统都是CFG那么愚蠢和单层。

乔姆斯基对nlp的误导,还在于它的短语结构的表达法。那个phrase structure破树,叠床架屋,为了追求所谓语言共性,太多的assumptions,既不经济也不好用,却长期成为 community standards,误导了不知多少人。起码误导了 PennTree,通过它误导了整个领域。,

白:
某种意义上,nlp是应用驱动的。与应用匹配,Ngram也不算误导。与应用不匹配,HPSG也算误导。抽象的误导不误导,让语言学家掐去吧。一个topic问题,扯了这么多年。)

李:
语言学家打烂仗的事儿多了,说起来这与乔老爷也有很大关系。有个 self,相关的所谓 Binding Theory也是论文无数,大多垃圾,这与老乔的负面影响直接相关。为追求 universal grammar,和脱离语义的generalizations,走火入魔,大多是无谓的口水战争,既不能推进科学,也不能推进应用,唯一的好处是帮助了很多语言学博士的选题,培养出一茬接一茬的语言学博士。可是,毕业了还是找不到工作。老乔由于其超凡的智力和名气,帮助提升了语言学的地位,但他没有能力影响市场,结果是全世界语言学家过剩,懂得茴字五种写法的落魄腐儒,如过江之鲫,谁能给他们就业机会?

这里面的要害在,所有的语言分析,不可能为分析而分析,都是为了求解语义的某种需要,可老乔强调的语法纯粹性,要脱离语义才好研究终极的机制,这个argument有历史的革命意义,有某种学术价值,但非常容易形而上学和片面化,结果是语言学家脱离了目的,脱离了需要,在争论一种分析,或一个模型与另一种的优劣。其实这些相争的方案,只要系统内部相谐,都大同小异,根本就没什么本质区别,而且没有客观的可量度的评判标准,那还不打成一锅粥。

刘:
摆脱语义,直接进入语用?

李:
哪里,乔老爷是要直接进入共产主义,要世界大同。他对语义不感兴趣,更甭提语用。语义在他属于逻辑,不属于严格意义的语言学。句法语义是分割开来的两个范畴,句法必须自制。

白:
句法自制是错误的。

李:
对传统语言学完全不分家的那种分析,老乔有革命意义,也确实推进了结构研究,但凡事都是过犹不及。句法自制推向极端,就是本末倒置,失去方向。

我做博士的时候,在一个小组会上,举一些汉语的例子,作为证据反对一刀切的句法自制,说老乔有偏差,看到的语言事实不够,结果被我导师劈头盖脸批了一通,言下之意,不知天高地厚。我当然口服心不服。问题是,我一辈子只思考一个问题,只要醒着,头脑里除了语言,就是文法,除了词汇,就是结构,突然有一天觉得自己通达了,看穿了语言学上帝,乔姆斯基。原来,智商高,不见得离真理近,智者乔老爷,也不例外。有人说老乔外语不大行,看到的现象大多局限于英语,偏见难免。的确,懂汉语的人很难完全信服什么句法自制:句法形式的约束和语义的约束很难截然分开,否则连“我鸡吃了”和“鸡我吃了”都搞不定。

说起外语,到了我们的年代,俄语退居其后了,所以我本科的二外选的是法语,到研究生才选了俄语做三外,不过全还给老师了。虽然语言是还给老师,体悟到的语言学却长存,所以也不冤。到 30 年后的今天主持 multilingual program,带着参考书,我还一样可以指导法语和俄语的 NLP 研发,语言的不同,换汤不换药也。

洪:
老乔不是上帝,他只是让咱看到来自造物主的理性之光。

李:
形式语言理论,非人力可为,绝对属于天机,单凭这,乔就是人神。吐槽乔老爷,一次抱怨完,明儿依旧是偶像。

不管我怎么批判乔姆斯基,我还是服他到不行:他老人家的威望可以把 Universal Grammar 这种乍听很荒唐的观念,转化成一个让人仰视的语言哲学理念。UG 的真理之光由此不被遮蔽。当然最厉害的还是他的 hierarchy 形式语言理论,那几乎不可能是人的理论,那是上帝之光,尽管乔老爷在描述的时候,不免机械主义,hence 造成了极大的误导。

话说回来,没有自然语言的数学化研究和启示,他老人家也提不出形式语言理论来。至少从形式上,他能把人类语言和电脑语言统一起来,达到一种人力难以企及的高度。如果没有乔姆斯基,电脑理呆们打死也不会对词法分析,句法分析,语义求解,parsing 等感兴趣,并如数家珍地谈论这些语言学的概念。这是其一。

其二,正因为乔老爷自己也知道他的形式语言理论的抽象过头了,难以回到自然语言的地面,才有他穷其一生在自然语言的语言学方面的继续革命,革自己的命,花样翻新,试图找到一个终极的普遍文法的自然语言解构。这次他就没有那么幸运了,虽然在学界依然所向披靡,无人能敌,但却与电脑科学渐行渐远,被连接语言学和电脑应用的计算语言学领域所抛弃。也许不该说抛弃,但是自然语言领域大多把他当菩萨供起来,敬神鬼而远之,没多少人愿意跟他走。

首发科学网 【泥沙龙笔记:乔姆斯基批判

【相关】

Chomsky’s Negative Impact

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

《朝华午拾》总目录

 

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

董:
冯老师,姜博士,李维,白硕,宋柔老师,这个系统正式上线前,想先请各位看看,横挑鼻子竖挑眼。这个系统是去年6月开始开发的。时间短。最近几个月更是忙得厉害

李:
刚发朋友圈了。“中国nlp老前辈董老师的知网支持的平台 值得关注 推荐。世界上自然语言理解的深度 董老师是最深的了。逻辑语义的开创者。三十多年的智慧和知识积累 董振东老师是 让我辈高山仰止的语义巨人(见 科学网《语义三巨人)。【语知科技】多语种NLP平台正式上线。  demo.keenage.com

冯:
董老师,语义理解,还是要依靠规则。深度学习不行!

李:

Manning 教授昨天座谈时说 最近三年是他一辈子做nlp感觉进步最大的三年 他主要指的是深度学习。曼宁是一位一直强调语言结构和理解的老教授 NLP最知名的权威了。他的感受应该是真切的 不过来不及细问他 这种感受多大程度上是基于深度学习在语音处理以及mt方面的突破性进展,文本方面其实目前很难说深度学习引发了革命。不过 word embedding 还有什么 adversary 学习方面 开始在词汇语义级发力 有些结果令人印象深刻。parsing 要等到深度学习能把 parsing 落地为应用 才值得侧目以待 目前不行。曼宁教授还是很学究 甚至有些腼腆的气质 现在火得不得了 也是时势使然。ai 一热 nlp 就热。病急多投医,nlp各路 也跟着提升了在ai中的地位,I guess。

董:
@李,你说的让我脸红了。我在研究上是个工匠,做学问认死理。我研究语义,是叫当年的机器翻译研究逼出来的。什么是理解?什么是常识?什么是知识库?人的知识是如何建构的?我后来的感觉人是用“少”,而非用“多”来计算语义的。你常说起的Cyc,是“多”的典型。语义的关键是“关系”,而分类只是语义关系的一种。近年我们开发了基于知网的翻译,最近一年开发了中文分析,从学术的观点看,是为了考验知网,是为了给自己30年前的设想做个交代。这个交代既是给自己的,也是给别人的。告诉人们哪些努力是值得的,哪些努力是仍然无法圆满成功的。

李:
董老师退而不休 能够完成心愿 给我们留下的这笔知识财富 我们需要时间咀嚼 消化 但我坚信这种影响是深远的。潮起潮落 有些东西是不变的。语义及其语义研究的一些方法 具有相对恒定的价值 好比金子 总会发光 这个没有疑问。ai 中真正懂 nlp 特别是 nlu 的人不多,好多声称nlp的专家 只是做过自然语言的某个端对端的应用 专家做 text NLP与他做Visual 做 audio 做生物DNA 是一样的路数和算法,不过是数据不同而已。没有啥语言学。

白:
佩服董老师的执着和务实。如果说哪里还差点什么,就是对于“多个爹”的刻画机制问题。

董:
白硕说的对。“多个爹”是我们想做的新的探讨。两个问题我们遇到的:一是“是不是个“爹””,如何在文句中正确的确定那个“爹”。

冯:
有的作自然语言理解的人不关心语言学。词向量效果不错,理论机制不清楚。

李:
戏不够 词来凑。语言的分析理解主要有两个支柱,一个是词汇 吕先生称为珍珠;一个是结构 称为串子。传统说法是没有串子 做不了语言理解的项链。

白:
@冯志伟 词向量是保运算的降维,数学上是清楚的,但是跟理解搭不上钩。

李:
所以我们这些擅长 deep parsing 的人就开始看不起只看到珍珠的人,但是 其实二者的 overlapping,从完成nlp任务的角度 作为两种证据源 其实是相当地大。因此善于把 词模型 词向量模型用到极致的人,有时候的确产生了让我们意想不到的结果。

冯:
珍珠和串子是缺一不可的!

白:
如果每颗珍珠都有插销插座,确实可以不用串子。或者说,寓串子于珍珠之中。

李:
我的意思是 我们多少有些老古董了。虽然可以继续执着下去 也的确可看到一些我们擅长的nlu工作 词模型似乎根本就没有可能赶上来。但还是应该保持一种 open 心态。

白:
开开脑洞还是必要的。
词负载结构是好东西。

冯:
我们要关注词向量的成果,更要问一个为什么?

李:
对 应该探究这种表达的背后。

白:
设想回到老乔刚冒泡的年代,那时的语言学家怎么看老乔?

李:
其实我最早读乔姆斯基的转换生成语法的介绍的时候,非常看不起,觉得就是儿戏。那还是在 1982 年备考语言研究所刘老师的机器翻译研究生的时候不得不临时抱佛脚,了解一些计算语言学的基本概念。此前我做过英语教学多年(包括插队做民办教师),从中学做学生的时代就教别人的英语句法分析,主动语态被动语态等转换烂熟于心。觉得老乔演示的那些转换生成案例,太低级 太常识 太机械 乏味,太不具有神秘感。直到后来学形式语言理论 才生出崇拜感。

白:
说实话,如果知识结构跟不上老乔,恐怕根本没有跟老乔PK过招的可能。

李:
人岁数大以后的一个好处是,可以直抒己见,没有啥顾忌。我其实在读博士做汉语形式研究的时候,就对乔老爷的句法独立句法自足论极为不满,就在 seminar 指出乔老爷错了,离开语义,汉语句法形式分析搞不定。被我的导师劈头盖脸一顿轻蔑,大意是:你不知道天高地厚,一边去。被哑口很多年过去,我还是发扬光大了当年的批判。

冯:
我在57年读到乔的三个模型就开始崇拜他了!

李:
是啊,一个理论把自然语言与电脑语言形式上统一起来,使得电脑语言编译越来越像语言学,这种抽象让人震撼。震撼过后的很多年 就是对乔老爷的不断扬弃和批判,批判的主要点还是源于他的抽象:是赞也抽象,批也抽象。的确 他把电脑语言带进了语言学,居功至伟 。同时他也把自然语言带进了坑里面,误导了太多的人 整整一代人。(详见:《立委:乔姆斯基批判》 )。

白:
@wei 你那不算是语言学的批判,只是工程视角的批判。他是语言学家,但从未承诺过NLP什么。NLP掉坑里也是自作多情

李:
我们下意识还是 认定他应该引领nlp 和 cl,结果是他越走越远 越走越邪门,nlp 已然与他无关了。

白:
他不管工程,不管技术,只管数学。

李:
结构分析中的叠床架屋 使得过程中夹杂了太多的 assumptions,看上去高度抽象 追求共性 实际上是越来越像空中楼阁。当然 我肯定戴了有色眼镜,做了一辈子nlp 对纯语言学很难批评得中肯 只是一种感觉而已。老乔的语言学 对于绝大多数NLP践行者包括在下,都是供在菩萨庙里面的 只膜拜 不 follow。

白:
如果从工程角度批判,估计人家看都不看—-关我什么事。

李:
老乔的思维高度自然不看 也不用看 这种批判。但是老乔下面的语言学家我认识很多,我就是这堆人里面混出来的,从他们身上我能感觉到他误导的后果。这些人很多时候就是在老乔的框架里面 自己跟自己玩游戏 没有理论创新 只好在语言数据上玩游戏,而且是一点都不感觉高明的游戏。说的是一批 或一大批语言学家。(也有一些绝顶聪明的纯语言学家让我叹服的,为数极少。)

洪:
做计算机编译的,没人认为老乔误导 Knuth和老乔貌是惺惺相惜。

吕:
赞@wei , 很多看法深有同感

李:
编译的理论基础 编译的祖师爷,电脑界理应崇拜 给10个图灵奖也不过分。当然 乔老爷哪里在意什么图灵奖。@吕正东 有机会咱俩坐下来谈。你最近的大作(见 独家|专访深度好奇创始人吕正东:通向理解之路)中我最不满意的就是一句话:说什么 符号逻辑规则路线没有成功的(大意,查原文是:“这三点都导致至今没有成功的规则系统”)。我得让你见识一下符号系统,没有深度学习的任何一家目前可以做到这个NLU的,无论深度 广度 速度 鲁棒 迁移度 可行性 还是其他指标 (It is untrue that Google SyntaxNet is the “world’s most accurate parser)。

吕:
@wei 惭愧,改日一定当面请教。

白:
说这些其实是在以史为镜。今天语言学界看DL、看词向量的心态,跟当初老语言学界看老乔的心态,有没有几分相似?

吕:
我的意思是说规则系统很难做到我所期望的NLU,不是说现在最好的规则系统弱于DL的系统。当然我对规则系统确实了解不够(现在正在补课),不免贻笑方家。

李:
不知道你去期望是什么。如果期望是现实的,很可能已经接近你的期望,如果期望是科幻,不谈。开玩笑了。王婆卖瓜而已。

吕:
我那篇访谈其实更多的是反对generic DL system 搞定一切的天真想法…

董:
@吕正东 你所期望的NLU,能否举个例子。

白:
里面有些模块可以是神经的,这有啥。

李:
所以我说我其实只有一点不满。你的访谈很好,

吕:
当然是现实的… 我们有现实的语义理解的项目

李:
@白硕 前乔姆斯基时代的老语言学界,陷入了田野工作的泥坑,是老乔把他们带出来的,革命了这个领域。纯粹的田野工作的确也是没大意思 比码农好不到哪里去。

吕:
@董振东 董老师,比如从一个偏口语的对事件的描述中得到对该事件的(“法律相关”)事实的表示…. , 当然这个定义是不那么严谨的

白:
其中一些方法,包括《降临》主角跟外星人沟通并试图破译其语言的一些方法,其实和主动机器学习很像了。

李:
一辈子也常陷入事务主义 没完没了地田野作业 自得其乐,但好在自我感觉好像心里还有某种哲学的俯视。有如神授:在田野工作的间歇 在某个高远的所在 有指引着道路。我是 语言工程师 knowledge engineer 的一员 毫无疑问。而且90%的时间都是。但是一辈子感觉这些田野作业的乐趣的本源却不在田野,而是在于架构。所以自我定义为架构师是最感觉自豪和 job satisfaction 的所在,否则与一头驴有啥区别。

白:
就是说,理想的田野工作一定是遵循某种算法的。而且算法不仅包括学习,还包括主动采样。

李:
所以在自我兜售的时候,强调 hands on 的田野作业,只是不想让人觉得飘在上面。但实际上卖的还是哲学。

Nick:
@wei 你就是自作多情

李:
我就自作多情 怎么着,你一边去 给冰冰多情去。@Nick  还想垄断哲学,搞什么哲学评书,不许我们搞哲学。王老五的桌子里面还有哲学呢,何况我辈语言学家。

董:
《福州晚报》7月15日报道,针对日前在日本横滨被证实遭杀害的福建姐妹一事,记者了解到,两姐妹均为福清江镜镇文房村人。
该报记者采访了该对姐妹花的父亲陈先生,陈先生回顾了得知姐妹被杀害的过程,并称女儿对父亲说的最后一句话是“谢谢爸爸”。

这一段事件,nlu 是什么呢?

吕:
@董振东 好难… , 实际上我们关注的是更加“冷冰冰”的事实,但即使这样也很难

白:
这里最大的问题,就是产品经理。

李:
同意,应用场景和应用角度 做技术的人很难看准。

白:
nlu是一层,但不构成核心服务。核心服务是另外的东西,让你贴近客户的东西。
相对称呼对身份一致性形成干扰,但相对称呼的谜一解开,倒也不是很难。姐妹花、姐妹,语境里的意思都是互为姐妹。

董:
我一直困惑:什么叫“我懂了”,“我明白了”。我觉得是高度抽象的关系。

李:
董老师30年前的论文(董振东:逻辑语义及其在机译中的应用)不是一再强调,所谓我懂了这句,核心就是懂了这句的逻辑语义吗?董老师的这个“理解”的教导,是一辈子遵循的指针。

白:
这得举例子吧……几何题的证明思路也可以“我懂了”“我明白了”,确定那也跟nlu相关?

董:
“姐妹花”,做为一个词语,可能合适。因为它就是“姐妹”,而且不见能产,如“母女花”

白:
“母女花”输入法里都有

李:
婆媳花 可能不在,但可以想见。

白:
我刚才意思是说,懂,明白,具有比nlu更宽泛的外延,nlu里面说的懂、明白,要窄、狭义。

董:
这样就可以依靠大数据了。对吧?
比“懂”、“明白”,要窄、狭义,那是什么呢?我如何在系统里体现呢?

白:
我们先说逻辑语义包括什么。我的观点:一包括symbol grounding,二包括role assignment。这两个搞定了,就是nlu的u。最狭窄了。茅塞顿开什么的,那种“懂”,跟nlu毛关系没有。可以说不在讨论范围内。在系统里体现,如果是role assignment,其实很好办,就是知网啊。如果是symbol grounding,那就要看系统的对接能力了。对接电话本、位置、天气、颜色、声音、实体知识库,都属于symbol grounding。

吕:
怒赞白老师1024次

白:
对接网页,往好里说属于兜底,往坏里说属于耍赖。一看见对接网页,我基本上可以判断系统黔驴技穷了。这都是在系统里能体现的,不知道入不入董老师法眼。

董:
是的,说得明白。我们的中文分析归根结底追求的就是你说的这两件东西。用逻辑语义和深层逻辑语义(多个爹),表示你说的role assignment,用ID No来落实实体知识库的symbol,即概念。所以判别歧义是不得不做的事情。

白:
我现在的方法处理“多个爹”已经成体系了。直接在句法分析阶段就能拿到“多个爹”的结构。

李:
Node to concept,Arc to logic semantics。很多时候 词到概念可以不做,wsd 绕过去,到了应用场景 再定 哪些词需要落地 其实多数根本就不用落地。

白:
这是parser提供商的思路。但是这思路在商业上有问题。不现实。比如,阿里的parser,为啥给京东用来落地?

李:
商业上就是 落地也做 当成 Professional services,量身定制,利用 parsing 的结构优势。 parser 不卖,内部消化。

白:
内部消化的本质还是深耕行业,而不是什么通用性。当你定位为深耕行业者,恭喜你做对了,但是牺牲通用性是板上钉钉的。

李:
卖components或平台基本没有做大的,还不如卖服务 做承包商。

白:
卖服务我判断也是不成立的。场景不长在你手里,实体数据库落不下来,图啥?跟通用系统如董老师的系统,根本不存在可比性。

李:
其实 目前为止 卖工具 卖服务 都没戏。实际上nlp还是寄生在产品应用。技术人的命运掌握在产品老总手里。赶巧遇到好产品 就一起飞。其次不死不活 这算好的。更多是陪葬。

白:
这不叫寄生,应该叫赋能 enabling

李:
一个牛的技术 可以降低陪葬 增加不死不活的可能  譬如我过去的二十年,但是无法让产品飞起来。

白:
除了产品经理,还有nlp之外的其他技术,也不是吃素的。到底谁贡献最关键,有得扯

李:
就是啊 使不上力 只好拼运气 看根誰搭档了。

白:
深耕行业定位下的nlper要时刻警觉的三点:1、你已有局限,不要和学术界比通用;2、你只是一个方面的enabler,服从、配合产品designer是天职;3、从产品全面看,其他方面的enabler或许贡献更大,nlp不见得一定是这个场景下最具杀手性质的技术成分,心理该平衡还是要平衡。

李:
让不让人活啊。
白老师所说极是。

吕:
谨记白老师教诲

刘:
赞 @白硕 @wei @吕正东 白老师关于nlp应用要语义落地的说法我深以为然。现在我的一些工作的motivation就是把基于NN的一些NLP的工作跟落地的语义结合起来,我希望能在这方面做一些通用性的工作,而不是仅仅局限于具体的应用。这应该是一条很长的路,有很多事情可做。

梁:
@wei nlp 不是“寄生”于产品,是“add value”, 正面去说。在最终产品的增值链上,nlp 只是其中一环。Me too. 谨记白老师教诲。

李:
寄生是负面说法 赋能是正面激励。

张:
主动学习、主动适应、主动釆样~~~白硕老师的“主动学说”给当年在MT创业的我极大启示@白硕

董:
关于研究与产品、通用与专用、寄生与赋能,我的想法和做法是:这些是对立且统一的。研究要通用些,要深,而应用要专门,要浅。研究可以关起门,应用就必须是开门的。这就是“深研究,浅应用”。就像一个老师,备课不怕深、广,但讲课要深入浅出。我经历过多次处理研究与应用间的关系的机会。

白:
@董振东 董强这次展示的系统,感觉还是学术性质的。@董振东 “备课”工作的一部分,确实可以用大数据、机器学习来做,全都人来做,周期太长,对灵魂人物的要求太高。

董:
@白硕 欢迎多多指教。我们希望有人帮助我们走向非学术性的。

白:
伟哥说大树吃小树,这话对的,不过涉及到时空的错乱。是吃了小树的树自然而然地成为了大树。

洪:
应该这样“全国猪人工智能受精关键技术研讨会”

吕:
猪AI会议可以撸出小猪来,不少国内的人AI会议,只能撸出更多的傻叉和骗子…..

冯:
近年来计算语言学的发展迅速,越来越工程化,文科背景的师生有的难以适应,海涛和他团队明察秋毫,迅速由计算语言学转入计量语言学,用计量方法来研究语言本体,这是聪明的做法。希望他们在这个研究方向上作出更多的成绩。海涛是我的博士生,浙大外国语学院教授。他是院士,世界语研究院院士。我仍然坚守在计算语言学的阵地上,没有转入计量语言学。我老了,不中用了!

李:
白老师说的大树吃小树 背景在这里:《科研笔记:NLP “毛毛虫” 笔记,从一维到二维

冯:
学习了。毛毛虫有道理。

李:
@冯志伟 洗脚池转文总是漏掉后面的 相关文章 现补上白老师这篇奇文:【白硕 – 穿越乔家大院寻找“毛毛虫”

 

【相关】

董振东:逻辑语义及其在机译中的应用

立委:乔姆斯基批判

独家|专访深度好奇创始人吕正东:通向理解之路

科学网《语义三巨人

尼克:哲学评书

科研笔记:NLP “毛毛虫” 笔记,从一维到二维

白硕 – 穿越乔家大院寻找“毛毛虫”

It is untrue that Google SyntaxNet is the “world’s most accurate parser

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

中文处理

Parsing

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

《朝华午拾》总目录

【李白之58:爬楼NLU】

爬楼NLU(Natural Language Understanding): 二楼句法结构三楼语义落地

李:
问各位一个 lexical feature 的转移问题及其解决途径,譬如 “所吃”。在小词 “所” 与 vt 结合成合成词以后,该词的语义等价于vt 标配宾语的语义。换句话说 “吃” 的动作性 语义本体标注 [consume] ,应该被置换成名词性标注 [food]。这个 feature 更新如何实现比较合适?到 HowNet 里面去挖出来? 如果 feature 不更新,那些细线条的指望语义 features 查询条件的规则就会失效。“所” 是一例,“的字结构” 是类似的例子。无论小词负载结构 还是小词参与合成词模式 都躲不过这个 feature 大转移的语义坎儿。当然可以为每一种主要关系(譬如 动宾)从 HowNet 抽取出一个语义词表,等到需要更新的时候,就让系统根据关系的规定来查表解决。不知道有人在 parsing 中做了这个工作没有? 估计很少,多数系统还没有细线条到这个地步。

白:
所,是N/S。的,是N+/X。所吃,是 N/S 与S/*N*,结合以后变成N/**,这是句法层面。subcat层面,它继承S的逻辑宾语坑的subcat。的,就没这么精准了。X里面谁空着就提取谁的subcat。“这本书我送的是他。”间接宾语也能提取。*N*是分母的一般形式,吃还是S/2N,所吃,是N/N,被谁所吃不知道。我所吃,N与N/N正好得出N。

李:
这里的继承有文章。“所吃” 继承的subcat 有:(1)“吃”的本体标配宾语,(2)subcat 剩余坑,也就是主语坑 /N == [animate]。这两项继承 一个是本体自己的 type 一个是坑的 type,都不是简单的事儿。因为承载本体的语词“吃” 由于小词“所”的作用 ,已经与本体概念 来了个乾坤大转移。

白:
[animate],[food]; 继承后者,即food。“这碗饭的所吃”不可以,

李:
N/**,这个句法符号里面有很多本体名堂。当然,这些本体关系信息都是现成的 ,Hownet 里面就有类似的知识表达:吃: s=[animate] o=[food]。

白:
“考”有点特殊。我们不知道“考”句法上应该是几个标配坑,但“所考”的subcat可以是人、学校、科目、某种证书。也就是说,不排除标配坑与subcat的对应有多元化的可能性。简单说逻辑宾语是不足以刻画这里面的复杂性的。不过,“所考”不可以继承分数【score】, 似乎所有事前不能有所控制的,都不能用“所”。“所梦”VS“所梦想”

李:
甲: 吃了吗
乙: 吃了
甲: 所食何物?
乙: 所食非物。
甲: 莫非秀色?
乙: 非也。 所食不过食堂耳。
甲:我的所吃更惨 非食堂 非馆子 更非秀色。所吃乃瘪、苦头、抑或 一鼻子灰。

白:
嗯,句法层能说“吃食堂”,“所吃”就可以是“食堂”。就是说,“吃”的逻辑宾语,是一堆而不是一个subcat。

李:
我要说的是 本体标配受事,还有一个上位概念,这个上位概念倚靠的是句法,表达的是逻辑谓宾的语义相谐。它不是本体那样纯粹 那样独立于具体语言,但又离不开本体的大框架。我一直把这种上位逻辑语义叫做逻辑宾语、逻辑主语,有意借用句法术语,加上前缀“逻辑”。所以逻辑宾语 可以是 【受事】、【对象】。【地点】等,以及其他种种说不清的搭配,逻辑主语 可以是 【施事】、【工具】、【地点】等。

白:
语义相谐不局限于受事,而是“可宾”的subcat。所砍,不能是工具。所去,可以是处所。所卖,可以是买主。所送,可以是对手方。

李:
这个 logical S 和 logical O 其实是很关键的概念。

白:
但是标逻辑主宾语给谁看给谁用?
语义落地,还是本体的坑好用,除非像“所X”这种含混的。

李:
主要是为了概括句型:svoc,就三个args。arg0 逻辑主语,arg1 逻辑宾语,arg2 逻辑补足语,更加杂乱一些,包括谓词结构嵌套也在内。但不管这三个 args 的内部逻辑语义细节多丰富,这三个坑从语言句型结构上定下了框架,万变不离其宗。

白:
好像不需要这一层,大面上也都可以语义落地。从“跟谁有关系”到“是什么关系”。
当“是什么关系”有多选时,就对应subcat集合,当然可以有个概率分布之类。按老乔的理论,你这是移位前的“logical form”,本质上还是句法。

李:
对 是句法。句法才是纯粹的语言学,到了语义就开始变味了。

白:
但是这标签贴了又不是最终落地用的,感觉不爽。要贴标签的话,还是只贴一次为好。句法不贴又何妨。

李:
在我这儿 语义落地靠的就是 svoc 句型,有了svoc 的框架,落地的句型 就一目了然了。 具体工作不过是给句型做细节条件的微调,然后就落地为具体场景的角色了。譬如 o 落地为 【发布的产品】,s 落地为 【发布产品的公司】:Apple launched iPhone 7 yesterday

白:
在我这儿,“可宾”包括的subcat范围,一是可以学出来的,二是仅仅跟少量词语的语义落地有关,没有大动干戈的必要。大多数落地(role assignment)的场景都不需要这个中介。

李:
把 s 标签 map 到 【发布产品的公司】这类工作,简直就是玩儿。 是典型的以不变应万变。不管产品和客户需求有多少变化 本质上 语义落地玩的就是换名的游戏。比起 parsing 这一层工作的繁难,信息抽取层面的这些工作太简明了。 虽然需要落地的谓词 都是少量的,但所有的谓词都逃不过句法的逻辑句型。 因此针对所有谓词建立句型模式 就形成了一种以不变应万变的结构准备,接下去爱怎么落地 都是一览众山小了 跑不过如来佛的手掌 。所以 这一层本身虽然不是客户的需求 而只是内部的桥梁,但我还是很推崇它作为语义落地骨架或桥梁的地位。

白:
如来佛手掌可以有多种造型

李:
那是。跳过它落地 完全可以想象。也许是偏好 总之玩一个主人三个仆从的游戏觉得很好把握,组合一下 也是非常有限的边界。不会做着做着 觉得进入迷宫 或搞不清漏掉多少。说着说着 觉得自己一方面批判乔老爷(参见【乔姆斯基批判- 李维), 一方面可能中了他老人家句法中心论、句法自足论的流毒太深 而不自知。

白:
从“有关系”到“是受事”,中间再经历一个环节好,还是直达好?我的选择是“直达”。至于“受事”是“发布的产品”,这只是一个alias。没有什么技术含量的

李:
对呀。正因为没有含量 所以就更像是游戏。真正有技术含量都在前期的 deep parsing 里面了,那才是自然语言理解的核武器。换句话说 svoc deep parsing 已经把句法做到通用领域的极致了,以至于落地到领域几乎就是一个换名的游戏,换一个领域容易接受、客户听起来舒适的情报标签。

白:
回到前面“吃食堂”,“食堂”可直接匹配“处所”,我说它是O不是O,有何意义?

李:
关键的 argument 还是:落地是千变万化的领域 和 各种不同客户的需求,但 svoc 永存 永远不变。只要领域用的是语言数据 这就是恒定的,就如二元关系的永恒一样。

白:
这里焦点不是有没有,是可不可以不用,不用是否一定差。语言学有很强的构造性,你构造他就有。角色本地名称是第一性的,通用名称是第二性的。对机器来说本地名称可以是不要名称,只有编号:第一个语义坑、第二个语义坑……,给个本地别名,就是公司、产品,给个通用名,就是施事受事。

李:
关于直达还是通过语义中间表达的桥梁,我也问过类似的问题。我诘问的对象是费尔默理论。在信息抽取的落地框架前, 有没有必要先经过一下他老人家的 FrameNet 的框架?我的答案是否定的:多此一举 没有必要。这就基本否定了 FrameNet 的实用意义。没有必要的理由是 FrameNet 理论上缩短了语义落地的距离,实践中增加了落地的麻烦。一个 svoc 的简单通用句型 分化到成百上千的 frames 去 还没有最终到达目标地。

白:
svoc也没有达到目的地,“有填坑关系”不是更干脆么,中间的过程,无论借助subcat锁定还是借助语序,都是自动化的。

李:
svoc 可控、intuitive,而且语言学家如数家珍。其实,说了半天,从落地对策的大类上,我和白老师是一伙的。标不标 svo 只是细节的差异,虽然从我的架构看,这个差异还是蛮重要的。

白:
语言学家如果是我培养出来的,用我这一套也可以如数家珍。

李:
但如果落地从领域落地泛化到通用的应用,譬如搜索,搜索没有预先定义的事件。svo 的搜索比较容易训练给大众,这与多数人的基本语感相吻合 who did what.  这类重要应用增加了 svo 的独立价值。你要搜索产品发布事件?好 那你就搜索:“发布” 其宾语是 【产品】。至于这个宾语在语言中有多少变体的句式 那都不是大众需要关心的,deep parsing 早就 normalize 了。

白:
这只是一个动词被“实例化”的wizard

李:
如果不标svo, 搜索的时候可以这么说,搜索 “发布” 其二元关系词是 【产品】,也可以达到类似的结构搜索的效果,返回精准的产品发布事件的清单来。比纯关键词词搜索精细高明多了。可是如果客户想 搜索所有受雇的人 ,在 svo 系统中 就搜索:“雇佣” 检索出其【宾语】出来。在不标 so 的二元关系系统中,雇主和雇员就混在一起了。

白:
1、你无法排除取消发布、拒绝发布、打算发布、能够发布……这些用模态词沾染过的发布;2、发布的如果不是产品而是新闻怎么办。svoc自身无法区分哪些是产品哪些是新闻。

李:
这些都不是问题。或者说不是因为增加 svoc 而新出的问题。svoc 反而为在何处解决那个问题提供了蓝图和便利。这都是另外层面的问题,譬如节点的条件、数据的来源、李ta data 等。与评价 svo 本身的利弊没有关系。

白:
我的问题是,如果这些区分导致svoc这一层反正信息不足,反正还需要借助另一层的信息,那么直达那一层有何不妥

李:
但信息不足是有不同层面的。任何图谱(graph),是 arcs 信息不足,还是 nodes 信息不足?还是超越句内结构的discourse不足,还是 meta data 不足?不能混谈,虽然这些不同层面的信息有相互弥补的作用:戏(arcs)不够可以词(nodes)来凑。

白:
标签不足。

李:
arcs 不标标签 是一个极端。arcs 标了 soc 是多了一些句法结构的关键信息,soc 再细化为董老师的90多种逻辑语义,就又更多了信息。nodes 呢, 啥也不标 是一个极端, 标了 pos 有了一些信息分类,再标 subcats,进而做NE实体标注(包括产品),直到引进 常识本体乃至领域本体(ontologies), 信息就越来越丰富。自然也越来越难维护和掌控。

白:
反正要上三楼,就是二楼的高矮问题。

李:
对。

白:
如果为了上一个高的二楼,导致付出的代价接近上三楼,二楼就取消算了。三楼的细活儿做得越好,二楼矮点儿就越没关系。

李:
为搭建二楼 svoc 所需要的信息及其技术手段,基本全部可以继承下来为三楼服务。所以 为什么说 parsing 不仅仅是所看到的树结构,也不要指望一个 offshelf parser 就很容易语义落地为产品了。parser 要成为语义落地直通车, 需要借用 parsing 本身所带来的资源积累。结构图只是这些资源的一个最容易彰显的部分 但绝不是全部。

白:
自带插销插座,到三楼装配起来就easy多了。

李:
完全同意 同感。但 “二楼就取消算了”,不愿苟同。问题是三楼是 moving 的,业务场景变化 客户需求变化 产品角度变化 ……  都使得三楼细活显得琐碎而不容易概括。

白:
不会
那都是贴牌问题,瓤不是moving的。

李:
二楼是清晰定义的目标。在我看来,二楼的 svoc 正是不变之瓤。

白:
我的二楼是让有关系的都勾搭上。是什么关系你们到三楼谈。但是自带了三楼才会用到的插销插座的,不妨提前锁定。到了三楼,就只剩贴牌了。但是也有需要必须在三楼才能锁定的,二楼无须代劳和强制。

李:
理论上 必须在三楼做的 只是领域知识。这些知识在二楼是避开的。

白:
另外贴牌是很外在的东东,没必要单独一层,只相当于在三楼化个妆。只需要示例就可以让领域的人干,都不用跟语言学家打照面。

李:
然,贴牌很多时候不过是 config,可以让用户或产品经理根据喜好而定,随时更换。

白:
跨领域的实体数据库,这个环节可以众包。领域知识说起来是无底洞,但是做法不同收效相差很远。根本分歧是,知识的使用是“推演”的套路还是“联想”的套路。“推演”的套路精准但笨重,只能借助人工而无法借助大数据。“联想”的套路模糊而轻盈,不过多依赖人工而寻求借助大数据讨巧。只要模糊给出的效果是应用可容忍的,“联想”的套路就会胜出。所以,哈工大做的“事理图谱”如果沿着联想的路往前走,我很看好。有理由相信,语言处理需要的知识,不是“精准”而是“轻盈”。对话场合大不了还可以追问。文本场合虽然不能受理追问,但受众有相对充分的时间调动“精准”的手段。二楼的高和矮,如果涉及到二楼的业绩,确实另当别论。如果二楼三楼的发明人都是公司的大老板,或许另样格局。这两碗水怎么端都是平的。

 

 

【相关】

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

乔姆斯基批判- 李维

中文处理

Parsing

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

《朝华午拾》总目录

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

白:
定义subcat很有讲究的,后面有强大的数学。什么类型填什么类型的坑,结果是什么类型,数学早给我们准备好工具了。不知道这种数学,只能“自发”地做。知道了,就有条件“自觉”地做。type theory,带类型的lambda演算,早就给我们准备好了工具。为什么说小词也可以负载结构,原理是同样的。不是心血来潮,不是头疼医头,不是工程上的取巧,是有数学支持的。

李:
以前流行的那些 unification grammars or constraint based grammars 都是建立在 typed feature structures 之上的: CFG GPSG HPSG.  对于 type hierarchy and it’s inheritance, 对于 attribute value 的 type appropriateness 都有说法, Typed feature structure 是这些文法的形式化基础。不知道这是不是就是所指的背后的数学或逻辑。

白:
type化最彻底的就是categoral grammar,但是CG最大的问题就是不实用。我已经把CG改造成了非常实用的程度,但是底子还是CG的底子。十多年前,我的学生@赵章界 (也在本群)的博士论文已经对中心词的继承特性在CG当中的形式化机制做了刻画。我最近的工作,进一步把这种继承性和修饰关系做了无缝对接。

李:
CG 没钻研过。其他那些文法的 typed feature structure 主要就是一种表达语言信息的数据结构,与软件工程里面 object-oriented class hierarchy 有很多相通之处。涉及到“演算”的似乎主要在表达语义的那部分feature structure (SEM)。自然语言的语义有一个总的原则是composionality, 就是用有限的语言材料(词,成语)组合成无限的句义。于是当一个单位与另一个单位在parsing中结合的时候,就有个怎样从简单的词义一步步“演算”成短语和句子语义来的课题。但这个演算过程,也带有浓厚的自己跟自己玩逻辑的成分。那些精心构造出来的句子的“语义”表达,显得繁琐、繁复,逻辑上好看,但实际语义落地其实并不一定需要这种。

白:
一眼看现状不中用就扔掉是一种策略。把它改造成中用是另一种策略。

李:
在feature structure unification based的系统中,这种演算就是通过structure sharing 让信息在feature结构中跳来跳去。跟玩游戏似的。如果某个语义在SEM整体的表达中没安排妥帖,或者缺乏合适的地方去表示,就挖尽心思改造那个 SEM structure,结果弄得越来越烦琐哲学。眉毛胡子一把抓,为语义而语义,忘记了语义落地的初衷。玩过一遍这类游戏以后,就开始删繁就简。

白:
化腐朽为神奇,有窍门的。单子化(singleton)是关键。废弃多层结构,把萝卜和坑摆到同一个桌面上。世界顿时清明。这里面藏着一个大秘密。

李:
你这也是删繁就简。那些复杂feature结构,都是那么的侯门深似海。错综复杂,各种嵌套,逻辑上能讲出很多道道来。

白:
但是singleton这是一个最有意思的子集。逻辑上一样有道理。只不过躲开了复杂结构而已。但那些复杂结构本来就是添乱的。本质上有用的,singleton足够了。

李:
同意应躲过复杂结构。我的系统是基于 atomic features 的。

白:
毛毛虫假设下,singleton is enough,所以,叠床架屋的结构已经事实上废掉,但数学上仍是严谨的。去掉其他冗余,只剩下唯一一种可以还原为singleton的结构。这是毛毛虫的最大贡献。所以我面对的不是通用的CG,不是通用的复杂特征集,而是专为毛毛虫准备的singleton类型演算。好像人类的语言从遗传上就是只为singleton准备的。换了任意定义的一个CFG,还不一定能占到这个便宜呢。

singleton就是萝卜和坑只有一层,不嵌套。所有嵌套都可以简化为修饰和合并。修饰是继承的简化形式,合并是括号下分配律的简化形式。还原了都是填坑。本质上只有填坑一种运算。但是通过用修饰和合并来重写(rewrite)某些填坑,整个体系就完全扁平化了。这个工作,写论文也是拿得出手的,不过我目前还真顾不上。

李:
白老师有时间举几个例子就好了,说明怎么扁平化。

白:

李:
怎么讲?

白:
左面是CG,右面是我的简化

李:
上面是:形+名。逻辑上,形是谓词,名填坑:beautiful(girl)。结构上,形在前,修饰名。形被名吃掉:[(beautiful) girl]。

白:
在CG,是 名 被 形 吃掉,再吐出一个 名。在坑论,是 名 吸收掉 形。
关键是输出的路径,一个在形,一个在名。

李:
名是head。逻辑上,名被形吃掉没有问题。但是结构上的head怎么办呢?吐出一个名不能解决head的问题,因为head涉及的不仅仅是POS,而是一套 head features(包括本体及其taxonomy)以及head token,包括词形。

beautiful girl == girl  (who is) beautiful

白:
当初为了解决这个矛盾,设计了CG输入输出之间的绑定机制,但是仍然不够直接。

李:
修饰与填坑的关系不是在一个平面。

白:
现在的表示最直接:修饰是填坑+绑定的简化。简化以后,就都变成singleton了,俗称“捋直了”,

李:
修饰是句法关系(是反映结构上的主与次),而填坑是逻辑关系,反映的是谓词与arg?左边CG的表达,没看明白。右边倒是显得简单了:作为 singleton , N+ 就是一个 atomic POS,等价于JJ,他右边遇到N(就是POS NN),就被吃掉。JJ被NN吃掉,算是绑定?那NN填JJ的坑,表现在哪里呢?

白:
已经重定向了。JJ可以认为没有坑了。

李:
这种逻辑关系与结构关系在语义表达上的纠缠,在ING词表现更明显:
ING做修饰语的时候,譬如 running dog,一方面是一个被吃掉的可有可无的修饰语,另一方面 running 作为逻辑谓词,需要一个逻辑主语来填坑。结构上的 head 这时候屈尊成了填坑的萝卜(arg)。

白:
了,也是一样。逻辑上,了 是(S/N)/(S/N),但我们把它简化成+S

李:
+S 就是吃一个S 吐一个S?
吃一个 Aspect unspecified S,吐一个 Aspect=Perfect的S。

白:
@wei 然

刚才ing,如图:两个S消掉了,剩下两个N。在汉语里,如同“这本书的出版”。

李:
ing怎么就成了 N/S
可以把词尾看成小词,所谓小词负载结构。

白硕:
上图是CG:吃一个S,吐一个N。我现在的做法见下图:

+N结构强制分子上的S到N,分母上的N不变。填动词的坑变为填名词的坑了,因为被修饰语被修饰语强制了。

李:
N/N不就是 N+吗?N+ == JJ

白:
不是。二者不等价。这是一个真的坑,没有绑定机制。
这本书的出版,输出的是出版,不是这本书

李:
这本书 结构上是可有可无的修饰语,“的”来引导,逻辑上是arg,这双重身份(mod and arg),赶巧挂靠的都是相同的老子。“出版”的arg(宾语)是“这本书”;“出版”的mod也是“这本书”。比较:“这本书的出版” vs “出版的这本书”。

白:
我在说英语的ing,谈到“的”只是类比。英语的ing,从右侧修饰动词原形,把动词强制为名词,把动词带的坑也强制转为名词带的坑:their publishing the book

李:
这个CG好玩,吃啊吐啊的,当年怎么没注意它。

白:
没有绑定机制的CG,语言学意义是有限的,更像是数学而不像语言学。我的学生@赵章界 引入绑定机制后,才像语言学了。但是赵的工作许多人没有注意到它的核心价值。

李:
当年看过一点那啥 蒙氏文法,形式语义,这个演算那个演算的,被绕糊涂了。没看懂。

白:
Montago

李:
对,里面有Lambda演算啥的,对我太抽象了。记得Montago看不懂,就找中文的来看。原文看不懂的,中文就更看不懂了。就拉倒了。

什么叫绑定机制?

白:
就是吃的和吐的,具有同一性。如果将来吐的参与任何操作,都要把吃的带上。吃的所携带的任何语义特征,也都被传导给吐的。绑定机制基本就是这个意思。

李:
这个听上去就是HFP(Head Feature Principle)。大白话就是一个短语,头词是其代表,头词决定一切。坚持党的一元化领导不动摇。真正实现的时候,根本就不需要像HPSG那种,把 features 定义到嵌套的HEAD结构去,然后上下传来传去的。麻烦。还是我导师刘老师简单直接,head就是直接把修饰语吃掉,是真地吃掉了,看不见了。这么一来信息,就无需传送了。

白:
但是用原教旨的CG,即使引进了绑定机制,仍然是叠床架屋。我现在的方案就极为简单了,就是吃掉。但是理论上它是CG的简化形式。CG的所有严谨性都包含在里面。但是省去了传递。

李:
那些叠床架屋,主要是为了鸡零狗碎的一些边边角角的所谓 non-head features,为此不得不把 HEAD features 嵌套起来。真是为了芝麻,挤压了西瓜。

白:
叠床架屋的缺点去掉,优点保留。毛毛虫的毛刺。很多可以通过中间件摆平,就不需要这些边边角角了。

李:
这个中间件相谐,的确是个好东西。动态隐含地引进了常识,却没有了常识管理的负担。这是亮点和创新。以前的优选语义学(Preference Semantics)一直就困扰在尺寸无法掌握,现在用大数据解决了这个困扰。

白:
而且中间件只管二元关系,不需要涉及复杂结构。所有复杂结构都被singleton填坑化解了。只剩下扁平的二元关系。

李:
常识的基础形式就是二元的,即便牵连到多元,也可以用多个二元来近似:【animate】吃【food】,这个三元常识,不就是两个二元关系吗。

白:
用我的话说,就是“吃”挖了两个坑。两个坑和萝卜摆在一个货架上。这就是singleton。

李:
蛮好。
当然二元近似可能不完全等同它,但实践中的些微偏差,从效果上看,已经可忽略不计了。

白:
所以,我的方法,贯穿着CG的原理,但外部表现很像DG。在对小词的处理上比DG更为彻底,所有小词都纳入二元关系。而二元关系的背后有类型演算的数学作为基础。绝不是随意的或者为了工程而武断设定的。

李:
其实我们的做法和策略,有很多殊途同归的地方。不是高攀。都是各自思索多年,不约而同的决定舍弃什么,采纳什么。我现在缺的是大数据中间件,你那边还是单层,当然,你在单层里面加了优先啥的,近似了多层。

白:
有算符优先,单层也相当于多层

李:
但我还是觉得单层伸展不开,有点凑合事儿的味道。多层符合软件工程的标准做法,模块化。真正是把语言学当工程去做。

白:
但是如果引入kick of,单层+优先更轻便。

李:
对于复杂结构的舍弃或扬弃,我们思路是一致的:atomic features or singlton
当然严格说,singlton的subcat标注,比起复杂特征的SUBCAT 的精细描述以及里面体现的句法语义一体化,也显得有些伸展不开。但问题不大了,得大于失。

白:
语义那边自有知识图谱来承担更加复杂结构的表示。对接的途径都在,不会跑到途径外面去。句法的目标极为有限。伸展得开与否,要相对于这个有限目标来评估。不存在绝对的标准。这无非是二楼和三楼的分工问题。

李:
还有一点风格上的差异或美感因素在。
据说写 Unix 的人与写 Windows 的人,是两种人。互相看不上。后者嫌前者小家子气,前者不能忍受后者的挥霍。

白:
都很伟大。

 

【相关】

[转载]【白硕 – 穿越乔家大院寻找“毛毛虫”】

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

中文处理

Parsing

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

《朝华午拾》总目录

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

白:
话说,分层针对的是token间的二元关系,而token本身是不长眼睛的。所以一个token理论上可以喂给多层,此其一。随着各层的动态演化,可能会临时生出之前扫描不到的新的高优先级关系,甚至这种关系会把之前已经填好坑的萝卜再连根拔起。此其二。这样,虽然还可保持“线速”,但极端场景可能就是2N,而不是N。kick off的机制是一定要的。数理不一定等距,反而可以更细微地反映不等距。

李:
白老师今天的话起了个头,可以展开看看。其一其二说了分层面对的问题。但不足以否定分层。另外,2N有啥关系?可忽略不计吧。

分层多层是法宝。法宝到我其实不应该去宣扬,更不要去argue,自个儿得了好处一边偷着乐不好吗。粗话说,属于嘴欠。唯一的 catch 是,并不是承认或向往多层好处的人,都可以几刀就切干净。这时候语言学经验开始发力。

kick off机制点解?

白:
所谓kick off,可参见一排单摆,最后一个进来,第一个出去,其他纹丝不动。
“他死去多年的战友”“他死去多年的消息”前者启动kick off,后者不启动。“他不务正业、整天游手好闲的发小”;“他生前被人深深误解、死后被人广为称道的施政方针”。根本就不用勉强一定要看多远,远到不能错。先将错就错,占住坑再说,对的来了把我踢走就是了。可万一没错呢?再厉害的播音员也有buffer overflow的时候。“他不务正业、整天游手好闲的毛病”;“他生前被人深深误解、死后被人广为称道的传奇故事”。有kick off兜底,再长也不怕了。短的如“王冕死了父亲”也照用不误。当然,稍微加点条件就少一次折腾。lookahead什么的。

李:
嗯。
听上去就是休眠唤醒之一种。

白:
不是词法级,而是句法级。不预设无限大窗口,当前有限窗口里优先级最高的先处理掉。等到动态过程中优先级更高的来到,已处理的结果可以废掉。废掉是一对一的,不是全局性的redo。被set free的成分重新等待新的结合机会。具体到一个一个pair ,语言学知识的重要性毋庸置疑。但是local犯错误必须global来纠正的情况永远是存在的。这个时候,仍然寄希望于语言学知识来纠正,一定会按下葫芦起来瓢,而某种语言学无关的算法上的安排才是真正的出路。

李:
感觉主要还是语言学,不过是远距离的结构起作用罢了。句法级的休眠唤醒说到底就是修正local的关系(注意,local指的是短距离,不等于浅层关系,它可以在浅层,也可以在深层,可以是结构图的任意局部),对应的自然是局部修正 哪里化脓哪里上紫药水。所谓“推倒重来”就是除旧布新,最多是个 subtree,不会是全局革命。 全局推倒重来不 make sense,多层分层的路线决定了每一层绝大多数的关系是对的 要远距离唤醒和改正的必定是少数。如果不是大多数是对的 这只能说明层次的刀切错了 是语言学模块化的失败。模块化照顾的是步步为营多数受益的依存关系。在多层看来是一致的。

白:
语言学对与错都是数据的问题,不需要涉及算法。远距离唤醒需要的是算法而不是数据。算法不接受多数暴政。如果不想错得太难看,即使是小概率也要兜底。

李:
所谓远距离不过是顶层或接近顶层而已。到了接近顶层,再远距离 都变成 local tree.  天涯若比邻。

白:
分层和单向是两个概念,单向是不许后悔。分层不排斥后悔。

李:
对呀。
很多问题源自单层算法。多层以后 问题就没了。每一层的算法不必变,最多是增加一些 config而已 允许以可控的不同方式去处置。那是文法的running,不是文法的编译问题。

白:
如果在被语言学知识选中的pair之间加一些虚拟运算符,这个问题就像乘法比加法优先一样自然。

李:
哈。
怎么玩都可以。

白:
分层和算符优先是多么等价啊……

李:
分层更厉害。厉害就鲁莽。好在可以悔棋。因此多层与休眠唤醒是天然合作的。维持了线性,也维持了模块化和可维护。

白:
固定长度滑动窗口的算符优先,也需要悔棋配合。这是同样道理。而悔棋是一个算法问题,独立于具体的语言学知识。语言学知识都体现在算符里了。优先窗口计算算术表达式,也是会错的。窗口之外,是加号还是乘号,结果完全不同。有限窗口,加法乘法乘幂,这是领域知识。确定了谁比谁优先,这就是一个算法问题。限定了窗口有限,改错同样是一个算法问题。不是领域知识问题。不同点是,算术表达式中的算符是输入的一部分,而作为分析器输入的token序列中,没有算符。算符是local进行前后条件匹配后动态虚拟插入的。所以,对输入的扫描遍数不一样,极端情况下就是“两遍”。昨天说的2N就是这么来的。把语言学知识隐藏在算符后面,算法就可以一锅煮了。

李:
嘿嘿
算法机制化。不是要在算法上动手术 ,而是在算法的操作层面研究灵活性。

白:
所以,分层和算符优先真的是互通表里的。一锅煮不是错,一锅煮背后没有优先机制才是错。

李:
一锅煮要是等于单层 就难以恭维。

白:
优先机制中体现领域知识也是应有之义。有优先级的一锅煮等于变相分层。

李:
还是放不开,不够伸展。

白:
规则都没有了怎么会放不开

李:
而且优先级弄多了也麻烦,跟密电码似的,加强了规则之间的纠缠。

白:
跟层一样多就够了,又不是人去读

李:
规则与规则适度分开 是很讲分寸的

白:
不在一个优先级的pair不会纠缠。我们只看见pair,看不见规则。

李:
不是人去读?总得人调试呀。没有可读性 无法调试和维护。除非是神经。

白:
人调试,只需要调试一个优先级总表。语言学家完全看得懂,完全是数据。不是程序也不是算法,把算符搬来搬去而已。算符可以理解为特定类别的pair标签,比如<N+, N>这种pair,可能有几种,分别是什么标签,什么优先级,如此而已。单音节形容词修饰的定中结构、区别词修饰的定中结构、多音节形容词修饰的定中结构、的字结构修饰的定中结构、数量短语修饰的定中结构、核心角色介词(把、被、拿、将)构成的介词短语等等。它们的优先级不尽相同。有了这些做后盾,根本就不怕一锅煮。该先做的不会后做,因为窗口所限先做做错了的,随着窗口的滑动还会被踢掉,而且踢是点对点的,不会伤及无辜。语言学家完全不用关注kick off的实现,如果发生了kick off,语言学家是完全看得懂的。

总结一下观点:1、语言学知识用在局部;2、语言学知识转化为pair优先级、可作为虚拟算符纳入算符优先机制一锅煮;3、在窗口受限场景,可以引入kick off机制,支持句法级的休眠唤醒;4、因为输入token序列并不包含虚拟算符,虚拟算符的插入在极端情况下需要多浪费一遍扫描。

李:
虚拟算符是什么东东?

白:
可以理解为给一个二元关系在语言学上定性的标签。二元关系的两端token即使一样,语言学标签仍然可能不同,需要根据优先级区分和前后条件判据的需要加以细分。

李:
句法关系细类。

白:
我的大类只有填坑、合并、修饰、升格、降格,细分是必须的。但句法层面仅限于“控制优先顺序所必须”,绝不扩大化。五大类中,二元关系只有前三类,后两类只涉及自己,
一元。

所谓“绝不扩大化”,比如逻辑主谓,是不需要分的。但是萝卜来自坑的左方还是右方,这个区分可以有。因为,右方萝卜填谓词的坑,优先级高于左方。

白:
一个算术表达式,有加减,有乘除,有乘幂,还有括号。我们怎么确定对表达式的解析是一锅煮的还是分层的?在设定优先级的时候,事实上已经分层了,叫不叫分层纯属个人爱好。

李:
这个比喻贴切。

 

【相关】

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

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

中文处理

Parsing

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

《朝华午拾》总目录

【立委科普:NLP 联络图 】

“NLP 不是魔术,但是,其结果有时几乎就是魔术一般神奇。”

引自:http://www.confidencenow.com/nlp-seduction.htm

【立委按】说明一点 写这篇nlp联络图科普的时候 深度学习还没火。 ai 还没有摇身一变 ,被 dl 所窃取。当时的机器学习界 还在鄙视 取笑 并与 ai 保持距离。没想到现如今 ai 居然被看成了 dl 的同义词 突然成了香饽饽。言必称神经,连 NLP也被窃取了,也与dl划了等号。符号逻辑派的AI与规则系统的NLP,做了一辈子,到头来连“家”都没了。一切皆是学习,一切都要神经。但我相信天变了,道却不变,因此下面的联络图或可超越神经一统天下的狭隘思维。拨乱反正,谈何容易。还是一家之言,愿者上钩吧。

 
 (NLP Word Cloud, courtesy of ourselves who built the NLP engine to parse social media to generate this graph )

【立委原按】样板戏《智取威虎山》里面,杨子荣怀揣一张秘密联络图而成为土匪头子座山雕的座上客,因为在山头林立的江湖,谁掌握了联络图,谁就可以一统天下。马克思好像说过人是社会关系的总和,专业领域又何尝不是如此。在关系中定义和把握 NLP,可以说是了解一门学问及其技术的钟南山捷径。老马识途,责无旁贷,遂精雕细刻,作联络图四幅与同仁及网友分享。此联络图系列可比林彪元帅手中的红宝书,急用先学,有立竿见影之奇效。重要的是,学问虽然日新月异,永无止境,然而天下大势,在冥冥中自有其不变之理。四图在手,了然于心,可以不变应万变,无论研究还是开发,必不致迷失革命大方向。

一个活跃的领域会不断产生新的概念,新的术语,没有一个合适的参照图,新人特别容易湮没其中。新术语起初常常不规范,同一个概念不同的人可能使用不同的术语,而同一个术语不同的人也可能有不同的解读。常常要经过一个混沌期,研究共同体才逐渐达成规范化的共识。无论是否已经达成共识,关键是要理解术语的背后含义 (包括广义、窄义、传统定义,以及可能的歧义)。加强对于术语的敏感性,不断探究以求准确定位新概念/新术语在现有体系的位置,是为专业人员的基本功。本文将

围绕这四幅自制联络图,

NLP 相关的术语做一次地毯式梳理和解说。本文提到的所有术语在第一次出现时,中文一律加下划线,英文斜体(Italics),大多有中英文对照,有的术语还给出超链,以便读者进一步阅读探索。
在我们进入NLP 系列联络图内部探究其奥秘之前,有必要澄清自然语言处理NLP)的一般概念及其上位概念,以及与 NLP 平起平坐或可以相互替换的一些术语。
NLP  这个术语是根据“自然语言”这个问题领域而命名的宽泛概念。顾名思义,自然语言处理就是以自然语言为对象的计算机处理。无论为了什么目标,无论分析深浅,只要涉及电脑处理自然语言,都在 NLP 之列。所谓自然语言Natural language)指的即是我们日常使用的语言,英语、俄语、日语、汉语等,它与人类语言Human language)是同义词,主要为区别形式语言Formal language),包括计算机语言Computer language)。自然语言是人类交流最自然最常见的形式,不仅仅是口语,书面语也在海量增长,尤其是移动互联网及其社交网络普及的今天。比较形式语言,自然语言复杂得多,常有省略和歧义,具有相当的处理难度(hence 成就了 NLP 这个专业及其我们的饭碗)。顺便一提,在自然语言灰色地带的还有那些人造语Artificial language)方案,特别是广为流传的世界语Esperanto),它们的形式与自然语言无异,也是为人类交流而设计,不过是起源上不太“自然”而已,其分析处理当然也属 NLP。(笔者N多年前的机器翻译专业的硕士课题就是一个把世界语全自动翻译成英语和汉语的系统,也算填补了一项空白。)
NLP  经常等价使用的术语是计算语言学Computational Linguistics, or, CL)。顾名思义,计算语言学 是 计算机科学Computer Science)与语言学Linguistics)之间的交叉学科。事实上,NLP  和 CL 是同一个行当的两面,NLP  注重的是实践,CL 则是一门学问(理论)。可以说,CLNLP 的科学基础,NLPCL 的应用过程。由于 CL 与数理等基础学科不同,属于面相应用的学问,所以 CL NLP 二者差不多是同一回事儿。其从业人员也可以从这两个侧面描述自己,譬如,笔者在业界可称为NLP工程师(NLP engineer),在学界则是计算语言学家Computational linguist)。当然,在大学和研究所的计算语言学家,虽然也要做 NLP 系统和实验,但学问重点是以实验来支持理论和算法的研究。在工业界的 NLP 工程师们,则注重 real life 系统的实现和相关产品的开发,奉行的多是白猫黑猫论,较少理论的束缚。
另外一个经常与 NLP 平行使用的术语是 机器学习Machine Learning, or, ML)。严格说起来,机器学习与 NLP 是完全不同层次的概念,前者是方法,后者是问题领域。然而,由于机器学习的万金油性质(谁说机器学习不万能,统计学家跟你急),加之 ML 已经成为 NLP 领域(尤其在学界)的主流方法,很多人除了机器学习(如今时兴的是深度学习,或曰深度神经网络),忘记或者忽视了 NLP 还有语言规则的方法,因此在他们眼中,NLP  就是机器学习。其实,机器学习并不局限于 NLP 领域,那些用于语言处理的机器学习算法也大多可以用来做很多其他人工智能Artificial Intelligence, or AI)的事儿,如股市预测Stock market analysis)、信用卡欺诈监测Detecting credit card fraud)、机器视觉Computer vision)、DNA测序分类Classifying DNA sequences),甚至医疗诊断Medical diagnosis)。
NLP 领域,与机器学习平行的传统方法还有语言学家(linguist)或知识工程师(knowledge engineer)手工编制的语言规则Linguistic rules, or hand-crafted rules),这些规则的集合称计算文法Computational grammar),由计算文法支持(or 编译)的系统叫做规则系统Rule system)。
机器学习和规则系统这两种方法各有利弊,可以取长补短。统而言之,机器学习擅长文档分类Document classification),从宏观上粗线条(course-grained)把握语言现象,计算文法则擅长细致深入的语言学分析,从细节上捕捉语言现象。如果把语言看成森林,语句看成林中形态各异的树木,总体而言,机器学习是见林不见木,计算文法则见木不见林(本来这是很自然的互补关系,但双方都有不为少数的“原教旨主义极端派”不愿承认对方的长处,呵呵)。从效果上看,机器学习常常以覆盖面胜出,业内的术语叫高查全率High recall),而计算文法则长于分析的精度,即高查准率High precision)。由于自然语言任务比较 复杂,一个实用系统(Real-life system)常常需要在在粗线条和细线条(fine-grained)以及查全与查准之间取得某种平衡,因此结合两种方法的 NLP 混合式系统Hybrid system)往往更加实惠好用。一个简单有效的结合方式是把系统建立成一个后备式模型back-off model),对每个主要任务,先让计算文法做高精度低覆盖面的处理,再行机器学习出来的统计模型Statistical model),以便粗线条覆盖遗留问题。
值得一提的是,传统 AI 也倚重手工编制的规则系统,称作符号逻辑派,但是它与语言学家的计算文法有一个根本的区别:AI 规则系统远远不如计算文法现实可行。AI 的规则系统不仅包括比较容易把握(tractable)和形式化(formalized)的语言(学)规则,它们还试图涵盖包罗万象的常识(至少是其中的核心部分)以及其他知识,并通过精巧设计的逻辑推理系统把这些知识整合起来。可以说,AI 旨在从本质上模拟人的智能过程,因雄心太大而受挫,以致多年来进展甚微。过去的辉煌也只表现在极端狭窄的领域的玩具系统(后来也发展了一支比较实用的专家系统),当时统计模型还是没有睡醒的雄狮。以 ML 为核心以大数据(Big data)为支撑的统计方法的兴起,让这种 AI 相形见绌。有意思的是,虽然人工智能(台湾同胞称人工智慧)听上去很响亮,可以唤起普罗大众心中的某种科学幻想奇迹(因此常常为电子产品的包装推销商所青睐),在科学共同体中却相当落寞:有不少统计学家甚至把 AI 看成一个过气的笑话。虽然这里难免有王婆卖瓜的偏见,但 传统 AI 的方法论及其好高骛远不现实也是一个因素。也许在未来会有符号逻辑派 AI 的复兴,但是在可预见的将来,把人类智能当作联接输入输出的黑匣子的机器学习方法,显然已经占了上风。
 
由此看来,ML AI 的关系,颇似 NLP CL 的关系,外延几乎重合,ML 重在 AI 的应用(包括 NLP),而传统 AI 理应为 ML 的理论指导。可是,由于方法学上的南辕北辙,以知识表达Knowledge representation)和逻辑推理Logical reasoning)为基础的传统 AI 越来越难担当实用智能系统Intelligent systems)的理论指导,智能系统的地盘逐渐为以统计学和信息论为基础的机器学习所占领。国宝熊猫般珍稀的坚持传统AI的逻辑学家(如 cyc 发明人 Douglas Lenat 老先生)与擅长 ML 的统计学家(多如恐龙)虽然问题领域几乎完全重合,解决方案却形如陌路,渐行渐远。
还有一个几乎与自然语言处理等价的术语,叫自然语言理解Natural Language Understanding, or NLU)。从字面上,这个义为“机器理解语言”的术语 NLU 带有浓厚的人工智能的烂漫主义意味,不象“机器处理语言”那样直白而现实主义,但实际上,使用 NLP 还是 NLU, 正如使用 NLP 还是 CL 一样, 往往是不同圈子人的不同习惯,所指基本相同。说基本相同,是因为 NLP 也可以专指浅层的语言处理(譬如后文会提到的浅层分析 Shallow parsing),而深度分析(Deep parsing)却是 NLU 的题中应有之义,浅尝辄止的不能登 NLU/AI 的大雅之堂。不妨这样看,带上AI的眼镜看,此物为NLU;而以 ML 而观之,则此物只能是 NLP
此外,自然语言技术或语言技术(Natural language technology)也是 NLP 的通俗化表达。
既然 NLP 的等价物 CL 有两个parents,计算机科学语言学NLP 的上位概念也自然可以有两位:NLP 既可以看作是计算机科学的一个应用分支,也可以看作是语言学的一个应用分支。事实上,广义的应用语言学Applied linguistics)是包含计算语言学和 NLP 的,不过由于计算语言学作为一个独立学科已经站住脚跟半个多世纪了(其主要学刊是《Computational Linguistics》,学会是 ACL,顶级国际会议包括 ACL 年会和 COLING 等),(窄义的)应用语言学现在更多用来表示语言教学和翻译这样的实用领域,不再下辖计算语言学这个分支。
从功能上看,NLPML 一样,同属于人工智能的范畴,特别是自然语言理解以及NLP的种种应用,如机器翻译。所以,广义的人工智能既是机器学习的上位概念,也是自然语言处理的上位概念。然而,如上所说,窄义或传统的人工智能强调知识处理包括常识推理common-sense reasoning),与现行的 ML NLP  数据制导data-driven)现状颇有距离,因此有 NLP 学者刻意保持与传统AI的距离以示不屑为伍。
千头万绪,纲举目张,下文分四个层次、用四幅联络图来讲解 NLP per se。四个层次分别是:
1. 语言层(linguistic level);
2. 抽取层(extraction level);
3. 挖掘层(mining level);
4. 应用层(app level)。
这四个层次的关系,基本就是自底而上的支持关系:1 ==》2 ==》 3 ==》4。显然,NLP 的核心句法分析器(Parser)处于第一层, 而《自动民调》、《问答系统》、《机器翻译》这样的系统则是第四层应用的例子。
需要说明的是,NLP 的对象自然语言有两种形式,语音Speech)和文本Text),因此NLP自然涵盖语音方面的两个重要方向:1. 教授电脑听懂人话的语音识别Speech recognition);2. 教授电脑说人话的语音合成Speech synthesis)。由于笔者对语音处理Speech processing)比较外行,本系列专谈针对文本的NLP,视语音识别和语音合成为文本处理(Text processing)的 前奏和后续。事实上,在实际的语言系统中,语音处理和文本处理的分工正是如此,譬如 NLP 在手机上最新应用如苹果的 Siri 就是先行语音识别,输出文本结果,再行文本分析,然后根据分析理解的结果采取行动(根据主人指令去查天气预报、股票、播放某支音乐等等)。

净手焚香阅好图

我把 NLP 系统从核心引擎直到应用,分为四个阶段,对应四张框架图。
最底层最核心的是 deep parsing,就是对自然语言的自底而上层层推进的自动分析器,这个工作最繁难,但是它是绝大多数NLP系统的我称之为带有核武器性质的基础技术,因为自然语言作为非结构数据因此而被结构化了。面对千变万化的语言表达,只有结构化了,patterns 才容易抓住,信息才好抽取,语义才好求解。这个道理早在乔姆斯基1957年语言学革命后提出表层结构到深层结构转换的时候,就开始成为(计算)语言学的共识了。结构树不仅是表达句法关系的枝干(arcs),还包括负载了各种信息的单词或短语的叶子(nodes)。结构树虽然重要,但一般不能直接支持产品,它只是系统的内部表达,作为语言分析理解的载体和语义落地为应用的核心支持。

接下来的一层是抽取层 (extraction),如上图所示。它的输入是结构树,输出是填写了内容的 templates,类似于填表:就是对于应用所需要的情报,预先定义一个表格出来,让抽取系统去填空,把语句中相关的词或短语抓出来送进表中事先定义好的栏目(fields)去。这一层已经从原先的领域独立的 parser 进入面对领域、针对应用和产品需求的任务了。

值得强调的是,抽取层是面向领域的语义聚焦的,而前面的分析层则是领域独立的。因此,一个好的架构是把分析做得很深入很逻辑,以便减轻抽取的负担。在深度分析的逻辑语义结构上做抽取,一条抽取规则等价于语言表层的千百条规则。这就为领域转移创造了条件。

有两大类抽取,一类是传统的信息抽取(IE),抽取的是事实或客观情报:实体、实体之间的关系、涉及不同实体的事件等,可以回答 who did what when and where (谁在何时何地做了什么)之类的问题。这个客观情报的抽取就是如今火得不能再火的知识图谱(knowledge graph)的核心技术和基础,IE 完了以后再加上下一层挖掘里面的整合(IF:information fusion),就可以构建知识图谱。另一类抽取是关于主观情报,舆情挖掘就是基于这一种抽取。我过去五年着重做的也是这块,细线条的舆情抽取(不仅仅是褒贬分类,还要挖掘舆情背后的理由来为决策提供依据)。这是 NLP 中最难的任务之一,比客观情报的 IE 要难得多。抽取出来的信息通常是存到某种数据库去。这就为下面的挖掘层提供了碎片情报。

很多人混淆了抽取(information extraction) 和下一步的挖掘(text mining),但实际上这是两个层面的任务。抽取面对的是一颗颗语言的树,从一个个句子里面去找所要的情报。而挖掘面对的是一个 corpus,或数据源的整体,是从语言森林里面挖掘有统计价值的情报。在信息时代,我们面对的最大挑战就是信息过载,我们没有办法穷尽信息海洋,因此,必须借助电脑来从信息海洋中挖掘出关键的情报来满足不同的应用。因此挖掘天然地依赖统计,没有统计,抽取出来的信息仍然是杂乱无章的碎片,有很大的冗余,挖掘可以整合它们。

很多系统没有深入做挖掘,只是简单地把表达信息需求的 query 作为入口,实时(real time)去从抽取出来的相关的碎片化信息的数据库里,把 top n 结果简单合并,然后提供给产品和用户。这实际上也是挖掘,不过是用检索的方式实现了简单的挖掘就直接支持应用了。

实际上,要想做好挖掘,这里有很多的工作可做,不仅可以整合提高已有情报的质量。而且,做得深入的话,还可以挖掘出隐藏的情报,即不是原数据里显式表达出来的情报,譬如发现情报之间的因果关系,或其他的统计性趋势。这种挖掘最早在传统的数据挖掘(data mining)里做,因为传统的挖掘针对的是交易记录这样的结构数据,容易挖掘出那些隐含的关联(如,买尿片的人常常也买啤酒,原来是新为人父的人的惯常行为,这类情报挖掘出来可以帮助优化商品摆放和销售)。如今,自然语言也结构化为抽取的碎片情报在数据库了,当然也就可以做隐含关联的情报挖掘来提升情报的价值。

第四张架构图是NLP应用(apps)层。在这一层,分析、抽取、挖掘出来的种种情报可以支持不同NLP产品和服务。从问答系统到知识图谱的动态浏览(谷歌搜索中搜索明星已经可以看到这个应用),从自动民调到客户情报,从智能助理到自动文摘等等。

这算是我对NLP基本架构的一个总体解说。根据的是20多年在工业界做NLP产品的经验。18年前,我就是用一张NLP架构图忽悠来的第一笔风投,投资人自己跟我们说,这是一张 million dollar slide。如今的解说就是从那张图延伸拓展而来。

天变还是不变,道是不变的。

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

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博文一览】

《朝华午拾》总目录

【语义计算:领域专家是 AI 的未来】

Feng:
近来一些语言学泰斗提出汉语没有主谓结构的观点,轰动一时,我等做nlp的人怎么办?

Bai:
有无主谓无所谓,有坑就灵。名分的事,NLP不介入也不会损失什么。

Wang:
支持白老师的观点

Bai:
“这本书我只读了第一章。”
反正首先要回答“我、这本书、第一章、读”之间谁跟谁有关系(可以先不问是什么关系)。能答对的理论就比不能答对的理论强。我、这本书、第一章,都跟读有关系。这本书和第一章有关系。怎么起名,其实无所谓。

Dong:
“汉语没有主谓结构”,其实本来应该由nlp学者提出的。其实nlp界早有人对词类、词性标注、树库提出过挑战。然而,人微言轻,更何况语言学界的那种学术民主、平等观念的淡薄,阻碍了学术的发展。

Feng:
振东意见高明。

Feng:
语言学家不关心nlp的研究,但是又想指导nlp的研究。这是很遗憾的?

Liang:
NLP 由数学家研究比较好,也许。思路不一样。语言学家描述,language-as-we-know-it. 老乔的思路其实挺好的,什么样的机制能够生成语言。语言是怎样 emerge 出来的。白老师的“萝卜-坑理论”挺好的,挺简单,动词、形容词、一价二价名词是坑,专有名词都是萝卜。

Me:
语言学家不是不关心 是没法关心。不懂怎么关心?只好无视。各种跨学科的事儿 有很多,但像 nlp 这样的跨学科还是比较特别。特别就特别在 两边大都不懂,互相不认账 互相无视。 就是这样。

Bai:
小心有人躺枪~

Feng:
nlp是在深层次上跨学科,需要进行更新知识的再学习。

Me:
就是。即便做nlp的 互相不懂也不为少数。更不要指望纯粹的语言学家(人称文傻)去懂了,也不要指望精算师(统计学家、数学家,人称理呆)去懂语言学了。隔行如隔山,同行也隔山。没办法,术业有专攻。

Jiang:
太互相不懂了!

Liang:
这很正常。思路不一样。

Jiang:
嗯!亲身工作体验很重要。

Me:
冤家,属于人类学者的 spectrum 中的两极,两种不同的材料制造出来的人。不懂居多是常态;两边都懂属少数。两边懂得又深又透的,可尊为国宝,比大熊猫还稀罕。

Liang:
快灭绝了?

Me:
所处的层面不一样。

肯定有躺枪了。至少显得后继无人 不信问白老师。好在白老师桃李满天下,保不定出息几个出来。但大环境在那儿。大环境不利于跨学科相互了解和融入。

Bai:
我觉得微观上从语言学获得了许多营养,宏观上欠语言学一个理论创新。

Me:
我们这种半瓶水只能羡慕嫉妒了。燕雀仰慕鸿鹄之志。

有意思的是,nlp 回归语言学 是大势所趋。其实 整个 ai 都有回归的趋势。未来的 ai 是领域专家的天下。

Bai:
烈火过后看出来什么是真金

Me:
现在做nlp平台的少数贵族,做 ai 平台的极少数大神,都已经看到了,平台出来是给领域专家施展的,而不是给精算师的。高明的平台创造种种条件,让领域专家有最大的决策和施展的空间。

精算师将来只有两条路,要不升格为贵族,要不降格为机器人。想做领域专家也是一条路 可底子不行 又放不下身段 基本走不通。

Bai:
nlp称不上平台,引擎差不多

Me:
nlp 有平台的一面。当然 可以说 ai 平台涵盖了 nlp 平台,不过毛毛虫机制(formalism)的探索,现有的ai平台貌似不能完全涵盖。

我们所处的时代恰好是领域专家被歧视的时代。主流把领域专家看成资料员,或负担,不是一日两日了,是整整一代,有一代的断层。但大趋势是,领域专家在下一个时代会成为香饽饽,他们是 ai 的主力和实施的关键,质量的保证。对于可能降格为机器人的平台维护人员,领域专家是他们的客户,他们的上帝。一切为领域专家服务。

这不是乌托邦的图景,是有相当明显迹象的趋势。其实在小范围内,这也是一种已经实现过的模式。过去18年在我建立的环境中,基本就是采这种模式。语言学家团队属于领域专家,一直被伺候着。一个很深的体会是,领域专家中有两类,一类是可以培训出来,具有某种 engineering sense,因此可以适应这种 AI 模式。也有领域专家就是不入,虽然领域素养很深厚,但就是与 AI 无缘。

 

【相关】

[转载]【白硕 – 穿越乔家大院寻找“毛毛虫”】

【NLP主流的傲慢与偏见】 

【NLP主流的反思:Church – 钟摆摆得太远(1)】

【Church – 钟摆摆得太远(5):现状与结论】 

【李白对话录系列】

中文处理

Parsing

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

《朝华午拾》总目录

 

【自然语言系统架构简说】

对于自然语言处理(NLP)及其应用,系统架构是核心问题,我在博文【立委科普:NLP 联络图 】里面给了四个NLP系统的体系结构的框架图,现在就一个一个做个简要的解说。

我把 NLP 系统从核心引擎直到应用,分为四个阶段,对应四张框架图。最底层最核心的是 deep parsing,就是对自然语言的自底而上层层推进的自动分析器,这个工作最繁难,但是它是绝大多数NLP系统基础技术。

parsing 的目的是把非结构的语言结构化。面对千变万化的语言表达,只有结构化了,patterns 才容易抓住,信息才好抽取,语义才好求解。这个道理早在乔姆斯基1957年语言学革命后提出表层结构到深层结构转换的时候,就开始成为(计算)语言学的共识了。结构树不仅是表达句法关系的枝干(arcs),还包括负载了各种信息的单词或短语的叶子(nodes)。结构树虽然重要,但一般不能直接支持产品,它只是系统的内部表达,作为语言分析理解的载体和语义落地为应用的核心支持。

接下来的一层是抽取层 (extraction),如上图所示。它的输入是结构树,输出是填写了内容的 templates,类似于填表:就是对于应用所需要的情报,预先定义一个表格出来,让抽取系统去填空,把语句中相关的词或短语抓出来送进表中事先定义好的栏目(fields)去。这一层已经从原先的领域独立的 parser 进入面对领域、针对应用和产品需求的任务了。

值得强调的是,抽取层是面向领域的语义聚焦的,而前面的分析层则是领域独立的。因此,一个好的架构是把分析做得很深入很逻辑,以便减轻抽取的负担。在深度分析的逻辑语义结构上做抽取,一条抽取规则等价于语言表层的千百条规则。这就为领域转移创造了条件。

有两大类抽取,一类是传统的信息抽取(IE),抽取的是事实或客观情报:实体、实体之间的关系、涉及不同实体的事件等,可以回答 who dis what when and where (谁在何时何地做了什么)之类的问题。这个客观情报的抽取就是如今火得不能再火的知识图谱(knowledge graph)的核心技术和基础,IE 完了以后再加上下一层挖掘里面的整合(IF:information fusion),就可以构建知识图谱。另一类抽取是关于主观情报,舆情挖掘就是基于这一种抽取。我过去五年着重做的也是这块,细线条的舆情抽取(不仅仅是褒贬分类,还要挖掘舆情背后的理由来为决策提供依据)。这是 NLP 中最难的任务之一,比客观情报的 IE 要难得多。抽取出来的信息通常是存到某种数据库去。这就为下面的挖掘层提供了碎片情报。

很多人混淆了抽取(information extraction) 和下一步的挖掘(text mining),但实际上这是两个层面的任务。抽取面对的是一颗颗语言的树,从一个个句子里面去找所要的情报。而挖掘面对的是一个 corpus,或数据源的整体,是从语言森林里面挖掘有统计价值的情报。在信息时代,我们面对的最大挑战就是信息过载,我们没有办法穷尽信息海洋,因此,必须借助电脑来从信息海洋中挖掘出关键的情报来满足不同的应用。因此挖掘天然地依赖统计,没有统计,抽取出来的信息仍然是杂乱无章的碎片,有很大的冗余,挖掘可以整合它们。

很多系统没有深入做挖掘,只是简单地把表达信息需求的 query 作为入口,实时(real time)去从抽取出来的相关的碎片化信息的数据库里,把 top n 结果简单合并,然后提供给产品和用户。这实际上也是挖掘,不过是用检索的方式实现了简单的挖掘就直接支持应用了。

实际上,要想做好挖掘,这里有很多的工作可做,不仅可以整合提高已有情报的质量。而且,做得深入的话,还可以挖掘出隐藏的情报,即不是元数据里显式表达出来的情报,譬如发现情报之间的因果关系,或其他的统计性趋势。这种挖掘最早在传统的数据挖掘(data mining)里做,因为传统的挖掘针对的是交易记录这样的结构数据,容易挖掘出那些隐含的关联(如,买尿片的人常常也买啤酒,原来是新为人父的人的惯常行为,这类情报挖掘出来可以帮助优化商品摆放和销售)。如今,自然语言也结构化为抽取的碎片情报在数据库了,当然也就可以做隐含关联的情报挖掘来提升情报的价值。

第四张架构图是NLP应用(apps)层。在这一层,分析、抽取、挖掘出来的种种情报可以支持不同NLP产品和服务。从问答系统到知识图谱的动态浏览(谷歌搜索中搜索明星已经可以看到这个应用),从自动民调到客户情报,从智能助理到自动文摘等等。

这算是我对NLP基本架构的一个总体解说。根据的是近20年在工业界做NLP产品的经验。18年前,我就是用一张NLP架构图忽悠来的第一笔风投,投资人自己跟我们说,这是 million dollar slide。如今的解说就是从那张图延伸拓展而来。

天不变道亦不变。

以前在哪里提过这个 million-dollar slide 的故事。说的是克林顿当政时期的 2000 前,美国来了一场互联网科技大跃进,史称  .com bubble,一时间热钱滚滚,各种互联网创业公司如雨后春笋。就在这样的形势下,老板决定趁热去找风险投资,嘱我对我们实现的语言系统原型做一个介绍。我于是画了下面这么一张三层的NLP体系架构图,最底层是parser,由浅入深,中层是建立在parsing基础上的信息抽取,最顶层是几类主要的应用,包括问答系统。连接应用与下面两层语言处理的是数据库,用来存放信息抽取的结果,这些结果可以随时为应用提供情报。这个体系架构自从我15年前提出以后,就一直没有大的变动,虽然细节和图示都已经改写了不下100遍了,本文的架构图示大约是前20版中的一版,此版只关核心引擎(后台),没有包括应用(前台)。话说架构图一大早由我老板寄送给华尔街的天使投资人,到了中午就得到他的回复,表示很感兴趣。不到两周,我们就得到了第一笔100万美金的天使投资支票。投资人说,这张图太妙了,this is a million dollar slide,它既展示了技术的门槛,又显示了该技术的巨大潜力。


from 科学网—前知识图谱钩沉: 信息抽取引擎的架构

【相关】

Introduction to NLP Architecture

【立委科普:NLP 联络图 】

前知识图谱钩沉: 信息抽取引擎的架构

【立委科普:自然语言parsers是揭示语言奥秘的LIGO式探测仪】 

【征文参赛:美梦成真】

《OVERVIEW OF NATURAL LANGUAGE PROCESSING》 

《NLP White Paper: Overview of Our NLP Core Engine》

White Paper of NLP Engine

【置顶:立委NLP博文】

Introduction to NLP Architecture

(translated by Google Translate, post-edited by myself)

For the natural language processing (NLP) and its applications, the system architecture is the core issue.  In my blog (  OVERVIEW OF NATURAL LANGUAGE PROCESSING), I sketched four NLP system architecture diagrams, now to be presented one by one .

In my design philosophy, an NLP process is divided into four stages, from the core engine up to the applications, as reflected in the four diagrams.  At the bottom is deep parsing, following the bottom-up processing of an automatic sentence analyzer.  This work is the most difficult, but it is the foundation and enabling technology for vast majority of NLP systems.

160213sg5p2r8ro18v17z8

The purpose of parsing is to structure unstructured text.  Facing the ever-changing language, only when it is structured in some logical form can we formulate patterns for the information we like to extract to support applications.  This principle of linguistics structures began to be the consensus in the linguistics community when Chomsky proposed the transformation from surface structure to deep structure in his linguistic revolution of 1957.  A tree representing the logical form does not only involve arcs that express syntactic-semantic relationships, but also contain the nodes of words or phrases that carry various conceptual information.  Despite the importance of such deep trees, generally they do not directly support an NLP product.  They remain only the internal representation of the parsing system, as a result of language analysis and understanding before its semantic grouding to the applications as their core support.

160216n8x8jj08qj2y1a8y

The next layer after parsing is the extraction layer, as shown in the above diagram.  Its input is the parse tree, and the output is the filled-in content of templates, similar to filling in a form: that is the information needed for the application, a pre-defined table (so to speak), so that the extraction system can fill in the blanks by the related words or phrases extracted from text based on parsing. This layer has gone from the original domain-independent parser into the application-oriented and product-demanded tasks.

It is worth emphasizing that the extraction layer is geared towards the domain-oriented semantic focus, while the previous parsing layer is domain-independent.  Therefore, a good framework is to do a very thorough analysis of logic semantics in deep parsing, in order to reduce the burden of information extraction.  With the depth of the analysis in  the logical semantic structures to support the extraction, a rule at extraction layer is in essence equivalent to thousands of surface rules at linear text layer.  This creates the conditions for the efficient porting to new domains based on the same core engine of parsing.

There are two types of extraction, one is the traditional information extraction (IE), the extraction of facts or objective information: named entities, the relationships between entities, and events involving entities (which can answer questions like “who did what when and where” and the like).  This extraction of objective information is the core technology and foundation for the knowledge graph (nowadays such a hot area in industry).  After completion of IE, the next layer of information fusion (IF) is aimed at constructing the knowledge graph.   The other type of extraction is about subjective information, for example, the public opinion mining is based on this kind of extraction. What I have done over the past five years as my focus is along this line for fine-grained extraction of public opinions (not just sentiment classification, but also to explore the reasons behind the public opinions and sentiments to provide the insights basis for decision-making).  This is one of the hardest tasks in NLP, much more difficult than IE for objective information.  Extracted information is usually stored in a database. This provides huge textual mentions of information to feed the underlying mining layer.

Many people confuse information extraction and text mining, but, in fact, they are two levels of different tasks.  Extraction faces each individual language tree, embodied in each sentence, in order to find the information we want.  The mining, however, faces a corpus, or data sources as a whole, from the language forest for gathering statistically significant insights.  In the information age, the biggest challenge we face is information overload, we have no way to exhaust the information ocean for the insights we need, therefore, we must use the computer to dig out the information from the ocean for the required critical intelligence to support different applications. Therefore, mining relies on natural statistics, without statistics, the information is still scattered across the corpus even if it is identified.  There is a lot of redundancy in the extracted mentions of information, mining can integrate them into valuable insights.

160215hzp5hq5pfd1alldj

Many NLP systems do not perform deep mining, instead, they simply use a query to search real-time from the extracted information index in the database and merge the retrieved information on-the-fly, presenting the top n results to the user. This is actually also mining, but it is a way of retrieval to achieve simple mining for directly supporting an application.

In order to do a good job of mining, there is a lot of work that can be done in this mining layer. Text mining not only improves the quality of existing extracted information pieces, moreover, it can also tap the hidden information, that is not explicitly expressed in the data sources, such as the causal relationship between events, or statistical trends of the public opinions or behaviours. This type of mining was first done in the traditional data mining applications as the traditional mining was aimed at structured data such as transaction records, making it easy to mine implicit associations (e.g., people who buy diapers often buy beer, this reflects the common behaviours of young fathers of the new-born, and such hidden association can be mined to optimize the layout and sales of goods). Nowadays, natural language is also structured thanks to deep parsing, hence data mining algorithms for hidden intelligence in the database can, in principle, also be applied to enhance the value of intelligence.

The fourth architectural diagram is the NLP application layer. In this layer, the results from parsing, extraction, and mining out of the unstructured text sources can be used to support a variety of NLP products and services, ranging from the QA (question answering) systems to the dynamic construction of the knowledge graph (this type of graph is visualized now in the Google search when we do a search for a star or VIP), from automatic polling of public opinions to customer intelligence about brands, from intelligent assistants (e.g. chatbots, Siri etc.) to automatic summarization and so on.

16221285l5wkx8t5ffi8a9

This is my overall presentation of the basic architecture of NLP and its applications, based on nearly 20 years of experiences in the industry to design and develop NLP products.  About 18 years ago, I was presenting a similar diagram of the NLP architecture to the first venture investor who told us that this is a million dollar slide.  The presentation here is a natural inheritance and extension from that diagram.

~~~~~~~~~~~~~~~~~~~
Here is the previously mentioned million-dollar slide story.  Under the Clinton’s administration before the turn of the century, the United States went through a “great leap forward” of the Internet technology, known as Dot Com Bubble, a time of hot money pouring into the IT industry while all kinds of Internet startups were springing up.  In such a situation, my boss decided to seek venture capital for the business expansion, and requested me to illustrate our prototype of the implemented natural language system for its introduction.  I then drew the following three-tier structure of an NLP system diagram: the bottom layer is parsing, from shallow to deep, the middle is built on parsing for information extraction, and the top layer illustrates some major categories of NLP applications, including QA.  Connecting applications and the downstairs two layers of language processing is the database, used to store the results of information extraction, ready to be applied at any time to support upstairs applications.  This general architecture has not changed much since I made it years ago, although the details and layout have been redrawn no less than 100 times.  The architecture diagram below is about one of the first 20 editions, involving mainly the backend core engine of information extraction architecture, not so much on the front-end flowchart for the interface between applications and the database.  I still remember early in the morning, my boss sent the slide to a Wall Street angel investor, by noon we got his reply, saying that he was very interested.  Less than two weeks, we got the first million dollar angel investment check.  Investors label it as a million dollar slide, which is believed to have not only shown the depth of language technology but also shows the great potential for practical applications.

165325a3pamcdcdr3daapw

Pre-Knowledge Graph: Architecture of Information Extraction Engine

 

【Related Chinese Blogs】

NLP Overview

Pre-Knowledge Graph: The Architecture of Information Extraction Engine

Natural language parser is to reveal the mystery of the language like a LIGO-type detector

Dream come true

( translated from http://blog.sciencenet.cn/blog-362400-981742.html )

The speech generation of the fully automatically translated, un-edited science blog of mine is attached below (for your entertainment :=), it is amazingly clear and understandable (definitely clearer than if I were giving this lecture myself with my strong accent).  If you are an NLP student, you can listen to it as a lecture note from a seasoned NLP practitioner.

Thanks to the newest Google Translate service from Chinese into English at https://translate.google.com/ 

 

 

[Related]

Wei’s Introduction to NLP Architecture Translated by Google

OVERVIEW OF NATURAL LANGUAGE PROCESSING

NLP White Paper: Overview of Our NLP Core Engine

【李白对话录之六:NLP 的 Components 及其关系】

白:
“交杯酒”,似乎“交杯”修饰的不是“酒”。“散伙饭”比“交杯酒”好点,可能“饭”单指饭局比“酒”单指敬酒频率要高些。

我:
这不就是一个黑箱子吗,里面啥关系对语义计算有什么用呢?如果有用,那就在词典绑架性标出,如果没用,就不管它。“交杯酒” 与 “酒” 的不同,是前者有个坑 【with+human】:“与张三的交杯酒刚喝过,李四就跟他掰了。” 后者似乎也可以,但那个似乎随机性很强或者后者指的是前者的时候:“与张三的酒刚喝过。。。”

白:
考虑创造新说法的安全性和可接受性,这问题不能绑架了之。见面礼,也属此类。现在流行的“谢师宴”,若干年前肯定是不说的。如何“安全地泛化”,对于语言生成来说是新课题。

我:
如果说的是语言生成,譬如在机器翻译应用,那么,一个系统有选择的余地。不必要翻译成一个短小紧凑的 【合成词】 的表达方式。可以用比较散漫的句法表达方式,这样相对保险,也规避了 word formation 的泛化的问题,因为句法的本性就是泛化和随机,构词法则不然。“谢师宴” 可以表达成 “感谢恩师的宴会”。

白:
人机对话不同
需要惊喜

我:
白老师看的是未来,锦上添花的东西。现如今雪中送炭还远没解决。
如果是 parsing,这种泛化的合成词的确词典收不胜收。汉语的造词能力特强,需要专门的 compounding 的模块去识别。

白:
单字形容词重叠+的,应该是系统性的现象。词典化怎么看都不像正路子。

我:
应该是两手吧。常用的 aa 重叠,尤其是双字的合成词,常规词典有收。系统的 rule 也必须有,娄底,保证recall。何况 “美” 与 “美美” 不是 1+1 的关系。可以被 “美美” 所状的谓词,单个的 “美” 根本不可能,无论睡觉、吃饭。同理,“好好” 与 “好” 也差别很大。可是 “幸幸福福” 与 “幸福” 就完全是规律化、系统性的现象了。即便用法有别,也是系统性地有别。这与 “好好、“美美” 不同。

白:
美美,是当事人感觉美。好好,是提要求/愿望的人觉得满足要求。轻轻,是行动人的身体或者行动人操控的物品宛若很轻。这一切基本与谓词无关。

我:
“美美睡上一觉”;“睡一个美美的觉。”
说与谓词无关,谓词不同意吧。
如果无关,辛勤与工作也无关。辛勤也是说人,工作也是说人,当“辛勤”修饰(状语)“工作”的时候,两个人是一个人。
如果说句法上的修饰关系,到了逻辑语义层不应该有所反映的话,那么逻辑语义表达中就不存在定语从句的路径。那么,“我说的话” 与 “我说话” 的语义区别咋办呢?
目前我们的处理是:“我说的话” 有一个小句“我说话”,这个小句有一个修饰的路径(Mod-S)指向“话”。

0928b

白:
逻辑语义是一个“结构体”,标配是负载最外层结构的词对外。需要其他词对外时,就需要定语从句来改变。所以定语从句不改变结构内逻辑语义关系,只是指派了不同词语来“代表”结构对外而已。S-mod是一个句法关系,不是逻辑语义关系。

我:
我对逻辑语义的理解是宽式的,涵盖一切由语句表达的涉及概念之间关系的语义,表达的是人对语句的理解。有了逻辑语义,再加上节点上的概念(从语词到概念的映射,理论上要经过 WSD),就可以说人理解语言了。如果是机器达到了上面两项,那就是机器的自然语言理解了。从这个角度看,定语从句不仅仅是表层的句法关系,它也是深层的语义关系(在 argument structure 以外的另一个维度)。

白:
“吃饭”,和“吃的饭”,吃与饭的逻辑语义关系不变,只是这个结构体的对外代言人,一个落在“吃”,一个落在“饭”。

我:
没错,吃饭 与 吃的饭 在 arg structure 维度,逻辑语义完全一致。也因此我们的 deep parse tree 上,下面的小句是等同的。跳出这个SVO结构体以外的维度,或者说,这个 SVO 与其他 SVO 发生关联的时候,这种关联也是语言理解的必需,也是语义。至于这个语义及其形式化的表达,叫不叫逻辑语义,那是命名的问题。但它的确是理解的必需,也的确是语义,也不能说不逻辑。对于 “我喜欢吃饭”,这个“吃饭” 的 arg structure 就直接做了 “喜欢” 的对象,到了 “我喜欢我吃的饭”,这个 arg structure 就只能降一级,然后通过 “饭” 来做喜欢的对象。逻辑上,arg structure 只是一个最基本的事件语义元件。

白:
结构体能做萝卜的成分有多个,包括最外层谓词本身。这并没超出逻辑语义范围。真正超出的是语用,比如定语从句有“造成既成事实”因而“强加于人”的感觉。

我:
由于这些元件的叠加所产生的语义,在语言表达中有很多方式,而且语言的节省(或偷懒)原则,使得这些元件的坑里面的萝卜往往省略,造成了语言向逻辑映射的困难,构成了 deep parsing 的挑战。说定语从句是句法形式,表达的是语用,而不是语义。这种说法,可成一家之言。可是,语义和语用本来的界限就有相当的灰色地带,哪些东西可以从语用的边界拉到语义这边,哪些东西可以在语义中挂起来,留待语用去解,都是一个公婆各有理的 practice,实践中就是系统内部(system internal)的协调。

白:
“惯于充当世界警察的美国”,就有把“美国惯于充当世界警察”当作既成事实强加给受众的意思。

我:
我个人的原则是,凡是 domain independent 的,都应该在语义里面表达和求解。凡是关涉 domain 的,或应用的,那就先挂起来,留到语用去解。这是把语用(pragmatics)与应用(apps)紧密联系了。定语从句是独立于 domain 的,不管哪个 domain 哪个应用,定语从句所表达的那点意思,都是一样的。当然会遇到有些语义计算的现象,它似乎有某种 domain 独立性,但又不完全。这时候的定夺就有任意性。主张在语义阶段求解的,加重的是语义 component 的负担,节省的是那些对此现象有要求的 domains 的 work,浪费表现在对于那些对此工作没有要求的 domains,那个语义工作就是白费功夫了。

白:
你这语用不是pragmatics,而是language usage。pragmatics一定是领域无关的。但pragmatics同样独立于逻辑语义结构

我:
前者我不确定,也许 community 对 pragmatics 的理解是你所说的,那样的话,“我的语义定义”里面是包含了这部分的。后者好像不对, language usage 一般指的是纯粹语言学的句法、词法、习惯用法等表层的现象。language usage 不是一个语言学的相对独立完整的 component。

白:
或者application,反正不是pragmatics的意思。这误会不是一天两天了,之前听你说语用我就感觉对不上茬儿。

我:
哈哈。
用的不是同一套话语体系,交流的时候要是不相互了解的话,的确很别扭。
举个具体的案例。费尔默上个世纪70年代(?)提出格语法(Case Grannar,深层格)的时候,我的理解,这是语义。实际上就是逻辑语义。当他不断把这条路线往下进行的时候,终于越来越趋近语用,最后成就的 FrameNet 在我的理解体系里面是属于 “语义” 向 “语用” 过度的结果(因此我一直批评它说在NLP中不尴不尬),但仍然基本上是领域独立的,可以划在语义的大范畴里面。可是,到了 MUC 创立了 IE 的时候,这就不再是领域独立了,于是就完完全全成了语用。信息抽取领域定义的那些关于事件和关系(知识图谱的发源)的 Templates, 与费尔默定义的 FrameNet,从形式上看,是一体的。不过在 FrameNet 里面,成千的 Frames 组织成了一个基本独立于领域的 hierarchy ,到了 IE 就完全放弃了自上而下的这种继承,一切都是零敲碎打,随着领域 随着应用随时拼凑起来的 Templates,直接服务于产品。

白:
指代消解,言外之意推导等,这些才是“语用学”环节要解决的问题。
你在美国,只要不用pragmatics指你说的语用,啥事没有,但对国内的人就不同了。你说的语用,在国内叫知识表示。

我:
指代在我的“科普”体系里面,是另一个 component,属于 Discourse,那是另一个维度,是篇章的维度。知识表示 (knowledge representation)有两大类吧,一类就是 ontology,有普世的,譬如董老师的 HowNet,也有领域的,譬如,医学领域的 ontology(本体)。另一类知识表示是动态的、流动的,就是现在红透半边天的知识图谱,其基础就是 IE,加上 篇章的、跨文本的一些工作支持的融合(fusion),包括merging,deconflicitng 等 mining。

白:
句内也有指代,无需篇章。

我:
句内也有指代,所以才有以句子为最大单位的句法的与之交互。交互的结果就是乔老爷的所谓 Binding Theory 或 Principles,但是指代在借助句法做了句内的指代以后,自然的下一步是走向篇章。事实上 乔老爷的 binding 原则之一,就是把句法搞不定的,推向篇章。那个原则是,本句的某个 NP 不可能是这个指代词 (“自己”、“他”)的所指。根据这一原则,句法的作用只是否定了一种可能,留下的是其他的可能,让篇章去寻。

我的相关科普在:【立委科普:NLP 联络图 】(英文在:  OVERVIEW OF NATURAL LANGUAGE PROCESSING )。里面把与 NLP 有关的语言学 components 按照我自己的理解,梳理了一遍。

 

【相关】

【博士涂鸦回顾:把常识代入文法的尝试】

上次说过,绝大多数的parsers对于谓词的 subcat 的表达都很简陋,伸展不开,多数不过把 subcat 当成一个代码,然后在相关的 subcat 规则中去确定 pattern。但是词驱动的文法 HPSG 却可以丝丝入扣,合情合理,可以直接在词典里面把 subcat 的 pattern 细致地描述,并对其句法语义的输入(pattern的条件)和输出(逻辑语义)之间的映射和解构,做出一个符合语言学原则的表达(representation)。

简陋有简陋的工程考量和理由,叠床架屋有叠床架屋的逻辑优美。鱼与熊掌不可兼得,我们最终还是更加倾向于简陋之法。尽管如此,走简陋快捷的路线的人,如果对结构表达的优美有所体验,还是有莫大的好处,至少不会被简陋的表象所迷惑,对于复杂的语言现象,逐渐摆脱简陋的捉襟见肘。

最近回看当年博士阶段的涂鸦文章,虽然其中反映出的对汉语句法的见识并不出彩,但是得力于 HPSG 的结构丰富性,还是把 subcat 在汉语文法中应用,表现得有条不紊,经得起时间的检验。当年钻研 HPSG 还是很专心的,吃得蛮透。正因为吃得透了,后来扬弃的时候就没有拖泥带水的牵挂。

譬如,在论及汉语NP带坑的现象的时候,是这样模型的:

11a)     桌子坏了。
11b)     腿坏了。
11c)     桌子的腿坏了。
12a)     他好。
12b)     身体好。
12c)     他的身体好。

When people say 11b) tui huai le (leg went wrong), we know something (the possessor) is omitted. For 11a), however, we have no such feel of incompleteness.

Although we may also ask whose table, this possessive relation between who and table is by no means innate. Similarly, ta (he) in 12a) is a complete notion denoting someone while shenti (body) in 12b) is not. In 11c) and 12c), the possessor appears in the possessive structure DE-construction, the expectation of tui (leg) and shenti (body) is realized. These examples show that some words (concepts) have conceptual expectation for some other words (concepts) although the expected words do not necessarily show up in a sentence and the expectation might not be satisfied. In fact, this type of expectation forms part of our knowledge (common sense). One way to represent the knowledge is to encode it with the related word in the lexicon.
Therefore we propose an underlying SYNSEM feature KNOWLEDGE to store some of our common sense knowledge by capturing the internal relation between concepts. KNOWLEDGE parallels to syntactic SUBCAT and semantic RELATION. KNOWLEDGE imposes semantic constraints on their expected arguments no matter what syntactic forms the arguments will take (they may take null form, i.e. the underlying arguments are not realized). In contrast, SUBCAT only defines syntactic requirement for the complements and gets interpreted in RELATION. Following this design, syntactic form and semantic constraints are kept apart. When necessary, the interaction between them can be implemented by lexical rules, or directly coindexed in the lexicon. For example, the following KNOWLEDGE information will be enforced as the necessary semantic constraints when we handle Chinese NP predicates by a lexical rule (see 3.3).

把常识暗度陈仓从后门带入文法,就是从那时候开始的。这个做法在欧洲语言的形式文法中不多见,因为句法形式大体够用了,通常不需要常识的帮忙。但是对于汉语,没有某种常识的引入,想做一个成熟的深度分析系统,则很难。当年带常识的的句法结构模型是这样定义的:

PHON      shenti
SYNSEM | KNOWLEDGE | PRED [1] possess
SYNSEM | KNOWLEDGE | POSSESSOR [2] human
SYNSEM | KNOWLEDGE | POSSESSED [3]
SYNSEM | LOCAL | CONTENT | INDEX [3]
SYNSEM | LOCAL | CONTENT | RESTRICTION { RELATION body }
SYNSEM | LOCAL | CONTENT | RESTRICTION { INSTANCE [3] }

最后,汉语文法中常识的引入被认为是对欧洲语言利用性数格的 agreement 的一个自然延伸。句法手段到语义限制的延伸。

Agreement revisited
This section relates semantic constraints which embody common sense to the conventional linguistic notion of agreement. We will show that they are essentially the same thing from different perspectives. We only need slight expansion for the definition of agreement to accommodate some of our basic knowledge. This is important as it accounts for the feasibility of coding knowledge in linguistic ways. Linguistic lexicon seems to be good enough to house some general knowledge in addition to linguistic knowledge.

为 parse“我鸡吃“ 和“鸡我吃”, 常识进入了文法(现在也可以利用大数据把常识代入):

A typical example of how concepts are linked in a network (a sophisticated concept lexicon) is seen in the representation of drink ((*ANI SUBJ) (((FLOW STUFF) OBJE) ((SELF IN) (((*ANI (THRU PART)) TO) (BE CAUSE))))) in Wilks 1975b. While for  various reasons we will not go as far as Wilks, we can gain enlightenment from this type of AI approach to knowledge. Lexicon-driven systems like the one in HPSG can, of course, make use of this possibility. Take the Chinese role-assignment problem, for example, the common sense that ANIMATE being eats FOOD can be seamlessly incorporated in the lexical entry chi (eat) as a semantic agreement requirement.

PHON chi
SYNSEM | KNOWLEDGE | PRED [1]  eat
SYNSEM | KNOWLEDGE | AGENT [2] animate
SYNSEM | KNOWLEDGE | PATIENT [3] food
SYNSEM | LOCAL | CATEGORY | SUBCAT | EXTERNAL_ARGUMENT [NP: [4]]
SYNSEM | LOCAL | CATEGORY | SUBCAT | INTERNAL_ARGUMENTS <[NP: [5]]>
SYNSEM | LOCAL | CONTENT | RELATION [1]
SYNSEM | LOCAL | CONTENT | EATER [4] | INDEX | ROGET [2]
SYNSEM | LOCAL | CONTENT | EATEN [5] | INDEX | ROGET [3]

可见,看上去不过是 POS 细分后的一个 subcat 的代码,里面其实包含了多少结构及其蕴含其内的知识。在 unification grammars 几乎成为历史陈迹的今天,我还是认为 HPSG 这样的表达是最优美的语言学的逻辑表达之一,论逻辑的清晰和美,后来的文法很难超越。

 

[Related]

Handling Chinese NP predicate in HPSG (old paper)

Notes for An HPSG-style Chinese Reversible Grammar

Outline of an HPSG-style Chinese reversible grammar

PhD Thesis: Morpho-syntactic Interface in CPSG (cover page)

 

Overview of Natural Language Processing

Dr. Wei Li’s English Blog on NLP

 

《立委科普:NLP系统语义模块的任务》

本篇旨在探讨NLP(Natural Language Processing)语义模块的任务,尤其在知识图谱应用中。探讨之前,我们先站在万米高看俯瞰一下语义模块在语言学和NLP的主要模块的架构中位于何处。
语言学的教科书通常把语言文本研究从浅入深划分为这么几个分支:词法(morphology)、句法(syntax)、语义(semantics)和语用(pragmatics)。还有另一个维度的分支,叫篇章研究(discourse study),是跨句进行,其他的研究一般限于句内。词法句法的研究成果在 NLP 中表现为 parser,可以自动把线性字符串的语句分析为句法树结构,千变万化的语句因此化为有限的句型或 patterns,为语言理解和应用提供了坚实的基础。语义处于句法之后、语用之前,我们叫它为语义中间件 (middleware),因为它是领域独立的语言研究的终点,支持的是依赖领域和应用的语用。这个语义中间件的任务也可以留到语用阶段在语义落地(semantic grounding)的时候根据语用对语义的要求来一起做,但是理论上,总有一部分语义工作有足够的领域独立性,值得提前做好,来支持种种不同的语用场景和应用,减轻语用模块的负担。
如此定义的语义模块(语义中间件),主要是寻找 hidden links,譬如隐含的逻辑主语、宾语 等。这些在句法阶段没有显性表明,但是有足够证据去确定如何填补。填补的时候,一个是利用句法(显性的links),一个是利用 ontology,通常是二者的结合。词驱动(word-driven)来做,是一个很 tractable 的任务,是比parsing更琐碎但难度较低的工作,因为要结构有结构,要ontology有ontology(包括动态形成的ontology节点,譬如NE专名的分类),条件比纯句法分析模块只有线性的pattern可用,是成熟多了。其有用性还是不太清晰: argument 之一就是,如果 hidden 的语义重要,人为什么不用显性句法手段?即便在一个句子的选定的句法结构中,某个重要的语义难以显性表达,如果足够重要,人就会换一种句法结构在另一个句子显性表达出来。如果上述 argument 有一定的道理,那么不做 hidden 语义,对于大数据挖掘,应该不会有太大的损害。至少在大数据挖掘这样的场景,信息的冗余性足以弥补 个体 hidden 语义的不全。在句法结束的时候,有些句子提到的 arg(s) 并没有到位,可以说是不饱和(unsaturated)。语义中间件的任务就是把句法没有做全的不饱和的坑填得饱和,hidden links 建立了,于是就饱和了。如果句法模块和语义模块以后,仍然不饱和,就应该在 discourse 中去找。如果 discourse 中还是没找到,那么理论上是应该通过常识去饱和它。
回到万米高空俯瞰,昨天还在想所谓“语义计算”到底包含哪些呢。从 community 来看,相关的方面有:(1)WSD(Word Sense Disambiguation); (2) FrameNet (role labeling); (3) IE(Information Extraction)。“经典”IE (MUC IE 传统)里面一般分 NE、relationship、event,外加 Coreference,等任务。从结构图的角度看,NE 和 WSD 是做 node 的语义计算;FrameNet 和 IE Template (for relationship or event) 是做 arc (link)的语义计算。这样来看 community 定义的几个任务和方向,可以发现,(1) 和 (2) 都是学究式的任务,不实用。(3) 是最接地气的东西,是应用(apps)直接需要的。但是 IE 是针对领域的,直接为产品服务的,不好抽象,那么就可以想想什么东西是句法之后,语用之前,最能帮助 IE。其中之一就是 Coreference,这个任务已经被 IE 收编了,但它实际上是独立于领域的篇章(discourse)尺度的语义计算,是为了支持 IE 的跨句整合的。
沿着这个思路,我们还可以细化,根据实际需求,我们定义过三个任务,觉得应该在语义中间件里面做,它们应该可以惠及所有的应用:第一个是 同位语关系,这个可以看成是 Corference之一种;第二个是 部分和整体的关系(譬如,苹果和iPhone);第三个 原因和结果的关系。上述三个关系不限于句法短距离,也包括远距离的,甚至跨句的这类联系。我们一直在这三个关系,加上代词的coreference (包括专名的 aliasing) 上下功夫,比在 hidden 逻辑主谓宾方面更多,因为前者直接服务于 local IE 以后的 IE,以便整合成图谱,是整合的粘合剂,后者大多可以通过信息冗余去做弥补。
以上说的是实践中摸索出来的体会,就是自然而然这么走下来的。local IE 在抓取信息填 IE Template 里面的坑的时候,所看到的都是局部的信息,所填坑的材料经常很“虚”。虚的极端例子就是代词(“它”,“这个”),或者 一些指代性的名词(“这台电脑”),这些东西只能作为桥梁,不能真正导致图谱。这时候语义模块在上述四个方面所做的工作,就可以帮助把这些虚的材料,变得实在,这是通向图谱的一个很重要的支持。
大而言之,语义中间件做到什么程度合适,有很大的争论空间。在确定应用之前,不少细线条语义进一步伸展没有太大意义,或者劳而少功。就是说在句法把结构的框架搭起来以后,在语用层面的具体应用确定之前,到底要做多少语义计算,不是容易说清楚的,直觉上和经验上,不赞成做得太多。从某种意义上看,费尔默创立 FrameNet 就是想把语义中间件进行到底。理论上,他的深入是有道理的,因为在 arg structure (句法subcat的拿手好戏)之后,如果要深入,domain independent 的 Frame hierarchy 是通向语用的深度桥梁。起码理论上如此。但是我们做了18年的 IE 以后,结论是,费尔默那个语义计算的路子基本是歧途。没感觉到啥好处,却带来了很大的 overhead,可操作性很差,也并不省功。IE 领域用 Template 定义语用领域的需求,没有人主张把这些 Templates 定义在 FrameNet 的 hierarchy 上面,因为感觉不到需要,而且也不现实。100 年后,也许 FrameNet 可以被重新发现,因为那时候的语用落地已经太多了,需要组织组织了。FrameNet 正好提供了一个组织和整合的框架,如今的语用落地都是零星的。
立委牌 NLP University 中,能看懂上面这些参杂了些假洋鬼子话(术语)的“高阶科普”的后学,是可以授予学位的。这个学位是硬通货。看不懂也没关系,可以视为狂人乱语,或者是误入迷宫,不隔行也如山,耽误了你玩深度学习(dl)的宝贵时间。

【语义计算沙龙:从“10年中学文化课”切词谈系统设计】

我:
毛老啊,1966-1976 10年文革,是我十年的中小学,我容易吗?10年中学文化课的时间不到一半,其余是学工学农学军。学赤脚医生 学开手扶拖拉机。
为什么是 【十年中】【学文化课】不是 【十年中学】【文化课】?

Guo:
@wei 单就这句,确实两可。但你后面有这么多的”学”……
至少对这个例子,统计,”深度神经”RNN之类还是有merit的。当然,这两种解析其实也没本质的区别。不必多费心思。

我:
怎讲?因为“学”频率高 所以“中学”成词就不便?统计模型在这个case怎么工作显示merit呢?愿闻其详。
大数据说 有五年中学 有六年中学,极少见十年中学,反映的是中学学制的常识。但是这个知识不是很强大,很难作数,因为这不是 positive evidence。如果句子在 “六年中学” 发生边界纠纷的时候 得到来自大数据的直接支持,那是正面的 evidence,力量就很强。负面证据不顶事儿,因为它面对的是 【非六】(或【非五】)的大海,理论上无边无沿,那点儿证据早被淹没了。

Guo:
统计分long term / global vs short term / local.

你讲的”大数据”,其实是在讲前者。

现在热的”深度神经”,有些是有意无意地多考虑些后者。例如,深度神经”皇冠上的明珠”LSTM即是Long Short Term Memory。虽非显式地求取利用”即时统计”,那层意思还是感觉的到的。

我:
@Guo 恩。这个 local 和 global 之间的关系很tricky
0821e

这个貌似歪打正着的parse应该纯粹是狗屎运,不理论。

白:
N+N的得分本来就低 有状语有动词的更加“典型” N+N是实在没招了只能借助构词法解决零碎的产物 有状语有动词时谁还理N+N。不管几年中学,也抗衡不了这个结构要素。就是说,同样是使用规则,有些规则上得厅堂,有些规则只能下得厨房。如果没有上得厅堂的规则可用,随你下厨房怎么折腾。但是如果有上得厅堂的规则可用,谁也不去下厨房。

我:
这里不仅仅是 N+N 的问题,在绝大多数切词模块中,还没走到N+N这一步,因此这个问题实际上可能挑战不少现存的切词程序:十年/中学/文化课 or 十年中/学/文化课 ?
有一个常用的切词 heuristic 要求偏向于音节数均匀的路径 显然前者比后者均匀多了。

白:
句法上谈多层,也是“狗/咬吕洞宾”, 不是“狗咬/吕洞宾”

我:
真正的反例是交叉型的。
句法怎么谈层次 其实无关 因为多层的切词不过是一个技术策略,(通常)本身并不参与 parsing,最终的结果是 狗/咬/吕洞宾 就行了。其实 即便论句法 SVO 层次 在汉语中还是颇有争论的 不像西方语言里面 V+NP 的证据那么充分。

白:
这有点循环论证了

我:
目前的接口是这样的 多数系统的接口是。切词的结果并不存在层次,虽然切词内部可以也应该使用层次。肯定有研究型系统不采用这样的接口,但实用系统中的多数似乎就是这样简单。

白:
都保留也没啥,交给句法处理好了,谁说一定要分出个唯一结果再交上去,很多系统接受词图而不是词流了。对于神经网络这种天然接受不确定性的formalism而言,接受词图并不比接受词流多什么负担。

我:
数据结构多了维度,对于传统系统,涉及面蛮大的。词不仅仅是词,词本身不是一个简单的 object。以前的系统词流就是string 或最多是 token+POS list 对那样简单的结构增加维度还好。

白:
词和短语一样可以给位置加锁解锁 竞争位置的锁

我:
不错,词是一切潜在结构的发源地,蕴藏了很大潜能,甚至在设计中,应该让词典可以内建结构,与parsing机制一体化。这种设计思想下的词 增加维度 就是带着镣铐跳舞 不是容易处置好的。nondeterministic 是一个动听但不太好使的策略。否则理论上无需任何休眠与唤醒。

白:
可以参数化,连续过渡。处理得好,管子就粗些。处理不好,管子就细些。极端就回到一条线。一个位置允许几个词竞争锁,可以参数化。超出管子容量的,再做休眠唤醒。

我:
多层系统下的 nondeterministic 结构,就好比潘多拉的盒子。放鬼容易降鬼难,层次越多越是这样。也许机器学习那边不怕,反正不是人在降服鬼。

白:
其实一个词多个POS,或者多个subcat,机制是一样的。不仅有组合增加的一面,也有限制增加的一面。不用人降服鬼,鬼自己就打起来,打不赢没脸见人。只要制定好“见人”的标准,其他就交给鬼。

我:
这就是毛主席的路线 叫天下大乱达到天下大治。文革大乱10年国民经济临近崩溃的边缘,但没有像60年那样彻底崩盘,除了狗屎运,还因为有一个绝对权威在。这个权威冷酷无情 翻脸不认人。今天红上了天的红卫兵造反派 明天就下牢狱。

白:
鬼打架也是有秩序的,不是大乱,是分布式表示。

我:
这样的系统大多难以调试 等到见人了 结果已定局 好坏都是它了 斯大林说 胜利者是不受指责的。

白:
局部作用,高度自治

我:
鬼虽然是按照人制定的规则打架。具体细节却难以追踪 因此也难以改正。当然 这个毛病也不是现在才有的 是一切黑箱子策略的通病。

白:
不是黑箱子,是基于规则、分布式表示、局部自治。打架的任何细节语言学上都可解释。理论上,如果词典确定,所有交集型分词歧义就已经确定,是词流还是词图,只是一个编码问题。如果再加上管子粗细的限制,编码也是高度可控的。

我:
刁德一说 这茶喝到这儿才有了滋味。看好白老师及其design

白:
“10年”说的究竟是时长(duration)为10年的时间段,还是2010年这一年的简称,也是需要甄别的。

 

【相关】

 

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

《朝华午拾》总目录

S. Bai: Natural Language Caterpillar Breaks through Chomsky’s Castle

masterminds-it-quiz-10-728

Translator’s note:

This article written in Chinese by Prof. S. Bai is a wonderful piece of writing worthy of recommendation for all natural language scholars.  Prof. Bai’s critical study of Chomsky’s formal language theory with regards to natural language has reached a depth never seen before ever since Chomsky’s revolution in 50’s last century.  For decades with so many papers published by so many scholars who have studied Chomsky, this novel “caterpillar” theory still stands out and strikes me as an insight that offers a much clearer and deeper explanation for how natural language should be modeled in formalism, based on my decades of natural language parsing study and practice (in our practice, I call the caterpillar FSA++, an extension of regular grammar formalism adequate for multi-level natural language deep parsing).  For example, so many people have been trapped in Chomsky’s recursion theory and made endless futile efforts to attempt a linear or near-linear algorithm to handle the so-called recursive nature of natural language which is practically non-existent (see Chomsky’s Negative Impact).  There used to be heated debates  in computational linguistics on whether natural language is context-free or context-sensitive, or mildly sensitive as some scholars call it.  Such debates mechanically apply Chomsky’s formal language hierarchy to natural languages, trapped in metaphysical academic controversies, far from language facts and data.  In contrast, Prof. Bai’s original “caterpillar” theory presents a novel picture that provides insights in uncovering the true nature of natural languages.

S. Bai: Natural Language Caterpillar Breaks through Chomsky’s Castle

Tags: Chomsky Hierarchy, computational linguistics, Natural Language Processing, linear speed

This is a technology-savvy article, not to be fooled by the title seemingly about a bug story in some VIP’s castle.  If you are neither an NLP professional nor an NLP fan, you can stop here and do not need to continue the journey with me on this topic.

Chomsky’s Castle refers to the famous Chomsky Hierarchy in his formal language theory, built by the father of contemporary linguistics Noam Chomsky more than half a century ago.  According to this theory, the language castle is built with four enclosing walls.  The outmost wall is named Type-0, also called Phrase Structure Grammar, corresponding to a Turing machine.  The second wall is Type-1, or Context-sensitive Grammar (CSG), corresponding to a parsing device called linear bounded automaton  with time complexity known to be NP-complete.  The third wall is Type-2, or Context-free Grammar (CFG), corresponding to a  pushdown automaton, with a time complexity that is polynomial, somewhere between square and cubic in the size of the input sentence for the best asymptotic order measured in the worst case scenario.  The innermost wall is Type-3, or Regular Grammar, corresponding to deterministic finite state automata, with a linear time complexity.  The sketch of the 4-wall Chomsky Castle is illustrated below.

This castle of Chomsky has impacted generations of scholars, mainly along two lines.  The first line of impact can be called “the outward fear syndrome”.  Because the time complexity for the second wall (CSG) is NP-complete, anywhere therein and beyond becomes a Forbidden City before NP=P can be proved.  Thus, the pressure for parsing natural languages has to be all confined to within the third wall (CFG).  Everyone knows the natural language involves some context sensitivity,  but the computing device cannot hold it to be tractable once it is beyond the third wall of CFG.  So it has to be left out.

The second line of impact is called “the inward perfection syndrome”.  Following the initial success of using Type 2 grammar (CFG) comes a severe abuse of recursion.  When the number of recursive layers increases slightly, the acceptability of a sentence soon approximates to almost 0.  For example, “The person that hit Peter is John” looks fine,  but it starts sounding weird to hear “The person that hit Peter that met Tom is John”.  It becomes gibberish with sentences like “The person that hit Peter that met Tom that married Mary is John”.  In fact, the majority resources spent with regards to the parsing efficiency are associated with such abuse of recursion in coping with gibberish-like sentences, rarely seen in real life language.  For natural language processing to be practical,  pursuing the linear speed cannot be over emphasized.  If we reflect on the efficiency of the human language understanding process, the conclusion is certainly about the “linear speed” in accordance with the length of the speech input.  In fact, the abuse of recursion is most likely triggered by the “inward perfection syndrome”, for which we intend to cover every inch of the land within the third wall of CFG, even if it is an area piled up by gibberish or garbage.

In a sense, it can be said that one reason for the statistical approach to take over the rule-based approach for such a long time in the academia of natural language processing is just the combination effect of these two syndromes.  To overcome the effects of these syndromes, many researchers have made all kinds of efforts, to be reviewed below one by one.

Along the line of the outward fear syndrome, evidence against the context-freeness has been found in some constructions in Swiss-German.  Chinese has similar examples in expressing respective correspondence of conjoined items and their descriptions.  For example,   “张三、李四、王五的年龄分别是25岁、32岁、27岁,出生地分别是武汉、成都、苏州” (Zhang San, Li Si, Wang Wu’s age is respectively 25, 32, and 27, they were born respectively in Wuhan, Chengdu, Suzhou” ).  Here, the three named entities constitute a list of nouns.  The number of the conjoined list of entities cannot be predetermined, but although the respective descriptors about this list of nouns also vary in length, the key condition is that they need to correspond to the antecedent list of nouns one by one.  This respective correspondence is something beyond the expression power of the context-free formalism.  It needs to get out of the third wall.

As for overcoming “the inward perfection syndrome”, the pursuit of “linear speed” in the field of NLP has never stopped.  It ranges from allowing for the look-ahead mechanism in LR (k) grammar, to the cascaded finite state automata, to the probabilistic CFG parsers which are trained on a large treebank and eventually converted to an Ngram (n=>5) model.  It should also include RNN/LSTM for its unique pursuit for deep parsing from the statistical school.  All these efforts are striving for defining a subclass in Type-2 CFG that reaches linear speed efficiency yet still with adequate linguistic power.  In fact, all parsers that have survived after fighting the statistical methods are to some degree a result of overcoming “the inward perfection syndrome”, with certain success in linear speed pursuit while respecting linguistic principles.  The resulting restricted subclass, compared to the area within the original third wall CFG, is a greatly “squashed” land.

If we agree that everything in parsing should be based on real life natural language as the starting point and the ultimate landing point, it should be easy to see that the outward limited breakthrough and the inward massive compression should be the two sides of a coin.  We want to strive for a formalism that balances both sides.  In other words, our ideal natural language parsing formalism should look like a linguistic “caterpillar” breaking through the Chomsky walls in his castle, illustrated below:

It seems to me that such a “caterpillar” may have already been found by someone.  It will not take too long before we can confirm it.
Original article in Chinese from 《穿越乔家大院寻找“毛毛虫”
Translated by Dr. Wei Li

 

 

【Related】

[转载]【白硕 – 穿越乔家大院寻找“毛毛虫”】

【立委按】

白硕老师这篇文章值得所有自然语言学者研读和反思。击节叹服,拍案叫绝,是初读此文的真切感受。白老师对乔姆斯基形式语言理论用于自然语言所造成的误导,给出了迄今所见最有深度的犀利解析,而且写得深入浅出,形象生动,妙趣横生。这么多年,这么多学者,怎么就达不到这样的深度呢?一个乔姆斯基的递归陷阱不知道栽进去多少人,造成多少人在 “不是人话” 的现象上做无用功,绕了无数弯路。学界曾有多篇长篇大论,机械地套用乔氏层级体系,在自然语言是 context-free 还是 context-sensitive 的框框里争论不休,也有折衷的说法,诸如自然语言是 mildly sensitive,这些形而上的学究式争论,大多雾里看花,隔靴搔痒,不得要领,离语言事实甚远。白老师独创的 “毛毛虫” 论,形象地打破了这些条条框框。

白老师自己的总结是:‘如果认同“一切以真实的自然语言为出发点和最终落脚点”的理念,那就应该承认:向外有限突破,向内大举压缩,应该是一枚硬币的两面。’ 此乃金玉良言,掷地有声。

【白硕 – 穿越乔家大院寻找“毛毛虫”】

看标题,您八成以为这篇文章讲的是山西的乔家大院的事儿了吧?不是。这是一篇烧脑的技术贴。如果您既不是NLP专业人士也不是NLP爱好者,就不用往下看了。

咱说的这乔家大院,是当代语言学祖师爷乔姆斯基老爷子画下来的形式语言类型谱系划分格局。最外边一圈围墙,是0型文法,又叫短语结构文法,其对应的分析处理机制和图灵机等价,亦即图灵可计算的;第二圈围墙,是1型文法,又叫上下文相关文法,其对应的分析处理机制,时间复杂度是NP完全的;第三圈围墙,是2型文法,又叫上下文无关文法,其对应的分析处理机制,时间复杂度是多项式的,最坏情况下的最好渐进阶在输入句子长度的平方和立方之间;最里边一层围墙,是3型文法,又叫正则文法,其对应的分析处理机制和确定性有限状态自动机等价,时间复杂度是线性的。这一圈套一圈的,归纳整理下来,如下图所示:

乔老爷子建的这座大院,影响了几代人。影响包括这样两个方面:

第一个方面,我们可以称之为“外向恐惧情结”。因为第二圈的判定处理机制,时间复杂度是NP完全的,于是在NP=P还没有证明出来之前,第二圈之外似乎是禁区,没等碰到已经被宣判了死刑。这样,对自然语言的描述压力,全都集中到了第三圈围墙里面,也就是上下文无关文法。大家心知肚明自然语言具有上下文相关性,想要红杏出墙,但是因为出了围墙计算上就hold不住,也只好打消此念。0院点灯……1院点灯……大红灯笼高高挂,红灯停,闲人免出。

第二个方面,我们可以称之为“内向求全情结”。2型文法大行其道,取得了局部成功,也带来了一个坏风气,就是递归的滥用。当递归层数稍微加大,人类对于某些句式的可接受性就快速衰减至几近为0。比如,“我是县长派来的”没问题,“我是县长派来的派来的”就有点别扭,“我是县长派来的派来的派来的”就不太像人话了。而影响分析判定效率的绝大多数资源投入,都花在了应对这类“不像人话”的递归滥用上了。自然语言处理要想取得实用效果,处理的“线速”是硬道理。反思一下,我们人类的语言理解过程,也肯定是在“线速”范围之内。递归的滥用,起源于“向内求全情结”,也就是一心想覆盖第三圈围墙里面最犄角旮旯的区域,哪怕那是一个由“不像人话”的实例堆积起来的垃圾堆。

可以说,在自然语言处理领域,统计方法之所以在很长时间内压倒规则方法,在一定程度上,就是向外恐惧情结与向内求全情结叠加造成的。NLP领域内也有很多的仁人志士为打破这两个情结做了各种各样的努力。

先说向外恐惧情结。早就有人指出,瑞士高地德语里面有不能用上下文无关文法描述的语言现象。其实,在涉及到“分别”的表述时,汉语也同样。比如:“张三、李四、王五的年龄分别是25岁、32岁、27岁,出生地分别是武汉、成都、苏州。”这里“张三、李四、王五”构成一个名词列表,对这类列表的一般性句法表述,肯定是不定长的,但后面的两个“分别”携带的列表,虽然也是不定长的,但却需要跟前面这个列表的长度相等。这个相等的条件,上下文无关文法不能表达,必须走出第三圈围墙。

再说向内求全情结。追求“线速”的努力,在NLP领域一直没有停止过。从允许预读机制的LR(k)文法,到有限自动机堆叠,再到基于大型树库训练出来的、最终转化为Ngram模型(N=5甚至更大)的概率上下文无关文法分析器,甚至可以算上统计阵营里孤军深入自然语言深层处理的RNN/LSTM等等,都试图从2型文法中划出一个既有足够的语言学意义、又能达到线速处理效率的子类。可以说,凡是在与统计方法的搏杀中还能活下来的分析器,无一不是在某种程度上摆脱了向内求全情结、在基本尊重语言学规律基础上尽可能追求线速的努力达到相对成功的结果。这个经过限制的子类,比起第三圈围墙来,是大大地“压扁”了的。

如果认同“一切以真实的自然语言为出发点和最终落脚点”的理念,那就应该承认:向外有限突破,向内大举压缩,应该是一枚硬币的两面。我们希望,能够有一种形式化机制同时兼顾这两面。也就是说,我们理想中的自然语言句法的形式化描述机制,应该像一条穿越乔家大院的“毛毛虫”,如下图所示:

据笔者妄加猜测,这样的“毛毛虫”,可能有人已经找到,过一段时间自然会见分晓。

from http://blog.sina.com.cn/s/blog_729574a00102wf63.html

 

【相关】

【新智元:parsing 在希望的田野上】 

【新智元:理论家的围墙和工程师的私货】

【科研笔记:NLP “毛毛虫” 笔记,从一维到二维】

【泥沙龙笔记:NLP 专门语言是规则系统的斧头】

乔姆斯基批判

泥沙龙笔记:再聊乔老爷的递归陷阱

泥沙龙笔记:骨灰级砖家一席谈,真伪结构歧义的对策(2/2) 

《自然语言是递归的么?》

语言创造简史

【置顶:立委博客NLP博文一览(定期更新版)】

 

On Hand-crafted Myth of Knowledge Bottleneck

In my article “Pride and Prejudice of Main Stream“, the first myth listed as top 10 misconceptions in NLP is as follows:

[Hand-crafted Myth]  Rule-based system faces a knowledge bottleneck of hand-crafted development while a machine learning system involves automatic training (implying no knowledge bottleneck).

While there are numerous misconceptions on the old school of rule systems , this hand-crafted myth can be regarded as the source of all.  Just take a review of NLP papers, no matter what are the language phenomena being discussed, it’s almost cliche to cite a couple of old school work to demonstrate superiority of machine learning algorithms, and the reason for the attack only needs one sentence, to the effect that the hand-crafted rules lead to a system “difficult to develop” (or “difficult to scale up”, “with low efficiency”, “lacking robustness”, etc.), or simply rejecting it like this, “literature [1], [2] and [3] have tried to handle the problem in different aspects, but these systems are all hand-crafted”.  Once labeled with hand-crafting, one does not even need to discuss the effect and quality.  Hand-craft becomes the rule system’s “original sin”, the linguists crafting rules, therefore, become the community’s second-class citizens bearing the sin.

So what is wrong with hand-crafting or coding linguistic rules for computer processing of languages?  NLP development is software engineering.  From software engineering perspective, hand-crafting is programming while machine learning belongs to automatic programming.  Unless we assume that natural language is a special object whose processing can all be handled by systems automatically programmed or learned by machine learning algorithms, it does not make sense to reject or belittle the practice of coding linguistic rules for developing an NLP system.

For consumer products and arts, hand-craft is definitely a positive word: it represents quality or uniqueness and high value, a legit reason for good price. Why does it become a derogatory term in NLP?  The root cause is that in the field of NLP,  almost like some collective hypnosis hit in the community, people are intentionally or unintentionally lead to believe that machine learning is the only correct choice.  In other words, by criticizing, rejecting or disregarding hand-crafted rule systems, the underlying assumption is that machine learning is a panacea, universal and effective, always a preferred approach over the other school.

The fact of life is, in the face of the complexity of natural language, machine learning from data so far only surfaces the tip of an iceberg of the language monster (called low-hanging fruit by Church in K. Church: A Pendulum Swung Too Far), far from reaching the goal of a complete solution to language understanding and applications.  There is no basis to support that machine learning alone can solve all language problems, nor is there any evidence that machine learning necessarily leads to better quality than coding rules by domain specialists (e.g. computational grammarians).  Depending on the nature and depth of the NLP tasks, hand-crafted systems actually have more chances of performing better than machine learning, at least for non-trivial and deep level NLP tasks such as parsing, sentiment analysis and information extraction (we have tried and compared both approaches).  In fact, the only major reason why they are still there, having survived all the rejections from mainstream and still playing a role in industrial practical applications, is the superior data quality, for otherwise they cannot have been justified for industrial investments at all.

the “forgotten” school:  why is it still there? what does it have to offer? The key is the excellent data quality as advantage of a hand-crafted system, not only for precision, but high recall is achievable as well.
quote from On Recall of Grammar Engineering Systems

In the real world, NLP is applied research which eventually must land on the engineering of language applications where the results and quality are evaluated.  As an industry, software engineering has attracted many ingenious coding masters, each and every one of them gets recognized for their coding skills, including algorithm design and implementation expertise, which are hand-crafting by nature.   Have we ever heard of a star engineer gets criticized for his (manual) programming?  With NLP application also as part of software engineering, why should computational linguists coding linguistic rules receive so much criticism while engineers coding other applications get recognized for their hard work?  Is it because the NLP application is simpler than other applications?  On the contrary, many applications of natural language are more complex and difficult than other types of applications (e.g. graphics software, or word processing apps).  The likely reason to explain the different treatment between a general purpose programmer and a linguist knowledge engineer is that the big environment of software engineering does not involve as much prejudice while the small environment of NLP domain  is deeply biased, with belief that the automatic programming of an NLP system by machine learning can replace and outperform manual coding for all language projects.   For software engineering in general, (manual) programming is the norm and no one believes that programmers’ jobs can be replaced by automatic programming in any time foreseeable.  Automatic programming, a concept not rare in science fiction for visions like machines making machines, is currently only a research area, for very restricted low-level functions.  Rather than placing hope on automatic programming, software engineering as an industry has seen a significant progress on work of the development infrastructures, such as development environment and a rich library of functions to support efficient coding and debugging.  Maybe in the future one day, applications can use more and more of automated code to achieve simple modules, but the full automation of constructing any complex software project  is nowhere in sight.  By any standards, natural language parsing and understanding (beyond shallow level tasks such as classification, clustering or tagging)  is a type of complex tasks. Therefore, it is hard to expect machine learning as a manifestation of automatic programming to miraculously replace the manual code for all language applications.  The application value of hand-crafting a rule system will continue to exist and evolve for a long time, disregarded or not.

“Automatic” is a fancy word.  What a beautiful world it would be if all artificial intelligence and natural languages tasks could be accomplished by automatic machine learning from data.  There is, naturally, a high expectation and regard for machine learning breakthrough to help realize this dream of mankind.  All this should encourage machine learning experts to continue to innovate to demonstrate its potential, and should not be a reason for the pride and prejudice against a competitive school or other approaches.

Before we embark on further discussions on the so-called rule system’s knowledge bottleneck defect, it is worth mentioning that the word “automatic” refers to the system development, not to be confused with running the system.  At the application level, whether it is a machine-learned system or a manual system coded by domain programmers (linguists), the system is always run fully automatically, with no human interference.  Although this is an obvious fact for both types of systems, I have seen people get confused so to equate hand-crafted NLP system with manual or semi-automatic applications.

Is hand-crafting rules a knowledge bottleneck for its development?  Yes, there is no denying or a need to deny that.  The bottleneck is reflected in the system development cycle.  But keep in mind that this “bottleneck” is common to all large software engineering projects, it is a resources cost, not only introduced by NLP.  From this perspective, the knowledge bottleneck argument against hand-crafted system cannot really stand, unless it can be proved that machine learning can do all NLP equally well, free of knowledge bottleneck:  it might be not far from truth for some special low-level tasks, e.g. document classification and word clustering, but is definitely misleading or incorrect for NLP in general, a point to be discussed below in details shortly.

Here are the ballpark estimates based on our decades of NLP practice and experiences.  For shallow level NLP tasks (such as Named Entity tagging, Chinese segmentation), a rule approach needs at least three months of one linguist coding and debugging the rules, supported by at least half an engineer for tools support and platform maintenance, in order to come up with a decent system for initial release and running.  As for deep NLP tasks (such as deep parsing, deep sentiments beyond thumbs-up and thumbs-down classification), one should not expect a working engine to be built up without due resources that at least involve one computational linguist coding rules for one year, coupled with half an engineer for platform and tools support and half an engineer for independent QA (quality assurance) support.  Of course, the labor resources requirements vary according to the quality of the developers (especially the linguistic expertise of the knowledge engineers) and how well the infrastructures and development environment support linguistic development.  Also, the above estimates have not included the general costs, as applied to all software applications, e.g. the GUI development at app level and operations in running the developed engines.

Let us present the scene of the modern day rule-based system development.  A hand-crafted NLP rule system is based on compiled computational grammars which are nowadays often architected as an integrated pipeline of different modules from shallow processing up to deep processing.  A grammar is a set of linguistic rules encoded in some formalism, which is the core of a module intended to achieve a defined function in language processing, e.g. a module for shallow parsing may target noun phrase (NP) as its object for identification and chunking.  What happens in grammar engineering is not much different from other software engineering projects.  As knowledge engineer, a computational linguist codes a rule in an NLP-specific language, based on a development corpus.  The development is data-driven, each line of rule code goes through rigid unit tests and then regression tests before it is submitted as part of the updated system for independent QA to test and feedback.  The development is an iterative process and cycle where incremental enhancements on bug reports from QA and/or from the field (customers) serve as a necessary input and step towards better data quality over time.

Depending on the design of the architect, there are all types of information available for the linguist developer to use in crafting a rule’s conditions, e.g. a rule can check any elements of a pattern by enforcing conditions on (i) word or stem itself (i.e. string literal, in cases of capturing, say, idiomatic expressions), and/or (ii) POS (part-of-speech, such as noun, adjective, verb, preposition), (iii) and/or orthography features (e.g. initial upper case, mixed case, token with digits and dots), and/or (iv) morphology features (e.g. tense, aspect, person, number, case, etc. decoded by a previous morphology module), (v) and/or syntactic features (e.g. verb subcategory features such as intransitive, transitive, ditransitive), (vi) and/or lexical semantic features (e.g. human, animal, furniture, food, school, time, location, color, emotion).  There are almost infinite combinations of such conditions that can be enforced in rules’ patterns.  A linguist’s job is to code such conditions to maximize the benefits of capturing the target language phenomena, a balancing art in engineering through a process of trial and error.

Macroscopically speaking, the rule hand-crafting process is in its essence the same as programmers coding an application, only that linguists usually use a different, very high-level NLP-specific language, in a chosen or designed formalism appropriate for modeling natural language and framework on a platform that is geared towards facilitating NLP work.  Hard-coding NLP in a general purpose language like Java is not impossible for prototyping or a toy system.  But as natural language is known to be a complex monster, its processing calls for a special formalism (some form or extension of Chomsky’s formal language types) and an NLP-oriented language to help implement any non-toy systems that scale.  So linguists are trained on the scene of development to be knowledge programmers in hand-crafting linguistic rules.  In terms of different levels of languages used for coding, to an extent, it is similar to the contrast between programmers in old days and the modern software engineers today who use so-called high-level languages like Java or C to code.  Decades ago, programmers had to use assembly or machine language to code a function.  The process and workflow for hand-crafting linguistic rules are just like any software engineers in their daily coding practice, except that the language designed for linguists is so high-level that linguistic developers can concentrate on linguistic challenges without having to worry about low-level technical details of memory allocation, garbage collection or pure code optimization for efficiency, which are taken care of by the NLP platform itself.  Everything else follows software development norms to ensure the development stay on track, including unit testing, baselines construction and monitoring, regressions testing, independent QA, code reviews for rules’ quality, etc.  Each level language has its own star engineer who masters the coding skills.  It sounds ridiculous to respect software engineers while belittling linguistic engineers only because the latter are hand-crafting linguistic code as knowledge resources.

The chief architect in this context plays the key role in building a real life robust NLP system that scales.  To deep-parse or process natural language, he/she needs to define and design the formalism and language with the necessary extensions, the related data structures, system architecture with the interaction of different levels of linguistic modules in mind (e.g. morpho-syntactic interface), workflow that integrate all components for internal coordination (including patching and handling interdependency and error propagation) and the external coordination with other modules or sub-systems including machine learning or off-shelf tools when needed or felt beneficial.  He also needs to ensure efficient development environment and to train new linguists into effective linguistic “coders” with engineering sense following software development norms (knowledge engineers are not trained by schools today).  Unlike the mainstream machine learning systems which are by nature robust and scalable,  hand-crafted systems’ robustness and scalability depend largely on the design and deep skills of the architect.  The architect defines the NLP platform with specs for its core engine compiler and runner, plus the debugger in a friendly development environment.  He must also work with product managers to turn their requirements into operational specs for linguistic development, in a process we call semantic grounding to applications from linguistic processing.   The success of a large NLP system based on hand-crafted rules is never a simple accumulation of linguistics resources such as computational lexicons and grammars using a fixed formalism (e.g. CFG) and algorithm (e.g. chart-parsing).  It calls for seasoned language engineering masters as architects for the system design.

Given the scene of practice for NLP development as describe above, it should be clear that the negative sentiment association with “hand-crafting” is unjustifiable and inappropriate.  The only remaining argument against coding rules by hands comes down to the hard work and costs associated with hand-crafted approach, so-called knowledge bottleneck in the rule-based systems.  If things can be learned by a machine without cost, why bother using costly linguistic labor?  Sounds like a reasonable argument until we examine this closely.  First, for this argument to stand, we need proof that machine learning indeed does not incur costs and has no or very little knowledge bottleneck.  Second, for this argument to withstand scrutiny, we should be convinced that machine learning can reach the same or better quality than hand-crafted rule approach.  Unfortunately, neither of these necessarily hold true.  Let us study them one by one.

As is known to all, any non-trivial NLP task is by nature based on linguistic knowledge, irrespective of what form the knowledge is learned or encoded.   Knowledge needs to be formalized in some form to support NLP, and machine learning is by no means immune to this knowledge resources requirement.  In rule-based systems, the knowledge is directly hand-coded by linguists and in case of (supervised) machine learning, knowledge resources take the form of labeled data for the learning algorithm to learn from (indeed, there is so-called unsupervised learning which needs no labeled data and is supposed to learn from raw data, but that is research-oriented and hardly practical for any non-trivial NLP, so we leave it aside for now).  Although the learning process is automatic,  the feature design, the learning algorithm implementation, debugging and fine-tuning are all manual, in addition to the requirement of manual labeling a large training corpus in advance (unless there is an existing labeled corpus available, which is rare; but machine translation is a nice exception as it has the benefit of using existing human translation as labeled aligned corpora for training).  The labeling of data is a very tedious manual job.   Note that the sparse data challenge represents the need of machine learning for a very large labeled corpus.  So it is clear that knowledge bottleneck takes different forms, but it is equally applicable to both approaches.  No machine can learn knowledge without costs, and it is incorrect to regard knowledge bottleneck as only a defect for the rule-based system.

One may argue that rules require expert skilled labor, while the labeling of data only requires high school kids or college students with minimal training.  So to do a fair comparison of the costs associated, we perhaps need to turn to Karl Marx whose “Das Kapital” has some formula to help convert simple labor to complex labor for exchange of equal value: for a given task with the same level of performance quality (assuming machine learning can reach the quality of professional expertise, which is not necessarily true), how much cheap labor needs to be used to label the required amount of training corpus to make it economically an advantage?  Something like that.  This varies from task to task and even from location to location (e.g. different minimal wage laws), of course.   But the key point here is that knowledge bottleneck challenges both approaches and it is not the case believed by many that machine learning learns a system automatically with no or little cost attached.  In fact, things are far more complicated than a simple yes or no in comparing the costs as costs need also to be calculated in a larger context of how many tasks need to be handled and how much underlying knowledge can be shared as reusable resources.  We will leave it to a separate writing for the elaboration of the point that when put into the context of developing multiple NLP applications, the rule-based approach which shares the core engine of parsing demonstrates a significant saving on knowledge costs than machine learning.

Let us step back and, for argument’s sake, accept that coding rules is indeed more costly than machine learning, so what? Like in any other commodities, hand-crafted products may indeed cost more, they also have better quality and value than products out of mass production.  For otherwise a commodity society will leave no room for craftsmen and their products to survive.  This is common sense, which also applies to NLP.  If not for better quality, no investors will fund any teams that can be replaced by machine learning.  What is surprising is that there are so many people, NLP experts included, who believe that machine learning necessarily performs better than hand-crafted systems not only in costs saved but also in quality achieved.  While there are low-level NLP tasks such as speech processing and document classification which are not experts’ forte as we human have much more restricted memory than computers do, deep NLP involves much more linguistic expertise and design than a simple concept of learning from corpora to expect superior data quality.

In summary, the hand-crafted rule defect is largely a misconception circling around wildly in NLP and reinforced by the mainstream, due to incomplete induction or ignorance of the scene of modern day rule development.  It is based on the incorrect assumption that machine learning necessarily handles all NLP tasks with same or better quality but less or no knowledge bottleneck, in comparison with systems based on hand-crafted rules.

 

 

Note: This is the author’s own translation, with adaptation, of part of our paper which originally appeared in Chinese in Communications of Chinese Computer Federation (CCCF), Issue 8, 2013

 

[Related]

Domain portability myth in natural language processing

Pride and Prejudice of NLP Main Stream

K. Church: A Pendulum Swung Too Far, Linguistics issues in Language Technology, 2011; 6(5)

Wintner 2009. What Science Underlies Natural Language Engineering? Computational Linguistics, Volume 35, Number 4

Pros and Cons of Two Approaches: Machine Learning vs Grammar Engineering

Overview of Natural Language Processing

Dr. Wei Li’s English Blog on NLP

【关于 NLP 以及杂谈】

关于 NLP 以及杂谈

关于NLP体系和设计哲学

关于NLP方法论以及两条路线之争

关于 parsing

【关于中文NLP】

【关于信息抽取】

【关于舆情挖掘】

【关于大数据挖掘】

【关于NLP应用】

【关于人工智能】

【关于我与NLP】

【关于NLP掌故】

 

导亦有道,我是这样做NLP导师的

我:
我是这样教导学生 NLP和 AI 的:
人工智能里面没有智能
知识系统里面没有知识
一切都是自己跟自己玩
一切都是为了自己玩自己的时候 努力玩得似乎符合逻辑 自然 方便 而且容易记忆和维护

学:
前面的听懂了,AI 这块有点懵懂

我:没关系 前面听懂了是关键。后面是哲学,哲学的事儿不必那么懂。你都懂了 我这个做导师的怎么吃饭呢?

学:
给功能词加 features 怎样才妥?

我:
功能词可以枚举,原则上可以没有 features,无所谓妥不妥。看你怎么用 用起来觉得妥就妥 觉得别扭或捣乱 就不妥。如果你永远不用 则没有妥不妥的问题 给了与不给一个样 因为永远没用到。没用到是可能的,譬如你总是为这个词写 WORD 的规则, 不让它有机会被 feature 的规则匹配上 那么 features 就是摆设 也就谈不上妥不妥。

学:
有道理。本来就这么几个词,写WORD就好了,不需要为Feature伤脑筋。

我:
有点开窍的意思

学:
跟老师多交流,才能开窍,不然我就钻进自己的死胡同了。

我:
人都是这样的 钻进n个胡同以后才能在 n+ 的时候开窍。没进过胡同就开窍的 那不是天才 那是死人。

学:
NLP 里面的知识表达,包括词典的 features,应该怎么设计呢?

我:
从词典表达 lexical features 到句法语义逻辑的表达,大多没有黑白分明的标准答案。
就是自己这么给了 显得蛮合理 也好记忆 否则自己就不舒服 或记不住。更重要的是 给了 features 以后 规则好写了 规则自然 简洁 有概括性 且方便维护。
almost everything is coordination
u assign
u use
no one is in between
no intelligence no god
as long as it makes sense to you (not to others) so u know what u r doing
as long as it is natural and easy to remember
as long as you find it convenient to use certain features in rules and rules are easy to read and easy to maintain
in principle u can assign anything to any words
or choose not to assign
what goes around comes around
you play with yourself
computer knows nothing
features are just 0s or 1s
WHAT GOES AROUND COMES AROUND
that is NLP in an integrated system
whether it refers to POS, chunking, SVO or logical form
it is to make your job easy and yourself comfortable
u have no need to make others happy unless your system is a middleware commodity to serve your clients
if your NLP and your NLP apps are within your own control
they are integrated in your system in your own architecture
everything is internal coordination
This is my lecture on NLP Architecture for Dummies

白:
you是谁?个人、团队、公司?

我:
good question, it is the architect in most cases: he has the say.  Sometimes it can be a bit democratic if the architect wants to motivate his team, for example the naming right.

白:
是全局系统的architect,还是NLP这嘎达的architect?

我:
a bit of knowledge is named as f1 or f2, that is arbitrary and the major consideration is memonic-like,  features must be easy to remember, but sometimes we let a team member decide its name, such practice often makes the team happy, wow I can act like God, wow I can decide a drop of the sea in the system language …

白:
伟哥还没回答我最后一个问题: 是全局系统的architect,还是NLP这嘎达的architect?

我:
the former because we are talking about NLP and NLP apps in an integrated system:
apps 不是产品 而是语义落地。落地后 还有一个产品层面 包括 UI 等 那已经不劳我们操心了。落地是与产品的接口而已。NLP 核心引擎与 NLP 落地 是一个无缝连接的系统 这种 design 可以羡慕死人。
如果是有缝对接 如果是两拨人马 两个设计师 甚至两个公司 那就扯不完的皮 擦不完的屁股 成不了大事儿。NLP 和 NLP 产品可以分开 而且应该分开  但是 NLP 与 NLP落地 最好不分开。NLP 落地 包括(1) IE (2) MT (3) dialogue (mapping) (4) QA (5)…… 内部分层 但外部不分开 这就叫无缝连接

可以说 offshelf 害死人,component technology 没有啥前途。选择 offshelf 或 license components 往往是无奈之举,自己暂时没有能力 或不具备条件做,也有找的借口冠冕堂皇:不要 reinvent wheels,最后害的还是自己。
我们已经害过几次自己了 吃尽了苦头 才有这 “十年一悟”,以前说过的: 做工业NLP 自给自足是王道。

白:
这个,关键看公司拥有什么样的专家了。专家不同模式也不同。

我:
也与时代有关: 20 年后也许不必自给自足,就一样做好NLP落地。

【相关】

【立委科普:NLP 联络图 】

【立委科普:自然语言系统架构简说】

自给自足是NLP王道

置顶:立委科学网博客NLP博文一览(定期更新版)】

《朝华午拾》总目录

 

【关于人工智能】

我其实是个蛮可怜的“砖家”,一辈子只做一件事儿,除了 NLP 语言工程的一亩三分地,每日掘地三尺,愚公移山,对于化外之地,基本是白痴一枚。特别羡慕仰望那些学富五车融会贯通的达人,如董老白爷洪仙尼克。尽管如此,我却还是不满足于低头挖煤,不甘心做语言学腐儒,老有一种哲学家的心魔压迫着我,不时要不知天高地远地天马行空一番,但总是飞不远,最多是飞到 NLP 的顶头上层AI瞅瞅,hence 下面几篇关于AI的哲学随笔。自然语言理解(NLU)正是AI在语言领域的体现。

 

关于 NLP 以及杂谈

关于 parsing

【关于信息抽取】

关于NLP体系和设计哲学

关于NLP方法论以及两条路线之争

 

 

【关于NLP体系和设计哲学】

 

关于 NLP 以及杂谈

关于 parsing

【关于信息抽取】

关于人工智能

关于NLP方法论以及两条路线之争

 

《朝华午拾》总目录

【置顶:立委NLP博文一览(定期更新版)】

立委NLP频道