白:
句法的作用,第一是把远距离相关的成分拉到一个滑动窗口里来,第二才是在同一个滑动窗口里有多选的话,考虑语序因素来进一步缩小范围。
李:
说得好。第一个作用一多半是由 phrase chunking 完成的,这被认为是 shallow parsing,相当靠谱的一种操作。
白:
问题出在,如果在phrase chunking过程中出现多种可能性,混乱到chunk的边界都有分歧,这时候带着不确定性跑会很累。又回到休眠反悔的话题。边界不一致倒也罢了,中心词都不一致,更不好对付。
李:
问题不严重。关键是 chunking 基本上针对 basic XP (baseNP etc),只要具有前后条件查询的机制,搞定 boundary 一般没有问题。对于所谓 right-branching 递归,譬如 PP 的后修饰,等,shallow parsing 一般把这个问题推后,不去牵扯。
白:
形容词副词介词限定词这些都不担心,担心的是从句。从句递归以后,边界和中心词混乱的概率明显增加。
李:
shallow parsing 绝对不要管从句,连稍微复杂一点的多层 phrase 都被排除在外。这样一来,虽然理论上,窗口聚焦的任务不可能完成,但实践中,其实问题也不大,因为特别复杂和嵌套的句子,并不是语言事实的大多数,这是其一。其二,窗口的大小除了 chunking 把前后的修饰成分吃掉以外,系统还可以选择性跳过挡道的东西。事实上,deep parsing 其所以可以在 shallow parsing 的基础上进行,正是这个理由,不过做的时候小心一点罢了。这样来看,chunking 的核心就是搞定 boundary 和 确定 head。这两个都不难。一旦搞定这两点,结构的基础就打牢了。至于结构歧义,它被自然地推后了。
白:
另外就是NN结构,经常是伪歧义,所以N+N这种,最好是白名单管理,条件不满足是断开的,有罪推定。而A+N,就应该是无罪推定。条件不满足就应结合。
李:
N+N 统计上看,就是合成词为主。A+N 就是合成词以后的短语层内部修饰,大体如此。
歧义分两种。短语内部的结构歧义可以休眠唤醒,不影响分析向深度进行。因为短语对于句法已经包裹得严严实实,里面藏一些搞不清的关系,属于人民内部矛盾。
白:
嗯,比如“两个英雄的母亲”你管他几个母亲几个英雄呢,反正对外的全权代表就是“母亲”。剩下的慢慢来。
李:
清官难断家务事,句子层的语法关系,一般没必要进入短语内部去参合(当然可以找到例证,短语内外的关系是有相关性的,别说短语,甚至句法的东西也有需要进入词法内部去协调的,但是统计上可以忽略这种 interaction)。
白:
远距离相关,要拉近的就是“母亲”,“英雄”无所谓。
梁:
人民内部矛盾,家里家外有别。
李:
第二个结构歧义是basic短语之间的,这个问题比较大。典型的譬如 pp-attachment,汉语中的“的”所涵盖的 scope 问题。deep parsing 的主要难点就是与这些短语之间的歧义战斗。但是可以设想一个简单的 deep parser 绕过这些问题,遵循休眠政策,就是一切关联一律就近原则。这样 parse 出来的句法树,不能直接对应逻辑语义和理解,但是作为一个结构基础,还是能起很大作用。
白:
这个是权宜之计,只不过有休眠兜底,不怕。
李:
原因是,理论上,这样一颗全树贯穿了所有节点,从任一个节点到任意的另一个句素节点,都有路径可达,不过是直接还是间接而已,道路是畅通的。譬如 PP-attachment,如果从VG未达想要check的PP,不过就是通过NP间接达到PP,一样可以找到你想要找到的某种PP。如果语用或产品是建立在这样 pseudo-deep-parsing 的基础上,完全可以考虑把 domain 的知识,ontology,heuristics 等等带进来,去求解想要的信息目标,这比关键词不知道要强多少倍。
白:
可以“句法制导”地去做。
李:
而且,到了这个地步,也可以根据情形,重新做局部 re-parsing,这个 re-parser 可以设计成特地为了休眠唤醒而制作的。
白:
休眠的数据结构设计好了,re-parsing可以很有章法。
李:
它有两个以前没有的有利条件:(1)量上,聚焦了。面对的不是大海,而是其中一个子集。面对的甚至不是全句,而是句子的某个部分。(2)语义限制条件可以放开手用,除了 domain 知识可以引入外,其他语义条件也可以用,因为这里求的是精准,而recall已经有娄底的了。
白:
最近也可以换成其他条件,比如统计上最般配之类。
李:
对,这个很有意思,不过实现起来有一定难度。理论上没有问题。最般配是有大数据基础的。怎么用好,看功力了(更多的是工程的功力)。
剑桥有一个老学者,以前很熟,他做过类似 Preference Semantics 的 Subact 语义条件的统计工作。有非常有意义的结果,可惜那个方向的结果,距离工程上应用还有一些实现上的挑战。但是,这些都是具体的细节问题,宏观上,这一路一定会大幅度提高 deep parsing 和 理解的能力。没有疑问。
传统 parser 的一个致命的问题是内外不分,CFG 的 chart parser 是从词到短语到从句到所有的句法结构,一锅端。这个大大地限制了其 parsing 的深度、广度、鲁棒和效率。
白:
基本三条路:全息,带着所有选择跑;回溯,带着一个选择,备着所有其他选择;休眠,带着一个选择或一组一致对外的选择在主战场上分析,其他选择也不闲着,在另一个战场上以一定概率梦游。我看好休眠。
李:
phrase 这一刀很关键。实际上,phrase 是一个极其重要的层面。phrase 可以看成是有三妻五妾的大红灯笼的乔家大院。甭管内部争风吃醋你死我活。大院只有一个院子主人对外,就是老爷。其他的妻妾佣人宠物财物统统不作数。国家大事只在老爷之间进行。小家内部的矛盾可以无视,只在需要的时候用到。
白:
个别老爷之间有些扯不清楚,先用某种规则糊弄鬼子。
李:
休眠和梦游(唤醒)一般不在一个时间区间,所以一般没有瓶瓶罐罐的牵累。
白:
不清不楚的只能通过梦游获得扶正的机会。大院的边界是武断的,而这武断如果有大数据支持,就更胆儿肥了些。
李:
base-phrase 的边界不是挑战,不用大数据。倒是院子之间的关系, PP-attachement,等,大数据可以派上用场。
白:
我说的就是后一种。
李:
那个我验证过,绝对可以用上,也非常有效。就是在线实现非我所能。本质是 offline knowledge,real time use, 还不能 pre-computing,需要工程好手,也许有戏。
首发科学网 《新智元笔记:基本短语是浅层和深层parsing的重要接口》
【相关】