自然语言理解-句法分析算法(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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
3
s1
s7
5
3
(4) MP m q
4
s1
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
是待分析的)
3. 整数i : 状态起点(已分析子串的起点) 4. 整数j : 状态终点(已分析子串的终点) i
≤j
比如: <S NP ·VP 0, 4>
基本操作
预测(Predicator):如果圆点右方是一个非终结符, 那么以该非终结符为左部的规则都有匹配的希望,也 就是说分析器可以预测这些规则都可以建立相应的项 目。
$
$ 0 MP 3 NP 5 NP 6
$
$ 0 MP 3 NP 5
$
$ 0 NP 4
$
$ 0 acc
$
$ 0 NP 4
n$
$ 0 NP 4 n 7
$
$ 0 NP 4 NP 6
$
$ 0 NP 4
$
$ 0 acc
$
算法分析
类似深度优先搜索
如果改变备份栈顺序,可以实现其它搜索策 略。(agenda)
图(二维表)
节点:词与词之间的间隙
弧:产生式在两个节点间的应用,分为活动 弧和完成弧
0
1
2
m
q
MP .m.q MP .m q.
基本数据结构(cont.)
Agenda: 可以按某种顺序排列的队列 (stack, queue,…),存放还没有处理 过的弧。
弧的处理(旧弧产生新弧):


•(0,1)MP.m. q
m•(10,23) qMNPP..MNmPPq..N.NNPPP.
4
••((120,,234)) qnNP..nNNM.PPP. NNPP.. ••((302,,34)) nNn P..nN. P NP.
•(3,4) n
Agenda的作用
实现多种搜索策略:
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
扫描(Scanner):如果圆点右方是一个终结符,就将 圆点向右方扫描一个字符间隔,把匹配完的字符“让” 到左方。
归约(Completer):如果圆点右方没有符号(即圆点 已经在状态的结束位置),那么表示当前状态所做的
预测已经实现,因而可以将当前状态(Si)与已有的 包含当前状态的状态(Sj)进行归约(合并),从而扩大 Sj覆盖的子串范围
Input Queue mqn$ n$q$nn$n $
Backup Status ( $ 0 NP 4 ) ( n $ )
过程(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
一些算法
自顶向下 自底向上 带回溯的LR 分析法 CYK Earley Chart Parsing
使用的例子
输入:
一/m 张/q 火车/n 票/n
文法:
NP NP NP (1)
NP MP NP (2)
NP n
(3)
MP m q
(4)
26)=18+24 NP NP NP。
27)=9+26 NP MP NP。
Prediction Scanning Completion
Results
分析
自顶向下和自底向上的结合,以自顶向 下为主
引入了预测机制,在一般情况下改进了 效率
最坏情况下复杂度为O(n3)
图算法
基本数据结构
后进先出,深度优先 先进先出,广度优先 启发式搜索
算法分析
灵活 自底向上 O(n3)
Thank you!
组成部分
Shift-Reduce-Goto 表 分析栈 输入队列 引入备份状态,解决移进规约冲突
LR 分析表的构造

0
S’ .NP
NP .NP NP
NP .n
NP .MP NP
MP .m q

4
S’ NP.
NP NP. NP
期望分析结果
Top-down
自顶向下的方法又称为基于预测的方法。 这种方法是先产生对后面将要出现的成分的预期,然 后再通过逐步吃进待分析的字符串来验证预期。 如果预期得到了证明,就说明待分析的字符串可以被 分析为所预期的句法结构。 如果某一个环节上预期出了差错,那就要用另外的预 期来替换(即回溯)。 如果所有环节上所有可能的预期都被吃进的待分析字 符串所“反驳”,那就说明待分析的字符串不可能是 一个合法的句子,分析失败。
计算 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)
结果 M(0, n) is the set of all results;
一个二维矩阵:{ M(i , j) }
每一个元素M(i , j)对应于输入句子中某一个 跨度(Span)上所有可能形成的短语的非终 结符的集合
横坐标i:该跨度左侧第一个词的位置 纵坐标j:该跨度包含的词数
算法描述
初始化 For int i = 0 to n-1
if W(i,i+1) == a && exit Aa Add A to M(i,i+1)
句法分析算法
上海交通大学 陈玉泉
内容提要
概述 带回溯的LR 分析法 CYK Earley Chart Parsing
概述
程序设计语言分析算法
递归下降 LL LR
特点
高效 排歧策略简单
First集 Follow集 算符优先级
自然语言文法的特点
CYK Example
NP(10=9+6), NP(11=7+8)
NP(9=7+4)
MP(7=1+2)
NP(8=4+6)
m(1) 一
q(2) n(3), NP(4) N(5), NP(6)

火车

算法分析
文法必须二元化 广度优先搜索 自底向上 O(n3),动态规划思想
Earley 算法
扩展:活动弧+完成弧
触发:完成弧
m
q
MP .m.q
MP .m q.
算法描述
1。将所有单词作为完成弧放入agenda,按某种排序 策略排序,把结果表清空。
2。如果agenda为空,转入6 3。从agenda中取出一条弧,如果是覆盖整个句子完
成弧且规则右部是可接受文法符号,那么将弧放入结 果表
描述
规则中加入“.”表示当前分析程度 一张二维表 引入预测机制 这个算法可以认为是三个步骤的不断循
环:
预测(predict) 扫描(scan) 完成(complete)
基本概念
一个状态由四部分组成:
1. 上下文无关文法规则 2. 圆点·(圆点左边的部分是已分析的,右边
15)=12+14 NP n。 16)=9+15 NP MP NP。 17)=1+16 NP NP。NP
19) NP 。NP NP 20) NP 。MP NP 21) NP 。n 22) MP 。m q
18)=10+15 NP NP。NP
24)=21+23 NP n。
25)=17+24 NP NP NP。
NP
NP
NP
m
q NP NP
NP MP NP (s) MP m q (4) NP NP NP (1)
一 张 nn 火车 票
Bottom-up
自底向上的方法也叫基于归约的方法。 这种方法是先逐步吃进待分析字符串,把它们 从局部到整体层层归约为可能的成分。 如果整个待分析字符串被归约为开始符号S, 那么分析成功。 如果在某个局部证明不可能有任何从这里把整 个待分析字符串归约为句子的方案,那么就需 要回溯。 如果经过回溯始终无法将待分析字符串归约为 S,那么分析失败。
NP .NP NP
NP .n
NP .MP NP
MP .m q

1
MP m. q2 Nhomakorabea MP m q.

6
NP NP NP.
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q

7
NP n.
MP .m q.
NP.n.
NP.n.
m
q
n
n
MP.m.q
NP.NP.NP
NP .MP. NP
NP.NP.NP


火车

0
1
2
3
Extended arcs
Triggered arcs
Grammar:
•NP NP NP •NP n •NP MP NP •MP m q
agenda:
Earley Example
1) NP 。NP NP 2) NP 。MP NP 3) NP 。n 4) MP 。m q

5) m

7) q
火车
14) n

23) n
6) =4+5 MP m。q 8)=6+7 MP m q。
9)=2+8 NP MP。NP
10) NP 。NP NP 11) NP 。MP NP 12) NP 。n 13) MP 。m q

3
NP MP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q

5
NP MP NP.
NP NP. NP
NP .NP NP
NP .n
NP .MP NP
MP .m q
过程
The Shift-reduce Table and the parsing process
自底向上 复杂度为指数
思考:有没有办法变成多项式?(GLR)
CYK
组成部分
一张二维表,存储中间结果
从小的成分,逐渐计算到大的成分
前提条件
文法符合chomsky范式
文法只有两种形式: A B C 其中,A,B,C都为非终结符 A a 其中,a为终结符
算法数据结构
4。如果不是,则进行弧的扩展与触发,将产生的新弧 放入agenda,放入时满足agenda的排序规则
5。转入2 6。如果结果表空,则分析失败,否则返回结果表中的
内容
最左触发,向右扩展,后进先 出的图算法
NP.NP NP.
NP.MP NP.
NP.NP NP.
NP .MP NP.
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
歧义
歧义最大数量: 真歧义和伪歧义
咬死猎人的狗(v n 的 n) 建设公路的需要 (v n 的 n) 他和我的爸爸(r 和 r 的 n) 他和他的爸爸(r 和 r 的 n)
算法应该……
容纳歧义
允许二义文法 任何可能结果都应计算到
高效
在多项式时间内得到结果 具备排序机制,启发式搜索策略
相关文档
最新文档