从技术的角度简单说一下依存文法分析和句法分析之间的实现上的区别?
1 原问题表述争议
问:从技术的角度简单说一下依存文法分析和句法分析之间的实现上的区别(比如第一步,第二步,第三步...)。
首先指出,以上原题存在表述偏差,似乎指代的是同一个terminology,又可以理解为前者包含于后者。这个问题主要由翻译引起的,需要给出权威的定义与中文翻译与之对应。先给出一个NLP领域的通俗理解:
文法 = 语法 = 词法 + 句法
就是说文法就是语法,包含了词法和句法。
根据句法结构的表示形式不同,问题中提到相关的术语解释[1]:
- 句法结构分析(syntactic structure parsing),又称短语结构分析(phrase structure parsing),也叫成分句法分析(constituent syntactic parsing)。作用是识别出句子中的短语结构以及短语之间的层次句法关系。
- 依存关系分析,又称依存句法分析(dependency syntactic parsing),简称依存分析,作用是识别句子中词汇与词汇之间的相互依存关系。
课程中第一节提到的语言结构[2]:
“语言结构分成两种:Constituency structure and Dependency structure.”
那么,对应的术语翻译为:成分结构、依存结构。句法分析的目标是给句子指定句法结构,有两种句法结构[3]:
- 成分结构 constituency structure
- 依存结构 dependency structure
根据语言学家对文法和句法的阐述[4]:
先说一下句法分析,它是自然语言处理领域的一个关键问题,它包含了研究最广泛的两类文法体系:短语结构、依存结构。依存文法最早由法国语言学家 L.Tesniere 于1959年在其著作《结构句法基础》[4]中提出,对语言学的发展产生了深远的影响,特别是在计算语言学界备受推崇。依存文法通过分析语言单位内成分之间的依存关系揭示其句法结构,主张句子中核心动词是支配其它成分的中心成分,而它本身却不受其它任何成分的支配,所有受支配成分都以某种依存关系从属于支配者。 在20世纪70年代,Robinson提出依存语法中关于依存关系的四条公理,在处理中文信息的研究中,中国学者提出了依存关系的第五条公理,如下[4]:
- 一个句子中只有一个成分是独立的;
- 其它成分直接依存于某一成分;
- 任何一个成分都不能依存与两个或两个以上的成分;
- 如果A成分直接依存于B成分,而C成分在句中位于A和B之间,那么C或者直接依存于B,或者直接依存于A和B之间的某一成分;
- 中心成分左右两面的其它成分相互不发生关系;
句子成分间相互支配与被支配、依存与被依存的现象普遍存在于汉语的词汇(合成语)、短语、单句、复合直到句群的各级能够独立运用的语言单位之中,这一特点为依存关系的普遍性,依存句法分析可以反映出句子各成分之间的语义修饰关系,它可以获得长距离的搭配信息,并与句子成分的物理位置无关[4]。
2 原问题修改回答
那么,这题按照我的理解,问题应该表述为:
问:从技术的角度简单说一下Dependency structure (依存结构)和 Constituency structure(成分结构)之间分析步骤上的区别(比如第一步,第二步,第三步...)。
Two views of linguistic structure.
Parse trees(解析树,语法分析树)用于分析句子的语法结构(syntactic structure),主要有两种结构:constituency structure 与 dependency structures,并简单举例。
Constituency structure(成分结构)分析
Phrase structure organizes words into nested constituents,其使用短语结构语法(phrase structure grammar)把单词组织成镶嵌的结构,例如:N(Noun)名词、NP(Noun Phrase)名词短语、Det(Determiner)限定词、Prep(Preposition)介词、PP(Prepositional Phrase)介词短语、Adj(Adjective)形容词、V(Verb)动词、Pron(Pronoun)代词。
例如:the(Det) cat(N) by(Prep) the(Det) large(Adj) crate(N)
以上成分结构分析就是把句子视为由短语形式组成,总结:
- A constituency parse tree breaks a text into sub-phrases.
- Non-terminals in the tree are types of phrases, the terminals are the words in the sentence, and the edges are unlabeled.
- It is interested in sub-phrases within the sentence.
根据以上介绍,在步骤上可归纳为:
- 分词与词性分析,拆解句子为单词(词汇单元);
- 单词合并为词组,例如:形容词+名词(large cats)、动名词+名词(eating cats);
- 重复步骤1-2,迭代组合,直到将句子划分为词汇短语的组合;
Dependency structure(依存结构)分析
句子的依存结构(dependency structure)表示了一个单词如何依赖于/修饰另外的单词,这种单词间二元的非对称的(binary asymmetric)关系叫做依赖(dependency),使用箭头表示,通常这些依赖形成了一个树的结构,总结:
- Dependency structure shows which words depend on (modify or are arguments of) which other words.
- A dependency parse connects words according to their relationships. Each vertex in the tree represents a word, child nodes are words that are dependent on the parent, and edges are labeled by the relationship.
- It is interested in the dependency relationships between words.
依存关系是一个中心词与其从属之间的二元非对称关系,一个句子的中心词通常是动词(Verb),所有其他词要么依赖于中心词,要么通过依赖路径与它关联;依存结构是加标签的有向图,箭头从中心词指向从属,具体来说,箭头是从head指向child,从该解析树可以看出,每个Token只有一个Head[5]。
根据以上介绍,在步骤上可归纳为:
- 选择root,大部分情况下选择动词(主谓宾结构下);
- 根据主谓宾的结构寻找与root有关系的单词;
- 根据主谓宾的结构寻找与宾语有关系的修饰词或者介词;
- 根据每个单词的指向关系,可以构建依存关系树;
由于这个话题可以被深入展开,所以不举例,推荐公开课程:Stanford Coursera course: Dependency Parsing[6] ,相关文章的解读:
- cs224笔记:Lecture 5 Dependency Parsing
- 斯坦福CS224:依存句法分析
- 斯坦福CS224 NLP学习笔记-6 依存分析
- [CS224n笔记] L5 Dependency Parsing
- CS224n笔记[4]:自然语言中的依存分析(Dependency Parsing)
- CS224N笔记(五):Dependency Parsing
区别与联系
两种语法结构能够揭示句子中不同的信息,所以现实任务中,需要用到句子中的短语结构就用constituent ,而需要用到词与词之间的依赖关系就用dependency。
另外,依存句法树能够根据成分句法树转换而来,但成分句法树不能通过依存树转化来。转换的规则是head-finding rules from Zhang and Clark 2008[7]。
参考资料
[1]. yuquan. (2018). 自然语言处理基础技术之依存句法分析. AI小白入门. 知乎: https://zhuanlan.zhihu.com/p/51186364
[2]. 李文哲. (2021). 第二十三章 依存文法分析:从语法分析到依存文法分析. 自然语言处理精英训练营:https://uai.greedyai.com/home
[3]. 程引. (2021). 成分分析(Constituency Parsing). 沉吟至今. 知乎: https://zhuanlan.zhihu.com/p/404821921
[4]. 我爱公开课. (2012). 中文依存句法分析概述及应用: http://www.52opencourse.com/223/%E4%B8%AD%E6%96%87%E4%BE%9D%E5%AD%98%E5%8F%A5%E6%B3%95%E5%88%86%E6%9E%90%E6%A6%82%E8%BF%B0%E5%8F%8A%E5%BA%94%E7%94%A8
[5]. 悦光阴. (2019). spaCy 第三篇:依存分析. 博客园: https://www.cnblogs.com/ljhdo/p/5076717.html
[6]. Dan Jurafsky and Christopher Manning. (2012). Natural Language Processing . Lecture Slides from the 2012 Stanford Coursera course: http://web.stanford.edu/~jurafsky/NLPCourseraSlides.html
[7]. trayfour. (2016). Constituent Parsing & Dependency Parsing 句法分析简介. CSDN: https://blog.csdn.net/u014422406/article/details/53954530