《镜子大全》《朝华午拾》分享 http://blog.sciencenet.cn/u/liwei999 曾任红小兵,插队修地球,1991年去国离乡,不知行止。

博文

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

已有 5759 次阅读 2015-10-24 10:22 |个人分类:立委科普|系统分类:科普集锦|关键词:句法树,parsing,依存关系,短语结构| parsing, 依存关系, 短语结构, 句法树

我: 关键是,一个 real life robust parser 可能不能把所有句子 parse 对,但是每个完整句法树中间可以分解为n个binary的依存关系,然后可以数一数这n个关系中有多少的查准率和查全率。因为实际上在使用的过程中,极少真地用到全树matching,用的都是子树matching (subtree matching),无论是SVO搜索还是SVO支持的图谱抽取,都是如此。在子树matching的时候,为了 robustness,通常也都是打散成 binary 去分头做matching的。在打散的过程中,一般会有一个 backoff 机制(从文法关系 backoff 到 proximity),来应对句法树的断链环节。正因为此,一个注定不能完美的 parser 才可以实用。另外,parser 并不立马达成理解,而是为理解创造一个结构化的、可以有pattern来涵盖的条件。事实上,parser 一般只是做句法的结构化而不是语义的深度理解,为的是 pattern 可以显示出来,为后去的 SVO search 或者 SVO 抽取服务。通常的理解发生在抽取或其他接近领域或应用的层面,因为在那个层面,理解的目标开始清晰,效果也可以测量。
我说 parsing 的技术已经成熟,并不是说它是完美的,而是说统计上可以达到90%,对付大数据足够好了。100 个 binary 的结构关系的话,无论precision 还是 recall,现在都可以达到90%左右。而且 robust,基本不管什么 input,包括社会媒体这样 monster。
雷: @wei 是不是可以单刀直入直取svo,事后修正?
我: 昨天你说 SVO 支持的知识图谱不太管用。其实,那是因为那个 SVO 没做好。我们自己的SVO去做知识图谱的抽取挖掘,无论中文英文,都是非常靠谱的。
雷: 是,SVO的准确性是关键,否则谬之千里。99%也背不住相乘几次。
我: 不需要完美的 parser 去做抽取,抽取层面可以弥补的。因为抽取的时候,可以用词来驱动,可以把规则写得有包容性。在词驱动的时候,因为节点是确定的,那么对于 parsing 的容错性就增强了。道理很简单,任何条件的宽松都可以内部调整来平衡。node 严一点,relation (arc)就可以寛一点。如果主语不小心做成宾语了,只要这种错误是可以预见的,就可以包容。
准确性已经达标了,至少在我这儿。Stanford 的那个 parser 也基本达标了,不过 parser 这东西没法用第三方的去做应用,大学出来的尤其没法用。
Philip: 不能产品化?
我: 第三方的基本不能产品化 没有见到成功的案例,没有做产品的。从内部调控、速度优化、robust 的考量等等,parser 是一个应该自己内部开发才好产品化的东西,这个工夫省不了。
Philip: 是个算法型的软件模块?
我: 可以这么说吧,总之有很多内部协调需要做,第三方的不好使。
雷: 算法加词知识库加规则库
毛: 有没有开源的项目?
雷: 有,英文的
毛: 叫什么?
雷: 好几种,Stanford,Berkeley,CMU,等等,NYU也提供
毛: 都是用于nlp的parser?
雷: 是。还有英国的,日本的
毛: 但是没有中文的?
雷: 中文也有。哈工大的。
毛: 也是开源的?
雷: 是
毛: 知道在哪下载吗?
雷: 都是统计学派的,我找到告诉你。
我: 统计派没法与规则派比parser,因为他们没的可玩。最多一个 penntree 这样的, labeled data 不是自然的对象,句法树是隐含的东西,你只能找语言学学生去手工标注,哪里成得了规模。没有数据,怎么玩出质量来。这是其一。其二是 penntree 这些行业标准实际上叠床架屋,定标准的时候就有很大的毛病。只不过做 NLP 的多数人都不是学语言的,没法去挑它的缺陷而已。加上只此一家别无分店,看到毛病也只好用它了。别说那乔姆斯基短语结构作为基础的树形表示有很大的缺陷,PennTree 连句法树的基础 POS 都有很多毛病、设计上的缺陷。譬如,介词与主从连词不区分,都标注为 IN,要有多愚蠢才会把这两个如此不同的东西混在一起(仅仅因为有几个小词既做介词又做主从连词)?另外,还有好多小词的分类完全没必要,徒增负担,扭曲研究重心。小词是可枚举的类,都是词典强制给的分类,过分细分没有好处。其实POS关键的就是名形动副大类,其他几十个小词的分类扭曲了 benchmarking 的注意力,从而误导了 POS 的研发。
雷: 请说明一下乔姆斯基短语结构的缺陷
我: 不逻辑,不国际,叠床架屋,引导规则系统做没必要的结构层的抽象。最后是不好用。每一条都可以写一长篇来论。
雷:  这个太笼统,请再具体一些。
我: 不过要睡觉了,快天亮了都。
雷: 哦,也是太晚了。留着话题,明天再听高见。再讨教。
我: 总之是,用 Penntree 及其标准是多数人没的选,行业标准就定错了,你不自己开发自己用的话,你只有屈从。简单说,就是依存关系最简洁好用。
雷:  我近来花了不少时间在PennTree上,希望多听你的意见。
我: 短语结构的主要价值是在短语那个层面,超出短语去做句子的结构的时候,短语结构就是个添乱的东西。即便在短语层面,短语内的关系仍然是依存的关系好用,不过是说,基本短语比起单个的短语中心词,在句法树的表达上构成了更好的句法单位(句素)。
X-bar 理论流毒甚广,莫名其妙地一味追求结构的 generalization,搞出什么 IP 之类的节点来,叠床架屋,唯此为大。也不好看,不好读,不好维护,一个结构搞得那么地深,一层套一层套那么多。其中很多层根本就没有内容,只是为了一个虚无缥缈的结构的generalization (或一味追求所谓 universal grammar)而人为设置的。

乔姆斯基真地对 NLP 多是负面影响,正面的很少看到。xbar 宗旨是所谓 UG,就是从结构分析的角度追求一个极致,看能不能在结构上统一世界,不惜加上很多人为的假设。

黄: 握个手,我也极其不喜xbar

白: xbar核心是,一切结构都是向心结构,最终负载在中心词上。有的向心结构是“吸收性的”,有些是“开拓性的”。吸收性的可以任意递归,开拓性的必须有坑的支撑,基本事不过三:左一下右一下,光杆司令再一下。所以,Xbar是反中心递归的。都是左右递归,就好办了,复杂性不会超过FSA。

洪:
信息抽取用parsing,
不懂/没用全都扔。
语言分析究源本,
力图更多意味呈。

雷: xbar 缺点,给一个比较极端的例子
我: 我还跟我女儿讲解过这点。
更多的xbar评论在我的博文:《乔氏X 杠杠理论以及各式树形图表达法》:

QUOTE

因为我常常提到乔姆斯基,不少朋友以为我是乔迷。其实对这位语言学超级大佬,我一贯是敬而远之,把他当菩萨小心供着,但绝不亲近。一辈子做 NLP,从来不用他的理论,最多是取其个别概念,体系上与这位开创现代语言学主流的泰山渐行渐远。虽然他有数学出身的背景,还是计算机编译理论的奠基人,它那套语言学学说对于自然语言实践不好用、不灵光,有时误导,甚至让人走火入魔。

这两篇博文基本上回应了你的要求。动词杠杠与名词杠杠就同构了,于是离世界大同近了一步。那种所谓结构的 universals 没有实际意义,因为是在有限的 category 中。其实就是3个categories,名形动追求所谓结构的一致性,为此不得不虚设一些东西。

雷: xbar的目的是为了赋予短语一个结构,而短语确实是有结构的。xbar可以覆盖短语的所有结构。如果我们把UG放在一边,单说结构,是不是这个理论可以覆盖短语的所有结构?因为短语也是可以不断扩展的。

我:(1)这是吃饱了撑的;(2)抽象的结果反而不好用。
其实,传统语言学中的 subcat 就可以覆盖所有的argument 结构(最多是 SVOC 四元),加上 modifier 和 adverbial 的结构,再有一个 Conjoin,也就齐备了。
可以用上述的依存结构去看世界,比用 xbar 看世界精彩简洁多了。关键在于 non-terminal node,这是 PSG 和 DG 的根本不同。PSG 理论上有抽象性 由于这个 nonterminal nodes。因此 理论上可以更容易总结句型。对于千变万化的句子,能够容易抽象出有限的句型来,有其功。DG 因为全部是 terminal nodes,总结句型被认为比较难,虽然反映逻辑和语义的关系更加直接了当。而 PSG 中乔氏 Xbar 更是其走向极端。
雷: @白 上面提到xbar可以有效地表征递归结构。
DG是直截了当的。
我: 乔老爷追求语言共性(language universals)和类似数学公式的符号表达法入魔, 理解他先必须接受他的一系列 assumptions,然后雾里看花一样地看到语言的世界大同。
雷: 但是如果要画出句法树来,有PSG作为Backup呢
我: QUOTE:他那套短语结构句法树(phrase structure tree,见上图)既不精简也不好用,离关系语义和逻辑更远,比起依从关系结构树(dependentcy tree,见下图)差远了。不少自然语言学者用了他的形式化结构树以后,在使用前还不得不转换成依从关系树。这是何苦。 不幸的是,NLP 中最有影响的的人工标注的句法树库在宾大,叫 Penn Tree Bank,用的就是短语结构树。作为实际上的业界标准,Penn Tree Bank 迫使很多 parser 研究者不得不与这个难缠的短语结构树打交道。NLP 历史上尽出这些不好用但又不得不用的资源,另一个例子就是心理学家编制的对于NLP一点也不友好的 WordNet。
依从关系树长于揭示句法的或者逻辑的关系语义(Subject,Object,Complement,Modifier,Adverbial 等等),简明易懂,但缺点是在排除了中间层的 X 杠 non-terminal 节点 (XP or XG) 以后,句型失去了节点的抽象度。
雷: 长得好看的树还是PSG的。
我: 一点都不好看,跟个悬空楼梯似的,老觉得随时要塌下来。
雷: 只要顺着树,能摸着VERB,就能找着SUBJ,OBJ,等等,也就能知道AGENT,PATIENT,等等。由VERB找SUBJ和OBJ,由SUBJ和OBJ,发现是什么ROLE。
我: 不过关于美,没的争。哪里要顺着PSG树去摸S和O呢?在DG tree,从 TOP 往下不就直接摸到了么?顺着任何一个老子,都可以摸到儿孙的枝枝蔓蔓,各种繁衍,一目了然。
这叫老子和儿子的语言学树。
你说说在 NLP 中,有什么是 PSG tree 表达出来的好用的东西,是 DG tree 没有的?
雷: 在我看来,两者是可以互相转换的,没有本质的区别。DG比较直接,容易理解,是词性语法。但是词性语法是不考虑到全局的。
我: 第二个问题,既然等价,用的时候基本上都用 DG,为什么要借用 PSG?逻辑的解释就是 PSG 建树更容易,所以作为桥梁。实际上的NLP原因是因为没的可选,世界上只有一个 PennTree。对于建立 tree 和 WordNet 这样吃苦的事儿,没人耗得起,只好将就用了。
雷: PSG是给人用的,DG是给机器的。人在标注句子时,同他们讲DG是不行的。这个就同ontologies与给人用的专业词典一样.
我: 恰好相反,标注DG比PSG简单多了,特别容易老妪能解。(几乎)任何人都能够理解 SVO,不就是 who did what 么?但是理解XP是很难的。你根本无法跟一个懂语言不懂语言学的人讲清楚什么叫 IP。所以 PennTree 这样的东西必须请语言学硕士博士去弄。当然,语言学学出来反正也找不到工作,请他们出来做苦力也是可以的。
雷: XP的语言学版本是比较晦涩的,但大致的意思+一些符号,用来标注是可以的。
我: 晦涩如果有好处 也就罢了,无论如何看不到好处啊。做了一辈子了NLP,也没看出它的好处来。无论是在句法的课堂上谈理论,还是在 NLP 的现场,都没有看到好处。
雷: 晦涩的部分涉及到UG,但是XP留下的一些符号和结构,还是被广泛使用的,即使在NLP领域。
我: 唯一的好处就是 乔氏给大家画了一个世界大同的饼,你顺着他的思路可以一直走下去 海市蜃楼一样觉得越走越近,有一种虚幻的满足感。但是不接地气啊。
雷:  乔氏的追随者是语言学家。NLP的工作人员非常实际,有用的留下,不好用的不理睬。

我: 话说这语言学里面有一门学问叫文法。学文法简单来说就是学画树。各种各样形态各异的树,表达了语言的多姿多彩,却万变不离其宗。奇妙啊。当年上帝怕人类同语同心去造通天之塔,乱了天地纲常,遂下旨搅乱了人类语言。印欧汉藏,枝枝蔓蔓,从此语言的奥秘就深藏不露。于是催生了一批文法学家,试图见人所不能见,用树形图来解剖语言的结构。

天机不可泄漏,泄漏者非神即仙。历史上有两位功力非凡的文法神仙专门与上帝作对,各自为语言画树,一位叫 Tesnière,另一位就是大名鼎鼎的乔姆斯基。
本来我们说话写文章都是一个词一个词往外蹦,这样出来的句子数学上叫线性一维。可这线性的东西到了文法家眼里就变了,一维变两维,线性变平面,于是产生了树形结构。上图的树就是我们训练出来的文法机器人( parser) 自动生成的,虽然并非完美无缺,倒也风姿绰约。
  from科普小品:文法里的父子原则
雷: 乔氏是不管语法是不是可以计算的,是不是NP问题。乔氏在儿童心理语言上还是非常有影响的,因为UG吸引着人们。
我: 你看看里面 parser 画的树:
有两大类树,都要倒过来画的,根朝上叶朝下,依据的是两种语言学理论,代表人物就是前面提到的神仙特氏和乔氏。上面的树就是特氏的依从关系树(dependency tree),它直接把作为文法基本单位的词与词串成树形。还有一种就是乔氏短语结构树(phrase structure tree),特点是在基本单位之间加了很多中介(non-terminal nodes),然后成形。
雷: 白老师概括的好:向心的,和有坑的,两种基本结构。任它有万千,基本节点就在这两种上演绎。

我: subcat 就是从老子给儿子预备的坑结构,modfier (包括 adverbial) 就是从儿子去寻找老子的向心结构。因此 modifier 无定数,有些野生的、边缘的、花边新闻的意味,永远进不了 argument 核心。

白硕: 有个别小词怪异,比如“的”。

雷: 乔氏总是想躲着语意走,不得已不用语意。DG为了计算,就是要把语意带进来。这个是两种人:语言学家,语言工程学家。
我: 从语义上看 argument structure 是绝对的纲,纲举目张。从语用上,其实 MOD (modifier,adverbial)往往更重要,在 MOD 里面的信息都是事件的细节(何时、何地、何因、如何等)。
argument 定义了事件的性质和主要参与角色,所有的细节都是 MOD 提供。
白: 细节:〈属性名,值〉对,属性可选不是必选,属性可不出现,如果由值可唯一确定。。
雷: CTB又延伸出CPB,就是又加了argument的角色部分。
白: 比如说红就知道是颜色的值,说辣就知道是味道的值。多一个少一个,都不影响大局。在框架里,是一个指针指出去然后姥姥不疼舅舅不爱的弃儿。
我: 那是数据结构表达的方式,unification 文法里面就特别的讲究和严格。结果是不堪使用,比Xbar还糟糕,包括HPSG。你看看他们的图示,普通的教科书的页面不够画一颗简单句的树,那种叠床架屋。当然你可以用 macro 去简约,然后你不得不在脑子里去还原那巨大无比的结构。
白: 让语义去搞啊,句法弄这干什么,知道是“吸收性的”向心结构就足够了。约掉、再约掉。
我: 说的就是啊。合一文法一派本质上是 PSG 的延伸,也到了走火入魔的程度。
雷: 词法+语意 能很容易分析出句子,但要抽象或概括,就弄出树。比如,短语可以无限扩展。
我: 你要什么样的抽象和概括?理论上的,还是实际管用的?理论上的标准太虚,没的好争,理论家为此吵翻天的多了去了,写了无数文章,说我的分析法(或模型)比你的分析法高明,因为更加 general blah blah。好像有个什么三原则,来判定一个理论系统的优劣。那些都是扯皮,在我看。
雷:  这么说吧,树有点像xml的格式,人看着很烦,但机器不烦。结构本身就含着信息。
我: 人看着烦,机器就烦,因为那个机器是要维护的,而维护的是人,不是机器。如果你做出了一个机器,打包成黑箱子了,当然就没这个问题了,其实不是这样。你对比一下两棵树,看看你愿意与哪种树打交道。
如果是从实践中看概括性,举一个 PSG 概括好的例子出来,我们可以验证一下,这个概括在 DG 中是不是不能体现?
你把这个句子“这线性的东西到了文法家眼里就变了,一维变两维,线性变平面,于是产生了树形结构”拿去用你用的PSG parser 来一下。
看看结果如何,先不说质量,我们只说表达法。看看你表达出来的格式还是不是(正常)人可以读(或容忍)的格式?
白:  我的要求特简单,就是给我意合的动作指一个结合方向就足够了。向左,还是向右。把所有非终结符做个矩阵就齐活了。剩下的语义来管。
刚才有个“浦东开发和建设”的例子,从语义看,开发和建设都带坑,浦东可以往里填。句法,尤其是POS在这个地方只会添乱。
我:  不分名词动词反而做得更好。汉语名动提前区分确实添乱,可以基本不区分。POS 不是显性形式,是一种人为标注(隐性形式),不是硬的句法。标注名词,动词,与标注人,动物,标注动作,行为,本质上一样,只是对词的标注的颗粒度不同。
白: 有没有坑,什么类型,更关键

我: 汉语的逻辑动词作为词典给定的 POS 基本上不需要在 POS 模块去改变句法的词性,除非有特别的理由,这一点与西方语言做法不一样。坑和类型都是细分类,细分类比粗分类管用,特别是汉语,这一点可以有共识。粗分类本来的好处是,可以有兜底的大规则利用它,可以多快好省地做出 parser 来。这一点在欧洲语言中体现得明显一些。POS based rules 一上去,就可以干掉一半的语言现象。S --》 NP VP; NP ==》 DT (Adj)* NN  这些都是玩具一样的抽象规则,可的确可以概括不少现象。可是到了汉语,这种粗线条就不管用了。汉语磨的是细活。我论过这个 parser 开发的区别:

QUOTE

其实,真正做过西文处理也做过中文处理的同行应该不难认同上述看法。我说的是“真正”,对西文处理浅尝辄止的不算(浅尝辄止的包括NLP硕士课程中的语法形式化游戏:S: NP VP; NP: Det? Adj* NN+; VP: V NP?)。如果你比较深入地implement过一个英语分析器,针对的是大批量的真实语料,你会发现:英语的深入分析所遇到的难点需要调动很多手段,需要很细致的工作,而这些手段和工作也正是中文处理所需要的。我常常这样跟朋友说英语处理和中文处理的异同:如果你做硕士作业,导师给你一周做出一个语言处理系统能够处理50%以上的语言现象,在英语是可行的,在汉语是不可行的。因为你可以下载一个免费POS Tagger,在POS基础上编制一套粗糙的语法交差。然而,如果你要面对真实语料做一个实用的语言分析系统,如果英语需要开发N个月,调动 M 个手段,那么用同样的时间和手段,中文开发也大体可以到位。形象地说就是,中文这座山是陡坡,英文的坡则比较平缓,但是两座大山的高度其实是相差无几的。如果电脑爬坡只求到达山腰,在英文是比较容易的,在汉语则很难。然而,如果电脑爬坡的目标是山高80%以上的地带,所需资源和手段相差并不大。


雷: PSG tree:

IP
 IP-SBJ
   NP-SBJ
     DNP
       DP
         DT 这
       NP
         NN 线性
       DEG 的
     NP
       NN 东西
   VP
     VV 到
     AS 了
     LCP-OBJDNP
         NP
           NN 文法家
         NP
           NN 眼
       LC 里
 VP
   ADVP
     AD 就
   VP
     VV 变
     AS 了
PU ,
IP
 QP-SBJ
   CD 一
   CLP 维
 VP
   VV 变
   QP-OBJ
     CD 二
     CLP 维
PU ,
IP
 NP-SBJ
   NN 线性
 VP
   VV 变
   NP-OBJ
     NN 平面
PU ,
IP
 ADVP
   AD 于是
 NP-SBJ
   NONE *PRO*
 VP
   VV 产生
   AS 了
   NP-OBJ
     NN 树形
     NN 结构


我: 哈哈,这玩意儿你不写个程序转成 DG,谁看得清啥意思啊?

不过,其实 parse 质量不错,这是哪家的,哈尔滨的?
雷: 我已经不能辨别了。要找一个第三者来说。我陷入太深。
雷氏的。
我: 结构基本没错,质量超出我的预期。
行啊,你自己的就行。因为第三方的即便是同样的质量,也难以用于开发。自己的就好办。我好奇的是你怎么用它,是不是在用的时候,先转成 DG 表达?很难想象可以直接在 PSG 上去做有效率并且好维护的操作来。譬如 SVO search 是在 DG 上 search 还是在 PSG 上直接 search?
雷: 先DG,再通过转换,生成这个
我: 那就没道理了,先DG就DG不就得了。
雷: 就是为了好看,没有别的。
我: 问题是不好看,特别难看。为了与同行做 apple to apple benchmarking 可能需要,这是唯一的理由。
雷: 同CTB。这个是口味问题。
我: 好看确实是口味问题。但是容易理解不是。你拿这个树给人看,如果没学过语言学的,她是看天书。
雷: 我挺喜欢PENN的说明的。也试图用于训练实习生。
我:而 DG,稍加讲解,一般人都能看懂。
雷: 这个也是的,trust me,不是很难理解,但是要有好的视图工具,可以把节点关闭。
我: 那倒是
雷: UIUC有一个特别漂亮的NLP demo,把树与语意用图表示得特别清楚,真是在显示上下了功夫。
我: 既然是等价,也就没的好争优劣了,萝卜青菜。
雷: 关键还是在词法和语意上,@wei 你睡不睡觉?好像你没有多久就出来了
@毛 http://www.ltp-cloud.com/ 这个是哈工大的开源NLP
我:  我是一早就醒,夜里睡不着,白天打瞌睡
一句话,老了。



【相关】

【立委科普:自然语言parsers是揭示语言奥秘的LIGO式探测仪】 

【立委科普:语法结构树之美】

 【科普小品:文法里的父子原则】

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

【置顶:立委科学网博客NLP博文一览(定期更新版)】




http://blog.sciencenet.cn/blog-362400-930548.html

上一篇:《知识图谱的先行:从 Julian Hill 说起 》
下一篇:Pre-Knowledge-Graph Profile Extraction Research via SBIR (1)

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-11-17 17:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部