1.解析是根据给定的文法(grammar),去构建线性表达的过程。而线性表达可以是很多东西,如一个句子、一个计算机程序、甚至一首歌曲,它们以一种线性序列(linear sequence)的方式存在。 在线性序列中,之前的元素集合起来可以对后面的元素产生制约(如果没有这种制约,则这个序列内部仍然隐含一个文法,但这个文法是无效的)
2.三观的不同: 数学家眼中的世界是静态的,一般不会考虑时间。而计算机科学家倾向于创造、联合、 分离和破坏各种结构,他们的工作经常考虑到时间的效率(即程序时间可行性)
3.有限的文法可以构建无限的序列,这就是文法范式(grammar paradigm)的力量和文法的重要之处: 它们简要的总结了某个特定类的所有对象的机构,以一种范式。而给定一串句子,期待找出其中的语法结构,这被称之为“文法推断”,是解析的逆问题。
本书纲要:
Chapter 1:对本书的整体介绍,如所需前置知识、阅读方案、适宜人群等。
Chapter 2: 对Grammars进行详细的介绍。
Chapter 3: 讨论了解析背后的原理、并对解析进行了分类:如自顶向下(top-down)或自底向上(bottom-up)、定向(directional)或非 定向(non-directional),而定向又被分为确定性(deterministic)或非确定性(non-deterministic)等。本章决定了后面几章的内容主体部分。
chapter 4: 讲解非定向性Parsing,包括Unger和CYK
chapter 5: 作为过渡章节,介绍了有限状态自动机(finite-state automata)的知识
6-10章讲述定向性parsing
chapter 6: 介绍了非确定性的自顶向下解析器(递归下降、Definite Clause Grammars)
chapter 7: 介绍了非确定性的自底向上解析器(Earley)
chapter 8: 介绍了确定性的自顶向下算法(各种形式的LL算法)
chapter 9: 介绍了确定性的自底向上算法(LR算法)
chapter 10: 介绍了非规范解析器,即用不严格的自顶向下或自底向上构造语法树节点的Parsing算法(如Left-corner)
chapter 11: 介绍了第十章的非确定性版本,如GLR praser(轮子哥说GLR好像很流行。。)
12-16章脱离了上述框架
chapter 12: 介绍了最新的用于解析某一语言中完整句子的子字符串技术,包括确定性或非确定性领域
chapter 13: 介绍了一种正在发展中的技术,该技术将解析视为贯穿有限状态自动机的上下文无关语法
chapter 14: 介绍了一些并行解析算法
chapter 15: 介绍了一些有关非乔姆斯基体系的解析理论
chapter 16: 介绍了一些错误处理方法
chapter 17: 讨论一些实践中常用的解析方法