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 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) 24. februar 2012 3 4 5 6 1
Filling column 5 7 8 9 10 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 ) 11 24. februar 2012 12 2
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 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 13 24. februar 2012 14 Eksempel S VP PN Det As N As As A As VP løp smilte PN Kari Ola N gutt jente mor far A snill gammel trøtt Sample L1 Grammar 24. februar 2012 15 16 CNF Conversion CKY Algorithm 17 18 3
CKY Display 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 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 Chart alternativ datastruktur 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 (S, [0, 1]) (VP, [0,1]) (Det, [1,2]) (Nom, [2,3]) (N, [2,3]) (, [1, 3]) (S, [0,5]) S, VP, V, Nom, N 0 book 1 the 2 flight 3 through 4 Houston 5 Nom Det Nom, N P, PN PP 24. februar 2012 21 24. februar 2012 22 Chart alternativ datastruktur Begrensninger i CKY (S, [0, 1]) (VP, [0,1]) (Det, [1,2]) (Nom, [2,3]) (N, [2,3]) (, [1, 3]) (S, [0,5]) 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 Nom Hjelp for begge problemene å innføre dotted d items PP S, VP, V, Nom, N Det Nom, N P, PN 0 book 1 the 2 flight 3 through 4 Houston 5 24. februar 2012 23 24. februar 2012 24 4
States States/Locations The table-entries are called states and are represented with dotted-rules. S VP Det Nominal VP V - A VP is predicted Det Nominal - An is in progress - A VP has been found S VP [0,0] Det Nominal [1,2] VP V [0,3]. A VP is predicted at the start of the sentence An is in progress; the Det goes from 1 to 2 A VP has been found starting at 0 and ending at 3 25 26 Chart alternativ datastruktur Det Nom Fundamentalregelen Det Nom Nom Nom PP Nom Nom PP PP P Det Nom, N P, PN 0 book 1 the 2 flight 3 throughh 4 Houston 5 0 book 1 the 2 flight 3 through 4 Houston 5 Det Nom Det Nom Nom Nom PP PP P Det Nom Nom Nom PP PP P Partielt snapshot Fra (A B, [i,k] ) + (B, [k, j] ) Kan vi lage (A B, [i,j] ) 24. februar 2012 27 24. februar 2012 28 Chart-parsing Bottom-up 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. 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 29 24. februar 2012 30 5
Make-predictions, fig. 13.17 Chart-algoritme, fig. 13.16 24. februar 2012 31 24. februar 2012 32 Top-down Make-predictions, fig. 13.17 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 24. februar 2012 34 Eksempel Egenskaper Parse: gi jenta fisk med BU og TD-strategi S VP VP IV VP TV VP DTV N IV fisk sov TV fisk kjøp DTV gi N jenta fisk 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 35 24. februar 2012 36 6