自然语言处理中的Earley算法
来源:互联网 发布:软件美化大师win7 编辑:程序博客网 时间:2024/05/29 03:19
前面我们已经讲过在对CFG进行语法解析(Parsing)时,有两种主要策略,即自下向上和自上向下两种。其中自下向上的代表算法就是CKY算法,本文将介绍另外一种采用自上向下策略设计的著名算法——Earley算法。与CKY算法类似,Earley算法也是基于动态规划思想设计的,但不同的是,Earley算法并不需要进行CNF转化。
一、状态规则
Earley算法中一个基本的概念就是状态(state)。总的来说,一个状态由3部分组成:
- 上下文无关文法规则。
- 圆点 “·”,(圆点被用在状态语法规则的右侧,它告诉我们语法识别工作执行的进展情况,圆点左边的部分是已分析的,右边是待分析的)。
- 状态的起止位置 [i,j]:整数 i 表示状态起点(已分析子串的起点),整数 j 表示状态终点(已分析子串的终点),i ≤ j。
- 点在最右端,即 A → C ·,浮点处于某个语法规则的最后,这表示为“完成状态”。
- A → C · B,此时,浮点处于某个non-terminal B之前。
- A → C · b,此时,浮点处于某个terminal b之前。
二、基本操作(operations)
与上面的点规则的三种情况相对应的有三种操作:
1. 预测(Predicator):如果圆点右方是一个非终结符,那么以该非终结符为左部的规则都有匹配的希望,也就是说分析器可以预测这些规则都可以建立相应的项目。
2. 扫描(Scanner):如果圆点右方是一个终结符,就将圆点向右方扫描一个字符间隔,把匹配完的字符移到左方。
3. 完成(Completer):如果圆点右方没有符号(即圆点已经在状态的结束位置),那么表示当前状态所做的预测已经实现
因而可以将当前状态 Si 与已有的包含当前状态的状态 Sj 进行归约合并,从而扩大 Sj 覆盖的子串范围。
算子的形式定义
四、一个例子
假设设有CFG如下:
S → NP VP
NP → DT NN
VP → VBD NP
DT → the
NN → rat
NN → cheese
VBD → ate
下面以 the rat ate the cheese 为输入来演示一下Earley算法。
S → ● NP VP [0,0] (Predictor):初始状态 -(0)
NP → ● DT NN [0,0] (Predictor):由初始状态 (0) 得到 -(1)
DT → the ● [0,1] (Scanner) :由 (1) 得到 -(2)
NP → DT ● NN [0,1] (Competer):由 (1) 和 (2) 归并得到 -(3)
NN → rat ● [1,2] (Scanner) :由 (3) 得到 -(4)
NP → DT NN ● [0,2] (Competer):由 (3) 和 (4) 归并得到 -(5)
S → NP ● VP [0,2] (Competer):由 (0) 和 (5) 归并得到 -(6)
VP → ● VBD NP [2,2] (Predictor):由 (6) 得到 -(7)
VBD → ate ● [2,3] (Scanner) :由 (7) 得到 -(8)
VP → VBD ● NP [2,3] (Competer):由 (7) 和 (8) 归并得到 -(9)
NP → ● DT NN [3,3] (Predictor):由 (9) 得到 -(10)
DT → the ● [3,4] (Scanner) :由 (10) 得到 -(11)
NP → DT ● NN [3,4] (Competer):由 (10) 和 (1) 归并得到 -(12)
NN → cheese ● [4,5] (Scanner) :由 (12) 得到 -(13)
NP → DT NN ● [3,5] (Competer):由 (12) 和 (13) 归并得到 -(14)
VP → VBD NP ● [2,5] (Competer):由 (9) 和 (14) 归并得到 -(15)
S → NP VP ● [0,5] (Competer):由 (6) 和 (15) 归并得到 -(16)
- 自然语言处理中的Earley算法
- 自然语言处理常用算法
- 自然语言处理中的若干问题
- 自然语言处理中的一些概念
- 自然语言处理中的一些问题
- 自然语言处理中的 Attention Model
- 自然语言处理中的Attention Model
- 自然语言处理之分词算法的实现
- 自然语言处理之:文本分析算法
- 自然语言处理:盘点一下数据平滑算法
- 自然语言处理系列之TF-IDF算法
- 自然语言处理系列之Viterbi算法
- 自然语言处理中的中文分词技术
- 旅游评论数据中的自然语言处理
- 自然语言处理中的N-Gram模型详解
- RNN在自然语言处理中的应用
- 五、自然语言处理中的文本分类
- 《数学之美》中的自然语言处理
- 在数学分析中的数学思想
- 第一篇笔记
- 关于C++数据结构的一点儿感悟
- 华人的旗帜——首位亚裔图灵奖获得者姚期智
- 常用js语句
- 自然语言处理中的Earley算法
- JDBC-----基础--Java如何连接oracle
- 如果你到了20岁,还没到25岁
- 软件测试的目的和原则
- 转的一些话
- javascript中获取选中的radio的值(转)
- 要记住,自己照顾自己
- 我们依旧单身
- 通过js从父页面获取子页面的值(转)