INF2820 Datalingvistikk V2012 Jan Tore Lønning
TABELLPARSING OG CHART- PARSING 24. februar 2012 2
I dag Mellomspill: Chomsky Normal Form Tabellparsing: CKY-algoritmen Innlede Chart-Parsing 24. februar 2012 3
Dynamic Programming DP search methods fill tables with partial results and thereby Avoid doing avoidable repeated work Solve exponential problems in polynomial time (well, no not really) Efficiently store ambiguous structures with shared sub-parts. Vi skal se på: CKY Chartparsing (Earleys algoritme svarer til en variant av chartparsing) 2/24/2012 Speech and Language Processing - Jurafsky and Martin 4
Example 2/24/2012 Speech and Language Processing - Jurafsky and Martin 5
Example 2/24/2012 Speech and Language Processing - Jurafsky and Martin 6
Example Filling column 5 2/24/2012 Speech and Language Processing - Jurafsky and Martin 7
Example 2/24/2012 Speech and Language Processing - Jurafsky and Martin 8
Example 2/24/2012 Speech and Language Processing - Jurafsky and Martin 9
Example 2/24/2012 Speech and Language Processing - Jurafsky and Martin 10
Example 2/24/2012 Speech and Language Processing - Jurafsky and Martin 11
Chomsky-normalform (CNF) En grammatikk er på Chomsky-normalform hvis alle reglene er på en av følgende former: A B C A t (t en terminal) Enhver CFG G hvor ε L(G), er svakt ekvivalent til en G på CNF. Altså L(G) = L(G ) 24. februar 2012 12
Chomsky-normalform (CNF) Enhver CFG G hvor ε L(G) er svakt ekvivalent til en G på CNF Bevisskisse: 1. Erstatt alle regler på formen A ε 2. Erstatt alle regler på formen A B for B en ikke-terminal 3. For hver regel A β, der β > 1 og β inneholder en eller flere terminaler t1,, tn: 1. Innfør nye ikke-terminaler T1,, Tn. 2. Erstatt ti med Ti 3. Innfør reglene Ti ti for i = 1,, n 4. For hver regel A B1 B2 Bn, n > 2, : 1. Innfør nye ikke-terminaler C1,, Cn-1 og regler 2. A B1 C1 3. Ci Bi+1 Ci+1 for i = 1,, n-1 24. februar 2012 13
To trinn til: 2. Erstatt alle regler på formen A B for B en ikke-terminal: For enhver ikke-terminal B og For enhver A s.a. A B eller A + B og For enhver β s.a. B β: Innfør A β, hvis den ikke alt finnes Fjern alle unære regler med ikke-terminal h.s. 1. Erstatt alle regler på formen A ε: Identifiser alle ikke-terminaler A, s.a. A + ε For hver regel B β: Legg til alle regler på formen B β der β fremkommer ved å stryke en eller flere ikke-terminaler som avleder ε, fra β. Stryk alle regler på formen A ε 24. februar 2012 14
Eksempel S NP VP NP PN NP Det As N As ε As A As VP løp smilte PN Kari Ola N gutt jente mor far A snill gammel trøtt 24. februar 2012 15
Sample L1 Grammar 2/24/2012 Speech and Language Processing - Jurafsky and Martin 16
CNF Conversion 2/24/2012 Speech and Language Processing - Jurafsky and Martin 17
CKY Algorithm 2/24/2012 Speech and Language Processing - Jurafsky and Martin 18
CKY def cky(words, cfg): tabl = [[[] for i in range(len(words)+1) ] for j in range(len(words))] for i in range(len(words)): tabl[i][i+1] = [p.lhs() for p in cfg.productions() if p.is_lexical() and p.rhs()[0] == words[i]] for j in range(i-1,-1,-1): for k in range(j+1, i+1, 1): for p in grammar.productions(): if (p.rhs()[0] in tabl[j][k] and p.rhs()[1] in tabl[k][i+1]): if not p.lhs() in tabl[j][i+1]: tabl[j][i+1].append(p.lhs()) return tabl 19
Display def cellstring(cell): return (',').join(nt.symbol() for nt in cell) def display(tabl, words): n = len(words) cellstrings = [cellstring(tabl[i][j]) for i in range(n) for j in range(n+1)] space = max([len(cell) for cell in cellstrings + words])+2 for i in range(n): print words[i].ljust(space), print(' ') for start in range(n): for count in range(start): print " ".ljust(space), for end in range(start+1, n+1): cell = tabl[start][end] print ("["+cellstring(cell)+"]").ljust(space), print(' ') 20
I dag Oppsummering fra sist: Recursive-descent og Shift-reduce parser Svakheter med disse Tabellparsing: Dynamisk programmering CKY-algoritmen Chartparsing: Dotted items Fundamentalregel Bottom-up strategi Neste gang: alternative strategier 24. februar 2012 21
Chart alternativ datastruktur (S, [0, 1]) (VP, [0,1]) (Det, [1,2]) (Nom, [2,3]) (N, [2,3]) (NP, [1, 3]) (S, [0,5]) S, VP, X2 NP S, VP, X2 Nom NP PP S, VP, V, Nom, N Det Nom, N P NP, PN 0 book 1 the 2 flight 3 through 4 Houston 5 24. februar 2012 22
Chart alternativ datastruktur (S, [0, 1]) (VP, [0,1]) (Det, [1,2]) (Nom, [2,3]) (N, [2,3]) (NP, [1, 3]) (S, [0,5]) S, VP, X2 NP S, VP, X2 Nom NP PP S, VP, V, Nom, N Det Nom, N P NP, PN 0 book 1 the 2 flight 3 through 4 Houston 5 24. februar 2012 23
Begrensninger i CKY 1. Grammatikken må være på CNF 2. Det foreslås strukturer som holder lokalt, men ikke globalt: Løsninger baserer seg på å kombinere TD og BU Hjelp for begge problemene å innføre dotted items 24. februar 2012 24
States The table-entries are called states and are represented with dotted-rules. S VP NP Det Nominal VP V NP - A VP is predicted - An NP is in progress - A VP has been found 2/24/2012 Speech and Language Processing - Jurafsky and Martin 25
States/Locations S VP [0,0] A VP is predicted at the start of the sentence NP Det Nominal [1,2] VP V NP [0,3]. An NP is in progress; the Det goes from 1 to 2 A VP has been found starting at 0 and ending at 3 2/24/2012 Speech and Language Processing - Jurafsky and Martin 26
Chart alternativ datastruktur NP Det Nom Nom Nom PP NP PP P NP Det Nom, N P NP, PN 0 book 1 the 2 flight 3 through 4 Houston 5 NP Det Nom Nom Nom PP PP P NP NP Det Nom Nom Nom PP PP P NP Partielt snapshot 24. februar 2012 27
Fundamentalregelen NP Det Nom Nom Nom PP 0 book 1 the 2 flight 3 through 4 Houston 5 NP Det Nom Fra (A α B β, [i,k] ) + (B γ, [k, j] ) Kan vi lage (A α B β, [i,j] ) 24. februar 2012 28
Chart-parsing To datastrukturer: Chart Agenda Hovedstruktur: Fjern en kant k fra agenda Hvis k ikke alt finnes i chartet: Legg k til chartet For alle aktuelle kanter m i chartet: Prøv å matche k mot m m/fundamentalregelen: Hvis de matcher, legg resultatet i agenda Gjenta til agenda er tom I tillegg må vi tenke på: Initialisering: for w ordet på plass n og alle leksikalske regler B w, for en B, skal (B w, [n-1,n] ) legges til agenda (/chart) på et tidspkt. Innfør aktive kanter: Legg de nødvendige aktive kanter på formen (B γ, [k,k]) til agenda. Hold styring på rekkefølge Ulike strategier for Rekkefølge Og dermed hvilke aktive kanter som er nødvendige for å få et fullstendig parse. 24. februar 2012 29
Bottom-up Legg de nødvendige aktive kanter på formen (B γ, [k,k]) til agenda : Når inaktiv/komplett kant (B γ, [m, n] ) flyttes til chartet: Finn alle A, β s.a. A B β er en regel, og Legg kanten (A B β, [m, n]) til agenda. (kunne alternativt lagt (A B β, [m, m]) til agenda: Kan være hensiktsmessig Gjør sammenlikning med TD-strategi lettere) 24. februar 2012 30
Make-predictions, fig. 13.17 24. februar 2012 31
24. februar 2012 32 Chart-algoritme, fig. 13.16
Top-down Legg de nødvendige aktive kanter på formen (B γ, [k,k]) til agenda (/chart) : Initialiser: Legg ( S, [0, 0]) i agenda Når aktiv/inkomplett kant (A α B β, [m, n] ) flyttes til chartet: Finn alle regler på formen (B γ) for en eller annen γ, og legg kanten (B γ, [n, n]) til agenda. 24. februar 2012 33
Make-predictions, fig. 13.17 24. februar 2012 34
Eksempel Parse: gi jenta fisk med BU og TD-strategi S VP VP IV VP TV NP VP DTV NP NP NP N IV fisk sov TV fisk kjøp DTV gi N jenta fisk 24. februar 2012 35
Egenskaper Merk Unære regler Mer enn to symb. på høyreside Dette går fint Venstrerekursjon ikke noe problem Tomme prod. OK ved TD-strategi, Problem ved BU 24. februar 2012 36