自然语言理解-句法分析算法(1)..(修改版)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
横坐标i:该跨度左侧第一个词的位置 纵坐标j:该跨度包含的词数
算法描述
初始化 For int i = 0 to n-1
if W(i,i+1) == a && exit Aa Add A to M(i,i+1)
计算 For int l = 2 to n
for int k = 0 to n-l for int j = 1 to l-1 for each A B C if(B in M(k,k+j) and C in M(k+j, k+l)) add A to M(k, k+l)
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
过程
The Shift-reduce Table and the parsing process
status m
q
n
$
NP
MP
0
s1
s7
4
3
1
s2
2
r4
r4
r4
r4
(1) NP NP NP (2) NP MP NP (3) NP n
NP NP NP (1)
NP MP NP (2)
NP n
(3)
MP m q
(4)
期望分析结果
Top-down
自顶向下的方法又称为基于预测的方法。 这种方法是先产生对后面将要出现的成分的预期,然 后再通过逐步吃进待分析的字符串来验证预期。 如果预期得到了证明,就说明待分析的字符串可以被 分析为所预期的句法结构。 如果某一个环节上预期出了差错,那就要用另外的预 期来替换(即回溯)。 如果所有环节上所有可能的预期都被吃进的待分析字 符串所“反驳”,那就说明待分析的字符串不可能是 一个合法的句子,分析失败。
过程(cont.)
$0 $0m1 $0m1q2 $ 0 MP 3 $ 0 MP 3 n 7 $ 0 MP 3 NP 5
mqnn$ qnn$ nn$ nn$ n$ n$
$ 0 MP 3 NP 5 n 7
$
$ 0 MP 3 NP 5 NP 6
$
$ 0 MP 3 NP 5
$
$ 0 NP 4
$
$ 0 acc
MP .m q
1
MP m. q
2
MP m q.
6
NP NP NP.
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
7
NP n.
3
NP MP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
5
NP MP NP.
句法分析算法
内容提要
概述 带回溯的LR 分析法 CYK Earley Chart Parsing
概述
程序设计语言分析算法
递归下降 LL LR
特点
高效 排歧策略简单
First集 Follow集 算符优先级
自然语言文法的特点
歧义
歧义最大数量: 真歧义和伪歧义
咬死猎人的狗(v n 的 n) 建设公路的需要 (v n 的 n) 他和我的爸爸(r 和 r 的 n) 他和他的爸爸(r 和 r 的 n)
算法应该……
容纳歧义
允许二义文法 任何可能结果都应计算到
高效
在多项式时间内得到结果 具备排序机制,启发式搜索策略
一些算法
自顶向下 自底向上 带回溯的LR 分析法 CYK Earley Chart Parsing
使用的例子
输入:
一/m 张/q 火车/n 票/n
文法:
3
s1
s7
5
3
(4) MP m q
4
s1
Leabharlann Baidu
s7
acc
6
3
5
s1 r2
r2
s7 r2
r2
6
3
6
s1 r1
r1
s7 r1
r1
6
3
7
r3
r3
r3
r3
Stack $ 0 mMNacPPc143qNnNn2PP7765 nNP7 6
Input Queue mqn$ n$qn$n$n $
Backup Status ( $ 0 NP 4 ) ( n $ )
Bottom-up
m
q
n
n
一
张
火车
票
Bottom-up
MP
m
q
一
张
n
n
火车
票
Bottom-up
MP
m
q
一
张
NP
n
n
火车
票
Bottom-up
MP
m
q
一
张
NP
NP
n
n
火车
票
Bottom-up
MP
m
q
一
张
NP
NP
NP
n
n
火车
票
Bottom-up
NP NP
MP
NP
NP
m
q
n
n
一
张
火车
票
带回溯的LR
Top-down
NP
MP
NP
NP MP NP (2)
Top-down
NP
NP
NP
m
q
一张
NP MP NP (s) MP m q (4)
Top-down
NP
NP
NP
m
q NP NP
一张
NP MP NP (s) MP m q (4) NP NP NP (1)
Top-down
NP
NP
NP
从小的成分,逐渐计算到大的成分
前提条件
文法符合chomsky范式
文法只有两种形式: A B C 其中,A,B,C都为非终结符 A a 其中,a为终结符
算法数据结构
一个二维矩阵:{ M(i , j) }
每一个元素M(i , j)对应于输入句子中某一个 跨度(Span)上所有可能形成的短语的非终 结符的集合
组成部分
Shift-Reduce-Goto 表 分析栈 输入队列 引入备份状态,解决移进规约冲突
LR 分析表的构造
0
S’ .NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
4
S’ NP.
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
m
q NP NP
NP MP NP (s) MP m q (4) NP NP NP (1)
一 张 nn 火车 票
Bottom-up
自底向上的方法也叫基于归约的方法。 这种方法是先逐步吃进待分析字符串,把它们 从局部到整体层层归约为可能的成分。 如果整个待分析字符串被归约为开始符号S, 那么分析成功。 如果在某个局部证明不可能有任何从这里把整 个待分析字符串归约为句子的方案,那么就需 要回溯。 如果经过回溯始终无法将待分析字符串归约为 S,那么分析失败。
$
$ 0 NP 4
n$
$ 0 NP 4 n 7
$
$ 0 NP 4 NP 6
$
$ 0 NP 4
$
$ 0 acc
$
算法分析
类似深度优先搜索
如果改变备份栈顺序,可以实现其它搜索策 略。(agenda)
自底向上 复杂度为指数
思考:有没有办法变成多项式?(GLR)
CYK
组成部分
一张二维表,存储中间结果
算法描述
初始化 For int i = 0 to n-1
if W(i,i+1) == a && exit Aa Add A to M(i,i+1)
计算 For int l = 2 to n
for int k = 0 to n-l for int j = 1 to l-1 for each A B C if(B in M(k,k+j) and C in M(k+j, k+l)) add A to M(k, k+l)
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
过程
The Shift-reduce Table and the parsing process
status m
q
n
$
NP
MP
0
s1
s7
4
3
1
s2
2
r4
r4
r4
r4
(1) NP NP NP (2) NP MP NP (3) NP n
NP NP NP (1)
NP MP NP (2)
NP n
(3)
MP m q
(4)
期望分析结果
Top-down
自顶向下的方法又称为基于预测的方法。 这种方法是先产生对后面将要出现的成分的预期,然 后再通过逐步吃进待分析的字符串来验证预期。 如果预期得到了证明,就说明待分析的字符串可以被 分析为所预期的句法结构。 如果某一个环节上预期出了差错,那就要用另外的预 期来替换(即回溯)。 如果所有环节上所有可能的预期都被吃进的待分析字 符串所“反驳”,那就说明待分析的字符串不可能是 一个合法的句子,分析失败。
过程(cont.)
$0 $0m1 $0m1q2 $ 0 MP 3 $ 0 MP 3 n 7 $ 0 MP 3 NP 5
mqnn$ qnn$ nn$ nn$ n$ n$
$ 0 MP 3 NP 5 n 7
$
$ 0 MP 3 NP 5 NP 6
$
$ 0 MP 3 NP 5
$
$ 0 NP 4
$
$ 0 acc
MP .m q
1
MP m. q
2
MP m q.
6
NP NP NP.
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
7
NP n.
3
NP MP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
5
NP MP NP.
句法分析算法
内容提要
概述 带回溯的LR 分析法 CYK Earley Chart Parsing
概述
程序设计语言分析算法
递归下降 LL LR
特点
高效 排歧策略简单
First集 Follow集 算符优先级
自然语言文法的特点
歧义
歧义最大数量: 真歧义和伪歧义
咬死猎人的狗(v n 的 n) 建设公路的需要 (v n 的 n) 他和我的爸爸(r 和 r 的 n) 他和他的爸爸(r 和 r 的 n)
算法应该……
容纳歧义
允许二义文法 任何可能结果都应计算到
高效
在多项式时间内得到结果 具备排序机制,启发式搜索策略
一些算法
自顶向下 自底向上 带回溯的LR 分析法 CYK Earley Chart Parsing
使用的例子
输入:
一/m 张/q 火车/n 票/n
文法:
3
s1
s7
5
3
(4) MP m q
4
s1
Leabharlann Baidu
s7
acc
6
3
5
s1 r2
r2
s7 r2
r2
6
3
6
s1 r1
r1
s7 r1
r1
6
3
7
r3
r3
r3
r3
Stack $ 0 mMNacPPc143qNnNn2PP7765 nNP7 6
Input Queue mqn$ n$qn$n$n $
Backup Status ( $ 0 NP 4 ) ( n $ )
Bottom-up
m
q
n
n
一
张
火车
票
Bottom-up
MP
m
q
一
张
n
n
火车
票
Bottom-up
MP
m
q
一
张
NP
n
n
火车
票
Bottom-up
MP
m
q
一
张
NP
NP
n
n
火车
票
Bottom-up
MP
m
q
一
张
NP
NP
NP
n
n
火车
票
Bottom-up
NP NP
MP
NP
NP
m
q
n
n
一
张
火车
票
带回溯的LR
Top-down
NP
MP
NP
NP MP NP (2)
Top-down
NP
NP
NP
m
q
一张
NP MP NP (s) MP m q (4)
Top-down
NP
NP
NP
m
q NP NP
一张
NP MP NP (s) MP m q (4) NP NP NP (1)
Top-down
NP
NP
NP
从小的成分,逐渐计算到大的成分
前提条件
文法符合chomsky范式
文法只有两种形式: A B C 其中,A,B,C都为非终结符 A a 其中,a为终结符
算法数据结构
一个二维矩阵:{ M(i , j) }
每一个元素M(i , j)对应于输入句子中某一个 跨度(Span)上所有可能形成的短语的非终 结符的集合
组成部分
Shift-Reduce-Goto 表 分析栈 输入队列 引入备份状态,解决移进规约冲突
LR 分析表的构造
0
S’ .NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
4
S’ NP.
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
m
q NP NP
NP MP NP (s) MP m q (4) NP NP NP (1)
一 张 nn 火车 票
Bottom-up
自底向上的方法也叫基于归约的方法。 这种方法是先逐步吃进待分析字符串,把它们 从局部到整体层层归约为可能的成分。 如果整个待分析字符串被归约为开始符号S, 那么分析成功。 如果在某个局部证明不可能有任何从这里把整 个待分析字符串归约为句子的方案,那么就需 要回溯。 如果经过回溯始终无法将待分析字符串归约为 S,那么分析失败。
$
$ 0 NP 4
n$
$ 0 NP 4 n 7
$
$ 0 NP 4 NP 6
$
$ 0 NP 4
$
$ 0 acc
$
算法分析
类似深度优先搜索
如果改变备份栈顺序,可以实现其它搜索策 略。(agenda)
自底向上 复杂度为指数
思考:有没有办法变成多项式?(GLR)
CYK
组成部分
一张二维表,存储中间结果