句法分析讲义.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CYK算法-数据结构1 * * CYK算法-数据结构2 一个二维矩阵:{ P(i , j) } 每一个元素P(i , j)对应于输入句子中某一个跨度(Span)上所有可能形成的短语的非终结符的集合 横坐标i:该跨度左侧第一个词的位置 纵坐标j:该跨度包含的词数 上图中P(3,1)={NP,N}表示“县长”可以归约成N和NP,P(3,3)={Sφ}表示“县长派来”可以规约成Sφ * * CYK算法:算法描述 * * CYK算法:特点 本质上是一种自底向上分析法; 采用广度优先的搜索策略; 采用并行算法,不需要回溯,没有冗余的操作; 时间复杂度O(n3); 由于采用广度优先搜索,在歧义较多时,必须分析到最后才知道结果,无法采用启发式策略进行改进。 * * Earley算法-概述 Earley算法也是一种并行算法,不需要回溯; 类似于CYK算法,Earley算法中也通过一个二维矩阵来存放已经分析过的结果; Earley算法的一个重要贡献是引入了点规则,进一步减少了规则匹配中的冗余操作; Earley算法是一种自顶向下的分析算法 * * Earley算法:点规则 所谓点规则,是在规则的右部的终结符或非终结符之间的某一个位置上加上一个圆点,表示规则右部被匹配的程度 例子: – VP → · V NP 表示这条规则还没有被匹配 – VP → V · NP 表示这条规则右部的V已经匹配成功,而NP还没有被匹配 – VP → V NP · 表示这条已被完全匹配,并形成了一个短语VP * * Earley算法:数据结构 数据结构:二维矩阵{E(i,j)},其中每个元素是一个点规则的集合,用来存放句子中单词i到单词j这个跨度上所分析得到的所有点规则 还是以“我是县长派来的”为例: Earley算法就是从左到右逐步填充这个二维矩阵的过程 * * Earley算法:算法描述 初始化: 对于规则集中,所有左端为初始符S的规则S→α ,把S→·α加入到E(0,0)中 如果B→· A β在E(0,0)中,那么对于所有左端为符号A的规则A→α ,把A→·α加入到E(0,0)中 循环执行以下步骤,直到分析成功或失败: 如果A→α·xjβ在E(i,j-1)中,那么把A→αxj·β加入到E(i,j)中 如果A→α·Bβ在E(i,j)中,那么对所有左端为符号B的规则B→γ,把B→·γ加入到E(j,j)中 如果B→γ在E(i,j)中,且在E(k,i-1)存在A→α·Bβ,那么把A→αB·β加入到E(k,j)中 * * 复习思考题 “小王和小李的妹妹结婚了”,从语义上说,有哪些种可能的解释? 在以上介绍的分析算法中,对于句法歧义我们采用了两种消解策略:回溯和并行。请解释那种算法采用了回溯策略,那种算法采用了并行策略,并比较回溯和并行这两种策略的优缺点。 移进-归约算法是一种采用堆栈作为数据结构的自底向上分析算法。试构造一种采用堆栈作为数据结构的自顶向下分析算法。 试比较移进-归约算法和编译原理中LR(k)算法的异同。 * * 左角分析法-示例43 * * 左角分析法-示例44 * * 左角分析法-示例45 * * 左角分析法-示例46 * * 左角分析法-示例47 * * 左角分析法-示例48 * * 左角分析法-示例49 * * 左角分析法-示例50 * * 左角分析法-示例51 * * 左角分析法-示例52 * * 左角分析法-示例53 * * 左角分析法-示例54 * * 左角分析法-示例55 * * 左角分析法-示例56 * * 左角分析法-示例57 * * 左角分析法-示例58 * * 左角分析法-示例59 * * 左角分析法-示例60 * * 左角分析法-示例61 * * 移进-归约算法:概述 移进-归约算法:Shift-Reduce Algorithm 移进-归约算法类似于下推自动机的LR分析算法 移进-归约算法的基本数据结构是堆栈 移进-归约算法的四种操作: 移进:从句子左端将一个终结符移到栈顶 归约:根据规则,将栈顶的若干个符号替换成一个符号 接受:句子中所有词语都已移进到栈中,且栈中只剩下一个符号S,分析成功,结束 拒绝:句子中所有词语都已移进栈中,栈中并非只有一个符号S,也无法进行任何归约操作,分析失败,结束 * * 移进-归约算法:举例 * * 移进-归约算法:冲突 移进-归约算法中有两种形式的冲突: 移进-归约冲突:既可以移进,又可以归约 归约-归约冲突:可以使用不同的规则归约 冲突解决方法:回溯 回溯导致的问题: 回溯策略:对于互相冲突的各项操作,给出一个选择顺序 断点信息:除了在堆栈中除了保存非终结符外,还需要保存断点信息,使得回溯到该断点时,能够恢复堆栈的原貌,并知道还可以有哪些可选的操作 * * 移进-归约算法:示例1 回

文档评论(0)

benzei244572 + 关注
实名认证
内容提供者

建筑工程师持证人

没啥好说的额

领域认证该用户于2024年10月16日上传了建筑工程师

1亿VIP精品文档

相关文档