INF2820 Datalingvistikk V2016 10. Gang 30.3 Jan Tore Lønning
I dag Med anbefalt lesing og rekkefølge Grammatiske trekk («features») NLTK boka, seksj 9.1 Trekkstrukturer («feature structures») J&M, seksj 15.1 Unifikasjon og subsumpsjon J&M, seksj. 15.2 Trekkstrukturer i NLTK NLTK-boka seksj. 9.2 Trekkbaserte grammatikker (=Unifikasjonsgrammatikker) Delvis: J&M, seksj15.3, NLTK boka seksj 9.3 2
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 18, 2016 3
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 18, 2016 4
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 18, 2016 5
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 18, 2016 6
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' 7
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' 8
I dag Med anbefalt lesing og rekkefølge Grammatiske trekk («features») NLTK boka, seksj 9.1 Trekkstrukturer («feature structures») J&M, seksj 15.1 Unifikasjon og subsumpsjon J&M, seksj. 15.2 Trekkstrukturer i NLTK NLTK-boka seksj. 9.2 Trekkbaserte grammatikker (=Unifikasjonsgrammatikker) Delvis: J&M, seksj15.3, NLTK boka seksj 9.3 9
Trekkstrukturer Lang tradisjon i lingvistikk Eks.: fonologi En mengde trekk og verdier: For hvert trekk er det definert hvilke verdier som er mulige Et skritt videre: Hele trekkstrukturer som verdier 10
Trekkstrukturer som grafer Attribute Value Matrices (AVMs) Directed Acyclic Graphs (DAGs) To alternative notasjoner for det samme 11
Deling («Reentrancies») 12
Likner objektorientert programmering Likheter mellom «reentrancy» og To variable peker til samme objekt (identitet), vs. To variable har samme verdi Men ikke helt det samme! >>> a = [1,2,3] >>> b = [1,2,3] >>> c = a >>> a == b True >>> a == c True >>> a.append(4) >>> a==b False >>> a==c True >>> c [1, 2, 3, 4] 13
Trekkstrukturer - formelt To endelige mengder F = {f 1, f 2,, f n } A = {a 1, a 2,, a n } En trekkstruktur over F og A er Atomær, dvs et element i A, eller Ikke-atomær. Det er et objekt. Dette inneholder En mengde trekk, dvs en delmengde av F: f 1, f 2,, f j Til hvert av disse trekkene er det en verdi, som igjen er en trekkstruktur (atomær eller ikke-atomær) En trekkstruktur kan ikke inneholde to par av trekk og verdier (f k, a k ), (f p, a p ) der f k = f p, men a k =/= a p To trekkstrukturer som inneholder de samme trekk-verdiparene kan være identiske, men behøver ikke være det 18. mars 2016 (som dictionaries i python) 14
I dag Med anbefalt lesing og rekkefølge Grammatiske trekk («features») NLTK boka, seksj 9.1 Trekkstrukturer («feature structures») J&M, seksj 15.1 Unifikasjon og subsumpsjon J&M, seksj. 15.2 Trekkstrukturer i NLTK NLTK-boka seksj. 9.2 Trekkbaserte grammatikker (=Unifikasjonsgrammatikker) Delvis: J&M, seksj15.3, NLTK boka seksj 9.3 15
Unifikasjon av trekkstrukturer 18. mars 2016 16
18. mars 2016 17
18. mars 2016 18
18. mars 2016 19
Subsumpsjon og unifikasjon Subsumpsjon F subsummerer G F er minst like generell som G Hvis og bare hvis: F er atomær og F=G Ellers For hvert trekk x i F: F(x) subsumerer G(x) For alle stier p, q in F: Hvis F(p) = F(q), så G(p) = G(q) Unifikasjon H er unifikasjonen av F og G H = Hvis og bare hvis Og H er den mest generelle slike trekkstrukturen 18. mars 2016 20
I dag Med anbefalt lesing og rekkefølge Grammatiske trekk («features») NLTK boka, seksj 9.1 Trekkstrukturer («feature structures») J&M, seksj 15.1 Unifikasjon og subsumpsjon J&M, seksj. 15.2 Trekkstrukturer i NLTK NLTK-boka seksj. 9.2 Trekkbaserte grammatikker (=Unifikasjonsgrammatikker) Delvis: J&M, seksj15.3, NLTK boka seksj 9.3 21
NLTK - implementasjon >>> fs1 = nltk.featstruct(tense='past', NUM='sg') >>> fs1 [NUM='sg', TENSE='past'] >>> print fs1 [ NUM = 'sg' ] [ TENSE = 'past' ] >>> from nltk import FeatStruct >>> fs2 = FeatStruct(CAT='vp', AGR = fs1) >>> print fs2 [ AGR = [ NUM = 'sg' ] ] [ [ TENSE = 'past' ] ] [ ] [ CAT = 'vp' ] 18. mars 2016 22
NLTK - implementasjon >>> fs3 = fs2.unify(featstruct( "[AGR =?x, SUBJ = [AGR =?x]]")) >>> print fs3 [ AGR = (1) [ NUM = 'sg' ] ] [ [ TENSE = 'past' ] ] [ ] [ CAT = 'vp' ] [ ] [ SUBJ = [ AGR -> (1) ] ] 18. mars 2016 23
I dag Med anbefalt lesing og rekkefølge Grammatiske trekk («features») NLTK boka, seksj 9.1 Trekkstrukturer («feature structures») J&M, seksj 15.1 Unifikasjon og subsumpsjon J&M, seksj. 15.2 Trekkstrukturer i NLTK NLTK-boka seksj. 9.2 Trekkbaserte grammatikker (=Unifikasjonsgrammatikker) Delvis: J&M, seksj15.3, NLTK boka seksj 9.3 24
Grammatikker to alternative format 1. Trekkstrukturer i reglene NLTK er et (begrenset) forsøk på å implementere dette formatet 2. Regler + likninger Jurafsky og Martin 18. mars 2016 25
1. Regler med trekkstrukturer S NP VP NP Det N V serve V serves En ikke-terminal suppleres med en partiell trekkstruktur Mulig deling mellom trekkstrukturene i en regel Terminalene er uendret 18. mars 2016 26
1B. NLTKs format S NP VP S NP[AGR=?x] VP[AGR=?x] NP Det N NP[AGR=?x] Det[AGR=?x] Nom[AGR=?x] V serves V[AGR=[NUM=SG, PERS=3rd]] serves NLTKs format er en implementasjon av denne formalismen Men som vi vil se senere, har implementasjonen en del begrensninger i forhold til formalismen 18. mars 2016 27
Grammatikker to alternative format 1. Trekkstrukturer i reglene 2. Regler + likninger S NP VP NP Det NOM V serves 29. mars 2016 28
Sammenlikning av formatene 1. Trekkstrukturer i reglene Utvid ikke-terminaler med partielle trekkstrukturer Variable i trekkstrukturene for deling («reentrancy») Brukt for eksempel i tidlig Head-driven Phrase Structure Grammars (HPSG) 2. Regler + likninger Legg likninger til CFG-reglene En likning mellom To stier, eller En sti og en atomær verdi Inspirert av PATR Lexical-Functional Grammar Blir det samme (før evt utvidelser) 29. mars 2016 29
En generalisering av formalisme 1 Trekkstrukturgrammatikk Syntaktisk regel: En trekkstr. på v.s Null eller flere t.s. på h.s Deling mellom trekkstr.ene Leksikalsk regel: En trekkstr. på v.s En terminal på h.s. gives 29. mars 2016 30
En generalisering av formalisme 1 29. mars 2016 Hvis det er et trekk som alle strukturene i reglene har, f.eks. CAT (eller *TYPE*) dette trekket bare tar atomære verdier, så blir dette det samme som å ha en ikke-terminal + trekkstruktur Men dette formatet gir også muligheter for utvidelser: Regler med trekkstrukturer som mangler CAT-trekk Brukes i v. 1.5 under Regler med variable som verdier for hele trekkstrukturer Brukes i v. 2.0 under gives 31