语义三巨人

如所周知,统计型自然语言处理(Statistical NLP)作为主流盛行了20多年,此前盛行的是以语法分析为基础的规则系统。即便如此,为了模拟人的语言理解过程以及力求语言处理的更高质量,追求以知识系统为支持的语义路线的尝试,从来没有停止过。本篇笔记拟对此做一个简要回顾和比较,并记录自己的心得和不同意见。

就NLP的机器翻译应用而言,在相当长的时期内,统计型机器翻译由于其数据多开发快,善于在浅层模拟人工翻译(特别是成语和习惯用法的翻译)会一直是主流。即便是机器翻译的规则系统,也还是语法为主的路子比语义和知识为主的路子更加切实可行。这不排除在未来,当统计机器翻译和语法为基础的规则机器翻译的改进余地越来越小的时候,人们会重新探索知识路线以求突破。

坚持语义和知识为基础的语言处理路线,是一条繁难艰辛的道路。我感觉,语义是个大泥坑,我等凡夫俗子一旦陷进去大多出不来,而能够驾驭它的人均非等闲人物。

          

Dr. Douglas Lenat                      Prof. Charles J. Fillmore                     Prof. Dong Zhen Dong

语义三巨人

在计算语义界,有三位长期坚持超领域语义的顶天立地的大学者(如果要算第四位,也许应该包括英国的人工智能大师Wilks教授,他早年做过基于语义模板的纯语义机器翻译实验。再往前追溯,人工智能领域早期也有不少先驱者,不过都是在极为狭窄的领域尝试一些玩具知识系统)。他们是坚持常识推理的 cyc 的 Lenat 教授,格语法(Case Grammar)和框网(FrameNet)的开创者 Fillmore 教授和《知网(HowNet)》的发明人中国机器翻译前辈董振东教授。这三位对自己思想和信念的坚持、执着、反潮流和勇于实践,令人景仰。

这些智者的成果都有某种超时代的特征,其意义需要时间去消化或重新认识。可以预见,将来某个时候,当机器翻译和自然语言理解的应用项目穷尽了浅层可用的低枝果实之后,知识系统将会被进一步发掘、利用和欣赏。但目前多数项目还没有到山穷水尽的时候,急功近利是绝大多数项目和产品的固有特征,而且多数主事者也往往缺乏远见。绝大多数语言处理业者遇到语义和知识都是绕着走。

三位语义巨人中探索知识最深入和纯粹的是 Lenat 教授,他带领团队手工开发的 cyc 知识系统,试图从常识的形式化入手,利用常识推理帮助解决语言理解等人工智能核心问题。可惜这套庞大的系统太过复杂和逻辑,在实际应用上有点像大炮打蚊子,使不上劲。

Fillmore 教授是享誉世界的语义学家,他的格语法理论影响了一代自然语言学者,包括中国和日本自然语言处理领域的领军人物董振东教授和长尾真教授。事实上,董教授语义思想的核心概念“逻辑语义”就来源于 Fillmore 的深层格。然而,Fillmore 本人的语义发展与董教授的创新发展走上了语义颗粒度不同的两条道路,前者的成果为 FrameNet,后者的结晶是《知网(HowNet)》。

可以从构建NLP应用系统的角度来看 FrameNet 和 HowNet 的不同语义层次,即,从分析器(parser)和应用(applications,包括机器翻译,信息抽取等)的分工合作的关系来看。

语言的分析无论多深入,都不是应用,只是(理论上)缩短了到达应用的距离。就以机器翻译的应用为例,翻译转换可以发生在浅层(极端的例子是所谓词对词翻译系统)、在关键成分不到四个(主谓宾补)和附加成分不到一打(主要的定状语子类)的句法层、在《知网》的90个逻辑语义的层面或者在 FrameNet 的成百上千的 frames 的层面。多数统计型机器翻译都是在浅层进行,通过海量双语训练集,记忆住千千万万大大小小的翻译单位(个体转换规则)。这条路子可行是因为机器擅长记忆。手工编制的翻译系统就很难在浅层进行,因为浅层转换的千变万化超出了人工编制和调控的可能。但是,翻译系统应该深入分析到哪一步实施转换比较合适,是大可讨论的。

我个人觉得,FrameNet 过细(成千上万的 Frames 组成一个 hierarchy,即便只取上层的常用的 Frames, 也有几百个),不仅很难达到,而且实用上没有太多的好处。FrameNet 的提出,是格语法框架的自然延伸、扩展和细化,语义理论上有其位置和意义。但是在实用上,FrameNet 的地位很尴尬,他既不像句法层 argument structure 那样简洁和好把握,也不可能达到语用层的信息抽取模板(IE Template)那样可以直接支持应用(因为信息抽取是依赖领域的,而 FrameNet 原则上是不依赖领域的,或者最多是在语言学与领域之间起某种中介桥梁的作用)。这样一来,从实用角度,与其分析到 FrameNet (这个太繁难了) 再行翻译转换或信息抽取,不如直接从 argument structure 进行(这个靠谱多了,very tractable),虽然理论上前者的转换或抽取应该更加简单直接一些,但是由于 FrameNet 分析工作难度太大,终归得不偿失。换句话说,FrameNet 从使用角度看,语义做得过了(over-done),用起来不方便,没有多少实际利益。 退一步回到句法为基础的 argument structure 如何呢?

Argument structure 立足于句法结构,主要论元最多不超过三个(up to 3 arguments):逻辑主语,逻辑宾语,逻辑补语,加上谓词 governor,构成一个四元组,非常简洁,与各语言的词典句型信息 subcat 相呼应,易于掌握和实现。再加上10来个带有逻辑语义分类的状语(时间、地点、条件、让步、结果等)和定语(颜色,材料,来源等)。这样的中间表达作为语言分析(parsing)的目标,作为应用的基础,已经可以应对绝大多数应用场合。Argument structure 中的逻辑宾语和逻辑主语有其独特的概括能力,对于利用句法关系的语义限制排歧多义词和做知识挖掘具有特别的价值。

HowNet 不满足于此,它的体系是对句法为主的 argument structure 进一步细化,譬如逻辑宾语细化到 “patient”、“content”、“target”、“PatientProduct”、“ContentProduct”和“possession” 等子类。最终达到具有90多个逻辑语义角色的相对纯粹的语义表达。HowNet 就是这样一个概念知识体系,逻辑语义是连接这些概念的主要工具。

从主谓宾定状补这样简练的句法关系,深入到逻辑语义的角色,再进一步把逻辑语义细化,常常的表现就是信息表达的浓缩和冗余。HowNet 这样精细的逻辑语义,不仅反映了一个依存概念到主导概念的逻辑结构关系,而且反映了主导概念的子类信息(hence 冗余了)。例如,对于宾语的细化 “patient”、“content”、“target”、“PatientProduct”、“ContentProduct”,“possession” 等,显然是蕴涵了主导概念(谓词)的子类信息,而这些子类信息本来是已经附着在谓词上的。譬如作为 possession 的宾语,其谓词只能是 have、possess、own 这个小子类。信息表达的冗余意味着即便没有深入到细化的逻辑语义,系统并没有本质上的损伤,因为如果需要的话,细化信息依然可以通过句法关系节点的限制条件即时得到查询。

对于逻辑主语逻辑宾语等进一步细化的必要和利弊,我个人觉得是可以讨论的。首先是任何细化都是有开发和处理的代价的。更重要的是,其必要性究竟如何?从追求纯粹语义和逻辑、追求纯净的独立于具体自然语言的元语言表达的角度,我们总可以找到证据,证明细化是必要的。但是,在应用现场,我们也可能发现,对于绝大多数应用,细化并无必要。就拿机器翻译来说,同一语系之间的结构转换在逻辑主语宾语的 argument structure 的对应上有明显的一致性。即便是不同语系,这种对应也是主流,而不对应的可以作为例外,由词驱动(word-driven)的个性转换来应对。以上讨论,有很多例证,写得匆忙,暂时不例举了。

 

【相关】

【立委科普:机器翻译】

 

Share the joy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

发表回复