INF2820 Datalingvistikk V2016 7. Gang 2.3 Jan Tore Lønning
I dag CKY-algoritmen Python-implementasjon Chomsky Normal Form (CNF) 1. mars 2016 2
Dynamisk programmering I en beregning kan det inngå delberegninger som må foretas flere ganger Med DP tar vi vare på resultatet av disse beregningene underveis slik at Vi slipper å gjøre delberegningene flere ganger Øker effektiviteten, F.eks. i noen tilfeller fra eksponentiell til polynomisk tid Kan lagre flertydige strukturer med felles deler Vi skal se på CKY-parser, nå Chartparser, senere 3
CKY-parsing CKY/CYK (Cocke-Kasami-Younger) algoritmen Hovedide: 1. For hvert segment [i, j] av ord i input, bestem hvilke ikke-terminaler som disse ordene kan avledes fra 2. Bottom-up 3. Kortere segmenter før lengre segmenter 4
Chomsky-normalform (CNF) CKY algoritmen forutsetter at grammatikken er på Chomsky-normalform En grammatikk er på Chomsky-normalform hvis alle reglene er på en av følgende former: A B C (ikketerminaler) A t (t en terminal) Vi skal senere se at: Enhver CFG G hvor ε L(G), er svakt ekvivalent til en G på CNF. Altså L(G) = L(G ) 1. mars 2016 5
CKY-parsing, forts. Hvilke kategorier har ord j, dvs segment [j-1,j]? Betrakt alle regler: A w j for en eller annen A Lagr disse A-ene i tabell[j-1, j] Se så på segmenter av to ord, [i, i + 2]: For å legge en ikke-terminal, A, i tabell[i, i+2] må det Finnes en regel A B C for en eller annen B og C B må utspenne [i, i+1] C må utspenne [i+1, i+2] 6
CKY-parsing ff. Deretter se på tre-ordsfragmenter [i, i+3]: For å legge en ikke-terminal, A, i tabell[i, i+3] må det Finnes en regel A B C for en eller annen B og C B må utspenne [i, i+1] og C må utspenne [i+1, i+3], eller B må utspenne [i, i+2] og C må utspenne [i+2, i+3] I det generelle tilfellet [i, j]: Det må finnes en regel A B C for en eller annen B og C B må utspenne [i, k] og C må utspenne [k, j], for en eller annen k, hvor i<k<j 7
CNF Conversion 3/1/2016 Speech and Language Processing - Jurafsky and Martin 8
Example 3/1/2016 Speech and Language Processing - Jurafsky and Martin 9
Example 3/1/2016 Speech and Language Processing - Jurafsky and Martin 10
Example Hvordan fylle søyle 5 3/1/2016 Speech and Language Processing - Jurafsky and Martin 11
Example 3/1/2016 Speech and Language Processing - Jurafsky and Martin 12
Example 3/1/2016 Speech and Language Processing - Jurafsky and Martin 13
Example 3/1/2016 Speech and Language Processing - Jurafsky and Martin 14
Example 3/1/2016 Speech and Language Processing - Jurafsky and Martin 15
CKY Algorithm 3/1/2016 Speech and Language Processing - Jurafsky and Martin 16
CKY-implementasjon (følger pseudok.) def cky(words, cfg): tabl = [[set([]) for j in range(len(words)+1) ] for i in range(len(words))] for j in range(len(words)): tabl[j][j+1] = set([p.lhs() for p in cfg.productions() if p.rhs() == (words[j],)]) for i in range(j-1,-1,-1): for k in range(i+1, j+1, 1): tabl[i][j+1] = tabl[i][j+1].union( [p.lhs() for p in grammar.productions() if (p.rhs()[0] in tabl[i][k] and p.rhs()[1] in tabl[k][j+1])]) return tabl 17
CKY-implementasjon (mer prosedyrell) def cky(words, cfg): tabl = [[[] for j in range(len(words)+1) ] for i in range(len(words))] for j in range(len(words)): tabl[j][j+1] = [p.lhs() for p in cfg.productions() if p.rhs() == (words[j],)] for i in range(j-1,-1,-1): for k in range(i+1, j+1, 1): for p in grammar.productions(): if (p.rhs()[0] in tabl[i][k] and p.rhs()[1] in tabl[k][j+1]): if not p.lhs() in tabl[i][j+1]: tabl[i][j+1].append(p.lhs()) return tabl 18
I dag CKY-algoritmen Python-implementasjon Chomsky Normal Form (CNF) 1. mars 2016 19
Chomsky-normalform (CNF) CKY algoritmen forutsetter at grammatikken er på Chomsky-normalform En grammatikk er på Chomsky-normalform hvis alle reglene er på en av følgende former: A B C (ikketerminaler) A t (t en terminal) Enhver CFG G hvor ε L(G) er svakt ekvivalent til en G på CNF, dvs L(G)=L(G ) 1. mars 2016 20
Chomsky-normalform (CNF) Enhver CFG G hvor ε L(G) er svakt ekvivalent til en G på CNF Oppskrift: 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 t 1,, t n : 1. Innfør nye ikke-terminaler T 1,, T n. 2. Erstatt t i med T i 3. Innfør reglene T i t i for i = 1,, n 4. For hver regel A B 1 B 2 B n, n > 2, : 1. Innfør nye ikke-terminaler C 1,, C n-1 og regler 2. A B 1 C 1 3. C i B i+1 C i+1 for i = 1,, n-1 1. mars 2016 21
De to første trinnene: 1. Erstatt alle regler på formen A ε unntatt evt. S ε: 1. Finn mengden E av alle ikke-terminaler A, s.a. A + ε 2. For hver regel B β: Legg til alle regler på formen B β, der β fremkommer ved å stryke en eller flere ikke-terminaler fra E. 3. Stryk alle regler på formen A ε 2. Erstatt alle regler på formen A B for B en ikke-terminal: 1. For enhver ikke-terminal B: For enhver A s.a. A B eller A + B: For enhver β s.a. B β: Innfør A β, hvis den ikke alt finnes 2. Fjern alle unære regler med ikke-terminal h.s. 1. mars 2016 22
Eksempel Grammatikk 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. B ε 1. mars 2016 23
Eksempel Grammatikk 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. B ε Trinn 1 E = {A, B} 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. stryk 7. S a 8. A a 9. A a b 10.B a c 1. mars 2016 24
Eksempel Grammatikk 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. B ε Trinn 1 E = {A, B} 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. stryk 7. S a 8. A a 9. A a b 10.B a c Trinn 2 E = {A, B} 1. S a A 2. A a A 3. A a A b 4. stryk 5. B a B c 6. strøket 7. S a 8. A a 9. A a b 10.B a c 11.A a B c 12.A a c 1. mars 2016 25
Eksempel Grammatikk 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. B ε Trinn 1 E = {A, B} 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. stryk 7. S a 8. A a 9. A a b 10.B a c Trinn 2 E = {A, B} 1. S a A 2. A a A 3. A a A b 4. strøket 5. B a B c 6. strøket 7. S a 8. A a 9. A a b 10.B a c 11.A a B c 12.A a c Trinn 3 I. S X A II. A X A III. A X A Y IV. strøket V. B X B Z VI. strøket VII. S a VIII. A a IX. A X Y X. B X Z XI. A X B Z XII. A X Z XIII. X a XIV. Y b XV. Z c 1. mars 2016 26
Eksempel Grammatikk 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. B ε Trinn 1 E = {A, B} 1. S a A 2. A a A 3. A a A b 4. A B 5. B a B c 6. stryk 7. S a 8. A a 9. A a b 10.B a c Trinn 2 E = {A, B} 1. S a A 2. A a A 3. A a A b 4. stryk 5. B a B c 6. strøket 7. S a 8. A a 9. A a b 10.B a c 11.A a B c 12.A a c Trinn 3 I. S X A II. A X A III. A X A Y IV. strøket V. B X B Z VI. strøket VII. S a VIII. A a IX. A X Y X. B X Z XI. A X B Z XII. A X Z XIII. X a XIV. Y b XV. Z c Trinn 4 I. S X A II. A X A III.a A X P III.b P A Y IV. strøket V.a B X Q V.b B Z VI. strøket VII. S a VIII. A a IX. A X Y X. B X Z XI.a A X R X1.b B Z XII. A X Z XIII. X a XIV. Y b XV. Z c 1. mars 2016 27
Sample L1 Grammar 3/1/2016 Speech and Language Processing - Jurafsky and Martin 28
CNF Conversion 3/1/2016 Speech and Language Processing - Jurafsky and Martin 29
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 og chart-parsing senere i semesteret 1. mars 2016 30