INF2820 Datalingvistikk V2015 8. Gang 9.3 Jan Tore Lønning
I dag Avslutte parsing i denne omgang Chomsky Normal Form (CNF) Algoritme for omforming CKY Algoritme Implementasjon Begynne trekkgramatikker («feature grammars») Begrensninger ved CFG Grammatikker med enkle trekk 10. mars 2015 2
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 ) 10. mars 2015 3
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 10. mars 2015 4
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. 10. mars 2015 5
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 ε 10. mars 2015 6
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 10. mars 2015 7
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 10. mars 2015 8
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 10. mars 2015 9
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. IV. V. A X P P A Y strøket B X Q Q B Z VI. strøket VII. S a VIII. A a IX. A X Y X. B X Z XI. A X R R B Z XII. A Y Z XIII. X a XIV. Y b XV. Z c 10. mars 2015 10
Sample L1 Grammar 3/10/2015 Speech and Language Processing - Jurafsky and Martin 11
CNF Conversion 3/10/2015 Speech and Language Processing - Jurafsky and Martin 12
I dag Avslutte parsing i denne omgang Chomsky Normal Form (CNF) Algoritme for omforming CKY Algoritme Implementasjon Begynne trekkgramatikker («feature grammars») Begrensninger ved CFG 10. mars 2015 13 Grammatikker med enkle trekk
CKY-parsing 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 14
Example 3/10/2015 Speech and Language Processing - Jurafsky and Martin 15
Example 3/10/2015 Speech and Language Processing - Jurafsky and Martin 16
Example Det kan være vilkårlig mange kategorier i en celle. NLTK har en mangelfull implementasjon av wfst der en celle bare har rom for ett symbol 3/10/2015 Speech and Language Processing - Jurafsky and Martin 17
CKY Algorithm 3/10/2015 Speech and Language Processing - Jurafsky and Martin 18
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 19
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 20
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 10. mars 2015 21
I dag Avslutte parsing i denne omgang Chomsky Normal Form (CNF) Algoritme for omforming CKY Algoritme Implementasjon Begynne trekkgramatikker («feature grammars») Begrensninger ved CFG Grammatikker med enkle trekk 10. mars 2015 22
To typer begrensninger 1. Det finnes (formelle) språk som ikke kan beskrives av noen CFG 2. CFG er ikke alltid hensiktsmessige 23
1.Formelle språk som ikke er CFG Eksempler: a n b n c n a n b m c n d m ww Hvorfor? Skal ikke se på bevis Intuisjon: Tenk SR-parser Den kan bare se toppen av stacken Dette gir f.eks. forskjellen mellom ww R og ww Senere se på: Er naturlige språk CFG-språk? 24
2. Er CFG hensiktsmessige for å beskrive naturlige språk? Eksempel 1: samsvar («agreement») Eksempel 2: VP og subkategorisering Se mer i J&M Seksj. 12.3 25
Agreement (no: samsvar) By agreement, we have in mind constraints that hold among various constituents that take part in a rule or set of rules For example, in English, determiners and the head nouns in NPs have to agree in their number. This flight Those flights *This flights *Those flight Speech and Language Processing - Jurafsky and Martin 26 3/10/2015
Verb Phrases English VPs consist of a head verb along with 0 or more following constituents which we ll call arguments. Speech and Language Processing - Jurafsky and Martin 27 3/10/2015
Subcategorization But, even though there are many valid VP rules in English, not all verbs are allowed to participate in all those VP rules. We can subcategorize the verbs in a language according to the sets of VP rules that they participate in. This is a modern take on the traditional notion of transitive/intransitive. Modern grammars may have 100s or such classes. Speech and Language Processing - Jurafsky and Martin 28 3/10/2015
Subcategorization Sneeze: John sneezed Find: Please find [a flight to NY] NP Give: Give [me] NP [a cheaper fare] NP Help: Can you help [me] NP [with a flight] PP Prefer: I prefer [to leave earlier] TO-VP Told: I was told [United has a flight] S Speech and Language Processing - Jurafsky and Martin 29 3/10/2015
Possible CFG Solution Possible solution for agreement. Can use the same trick for all the verb/vp classes. SgS -> SgNP SgVP PlS -> PlNp PlVP SgNP -> SgDet SgNom PlNP -> PlDet PlNom PlVP -> PlV NP SgVP ->SgV Np 3/10/2015 Speech and Language Processing - Jurafsky and Martin 30
Hvorfor ikke? F.eks. NLTK ch.9, ex. 8 S NP_SG VP_SG S NP_PL VP_PL NP_SG Det_SG N_SG NP_PL Det_PL N_PL VP_SG V_SG VP_PL V_PL Det_SG 'this' Det_PL 'these' N_SG 'dog' N_PL 'dogs' V_SG 'runs' V_PL 'run' Problem Eksplosjon av regler NP DET N 16 regler i tysk (4 kasus*(3 genus i sg + pl) NPs: 1., 2., 3. person Manglende generalisering: De 16 reglene har mye felles March 10, 2015 31
I dag Avslutte parsing i denne omgang Chomsky Normal Form (CNF) Algoritme for omforming CKY Algoritme Implementasjon Begynne trekkgramatikker («feature grammars») Begrensninger ved CFG Grammatikker med enkle trekk 10. mars 2015 32
Trekk ( features ) trinn for trinn NLTK ch.9, ex. 8 S NP_SG VP_SG S NP_PL VP_PL NP_SG Det_SG N_SG NP_PL Det_PL N_PL VP_SG V_SG VP_PL V_PL Det_SG 'this' Det_PL 'these' N_SG 'dog' N_PL 'dogs' V_SG 'runs' V_PL 'run' Kategorier og trekk S NP[NUM=sg] VP[NUM=sg] S NP[NUM=pl] VP[NUM=pl] NP[NUM=sg] Det[NUM=sg] N[NUM=sg] NP[NUM=pl] Det[NUM=pl] N[NUM=pl] VP[NUM=sg] V[NUM=sg] VP[NUM=pl] V[NUM=pl] Det[NUM=sg] 'this' Det[NUM=pl] 'these' N[NUM=sg] 'dog' N[NUM=pl] 'dogs' V[NUM=sg] 'runs' V[NUM=pl] 'run' March 10, 2015 33
Trekk trinn for trinn 2 Kategorier og trekk S NP[NUM=sg] VP[NUM=sg] S NP[NUM=pl] VP[NUM=pl] NP[NUM=sg] Det[NUM=sg] N[NUM=sg] NP[NUM=pl] Det[NUM=pl] N[NUM=pl] VP[NUM=sg] V[NUM=sg] VP[NUM=pl] V[NUM=pl] Saml sammen likheter S NP[NUM=?x] VP[NUM=?x] NP[NUM=?x] Det[NUM=?x] N[NUM=?x] VP[NUM=?x] V[NUM=?x] Det[NUM=sg] 'this' Det[NUM=pl] 'these' N[NUM=sg] 'dog' N[NUM=pl] 'dogs' V[NUM=sg] 'runs' V[NUM=pl] 'run' Det[NUM=sg] 'this' Det[NUM=pl] 'these' N[NUM=sg] 'dog' N[NUM=pl] 'dogs' V[NUM=sg] 'runs' V[NUM=pl] 'run' March 10, 2015 34
Intuitiv tolkning CFG S NP VP Med trekk S NP[NUM=?x] VP[NUM=?x] Hvis words[i,j] er en NP og words[j,k] er en VP Så kan words[i,k] være en S Hvis words[i,j] er en NP og words[j,k] er en VP og NP sin NUM = VP sin NUM Så kan words[i,k] være en S March 10, 2015 35
Mot en formalisering Formelt: Kan en kategori ha flere enn ett trekk? Hvilke verdier kan et trekk ta? Hva er de mulige grammatikkreglene? Hvordan skal vi tolke grammatikkreglene? Anvendelser: Hvordan skal en grammatikk med trekk for et gitt fenomen formuleres naturlig? Hva mer kan trekk brukes til? Generaliseringer Grammatikker for språk som ikke er kontekstfrie Semantiske representasjoner Komputasjonelt: Hvordan kan trekkgrammatikker parses? March 10, 2015 36
Flere enn ett trekk i en kat., eks: tysk S NP[CASE=nom, NUM=?x, PERS=?y] VP[NUM=?x, PERS=y?] NP[CASE=?z,NUM=?x, PERS=3rd] Det[CASE=?z,NUM=?x, GEN=?u] N[CASE=?z,NUM=?x, GEN=?u] VP[NUM=?x] V[SUBC= dtv, NUM=?x] NP[CASE=dat] NP[CASE=acc] Det[NUM=sg, CASE=nom, GEN=mask] 'der' 37
Flere enn ett trekk i en kat., eks: tysk S NP[CASE=nom, NUM=?x, PERS=?y] VP[NUM=?x, PERS=?y] NP[CASE=?z,NUM=?x, PERS=3rd] Det[CASE=?z,NUM=?x, GEN=?u] N[CASE=?z,NUM=?x, GEN=?u] VP[NUM=?x] V[SUBC= dtv, NUM=?x] NP[CASE=dat] NP[CASE=acc] Det[NUM=sg, CASE=nom, GEN=mask] 'der' 38