INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

Like dokumenter
INF2820 Datalingvistikk V Gang 19.3 del 1 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 30.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 16.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang 5.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 20.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 23.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.3 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang 4.5 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF2820 Datalingvistikk V Gang 20.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.4 Jan Tore Lønning

3/8/2011. I dag. Dynamic Programming. Example. Example FORMELLE EGENSKAPER VED SPRÅK (KAP. 16) Jan Tore Lønning & Stephan Oepen

3/5/2012. Chart alternativ datastruktur. Fundamentalregelen. Chart-parsing. Bottom-up FORMELL SPRÅKTEORI. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

2/24/2012. Dynamic Programming. I dag. Example. Example PARSING. Jan Tore Lønning

INF5830, H2009, Obigatorisk innlevering 2. 1 Oppgave: Unære produksjoner i CKY

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820-V2018 Oppgavesett 10 Gruppe 18.4

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

3/1/2011. I dag. Recursive descent parser. Problem for RD-parser: Top Down Space. Jan Tore Lønning & Stephan Oepen

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

Oppgave 2. Eksamen INF2820, 2015, oppgave 2. La gramatikk G være:

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

INF2820 Datalingvistikk V2012

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.4 Jan Tore Lønning

2/24/2012. Context-Free Grammars. I dag. Avledning. Eksempel: grammar1 PARSING. Jan Tore Lønning

INF2820 Datalingvistikk V gang, 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

Oppgave 1. La G1 være grammatikken med hovedsymbol S og følgende regler:

2/22/2011. Høyre- og venstreavledninger. I dag. Chomsky-normalform (CNF) Chomsky-normalform (CNF) PARSING. Jan Tore Lønning & Stephan Oepen

INF 2820 V2016: Obligatorisk innleveringsoppgave 3

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

INF2820 V2017 Oppgavesett 5 arbeidsoppgaver

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 16.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

Oppgave 1 Vi har gitt følgende grammatikk for noe vi kan kalle speilengelsk :

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V Gang Jan Tore Lønning

Spørsmål 1.1 (10%) Lag en ikke-deterministisk endelig tilstandsautomat (NFA) som beskriver dette språket.

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF 2820 V2016: Innleveringsoppgave 3 del 1

INF 2820 V2016: Innleveringsoppgave 3 hele

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF INF1820. Arne Skjærholt INF1820. Dagens språk: Russisk. dyes yataya l yektsiya. Arne Skjærholt. десятая лекция

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Obligatorisk oppgave 4, INF2820, 2014

2/6/2012. Begrensninger ved regulære språk. INF2820 Datalingvistikk V2012. Formelle språk som ikke er regulære KONTEKSTFRIE GRAMMATIKKER.

INF 2820 V2018: Innleveringsoppgave 3

2/20/2012. I dag. Parsing. Recursive descent parser SÆRLIG TABELLPARSING. Venstre- og høyreavledning. Jan Tore Lønning

Eksamen INF2820 Datalingvistikk, H2018, Løsningsforslag

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 V2017 Oppgavesett 6 Gruppe 7.3

INF5110 Kap. 5: Parsering nedenfra-og-opp (Bottom-up parsing) 21/ Stein Krogdahl Ifi, UiO. Angående Oblig 1:

Oppgave 1 (samlet 40%)

INF3110 Programmeringsspråk

Norsyg en syntaksbasert dyp parser for norsk

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO

Repetisjon. 1 binærtall. INF3110 Programmeringsspråk. Sist så vi ulike notasjoner for syntaks: Jernbanediagrammer. BNF-grammatikker.

INF INF1820. Arne Skjærholt. Negende les INF1820. Arne Skjærholt. Negende les

Oppgave 1. Spørsmål 1.1 (10%) Gitt det regulære uttrykket: a((bcd)+(cd))*cd

Dynamisk programmering

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO

Kap. 5, Del 3: INF5110, fra 1/3-2011

INF 2820 V2018: Innleveringsoppgave 2

INF / Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

Slides til 12.1 Formelt språk og formell grammatikk

Kap.4, del 2: Top Down Parsering Kap. 5, del 1: Bottom Up Parsing INF5110, 7/ Legger ut en oppgave til kap. 4 (se beskjed).

1/26/2012 LITT PYTHON. INF2820 Datalingvistikk V2012. Hvorfor Pyhton. Python syntaks. Python er objektorientert. Python datatyper.

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

UNIVERSITETET I OSLO

1/31/2011 SAMMENHENGER FSA OG REGULÆRE UTTRYKK. Regulære språk. Fra FSA til RE. Fra regulært uttrykk til NFA REGULÆRE UTTRYKK I DATALINGVISTIKK DEL 2

Dagens Tema: Grammatikker Kap. 3 i K. C. Louden

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF2820-V2014-Oppgavesett 15, gruppe 13.5

Dynamisk programmering Undervises av Stein Krogdahl

Kap.4 del I Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

INF 5110, 3. februar Dette foilheftet: Kapittel 3

Transkript:

INF2820 Datalingvistikk V2018 9. Gang 13.3 Jan Tore Lønning

I dag to deler A. Trekkstrukturgramatikker Fortsatt fra sist B. Chart-parsing Fortsetter parsing fra for to uker siden 2

TREKKSTRUKTUR- GRAMMATIKKER 3

Del 1 Trekkstrukturgramatikker Litt repetisjon litt mer formelt: Eksempel motivasjon 1. Trekkstrukturer 2. Unifikasjon og subsumpsjon 3. Trekkstrukturgrammatikker 4. Tolkning av trekkstrukturgrammatikker 4

Tysk NP i CFG NP_neut_sg_nom Det_neut_sg_nom N_neut_sg_nom NP_neut_sg_acc Det_neut_sg_acc N_neut_sg_acc NP_neut_sg_gen Det_neut_sg_gen N_neut_sg_gen NP_neut_sg_dat Det_neut_sg_dat N_neut_sg_dat NP_fem_sg_nom Det_fem_sg_nom N_fem_sg_nom NP_fem_sg_acc Det_fem_sg_acc N_fem_sg_acc NP_fem_sg_gen Det_fem_sg_gen N_fem_sg_gen NP_fem_sg_dat Det_fem_sg_dat N_fem_sg_dat NP_mask_sg_nom Det_mask_sg_nom N_mask_sg_nom NP_mask_sg_acc Det_mask_sg_acc N_mask_sg_acc NP_mask_sg_gen Det_mask_sg_gen N_mask_sg_gen NP_mask_sg_dat Det_mask_sg_dat N_mask_sg_dat NP_pl_nom Det_pl_nom N_pl_nom Må i tillegg fordoble NP_pl_acc Det_pl_acc N_pl_acc reglene for å få inn NP_pl_gen Det_pl_gen N_pl_gen forskjellen NP_pl_dat Det_pl_dat N_pl_dat bestemt/ubestemt 5

Tysk med trekkgrammatikk, alt 2 S NP[CASE=nom, AGR=?x] VP[AGR=?x] NP[CASE=?z, AGR=?x] Det[CASE=?z, AGR=?x,] N[CASE=?z, AGR=?x,] VP[AGR=?x] V[SUBC= dtv, AGR=?x] NP[CASE=dat] NP[CASE=acc] Det[CASE=nom, AGR=[NUM=sg, GEN=mask, PERS=3rd]] 'der' N[CASE=nom, AGR=[NUM=sg, GEN=mask, PERS=3rd]] Mann' 6

1. Trekkstrukturer Attribute Value Matrices (AVMs) Directed Acyclic Graphs (DAGs) To alternative notasjoner for det samme 7

Trekkstruktur: deling («Reentrancies») 8

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 9. mars 2018 (som dictionaries i python) 9

Del 1 Trekkstrukturgramatikker Litt repetisjon litt mer formelt: Eksempel motivasjon 1. Trekkstrukturer 2. Unifikasjon og subsumpsjon 3. Trekkstrukturgrammatikker 4. Tolkning av trekkstrukturgrammatikker 10

Unifikasjon av trekkstrukturer 9. mars 2018 11

2. 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 9. mars 2018 12

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' ] 9. mars 2018 13

NLTK - implementasjon >>> fs3 = fs2.unify(featstruct( "[AGR =?x, SUBJ = [AGR =?x]]")) >>> print fs3 [ AGR = (1) [ NUM = 'sg' ] ] [ [ TENSE = 'past' ] ] [ ] [ CAT = 'vp' ] [ ] [ SUBJ = [ AGR -> (1) ] ] 9. mars 2018 14

Del 1 Trekkstrukturgramatikker Litt repetisjon litt mer formelt: Eksempel motivasjon 1. Trekkstrukturer 2. Unifikasjon og subsumpsjon 3. Trekkstrukturgrammatikker 4. Tolkning av trekkstrukturgrammatikker 15

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 9. mars 2018 16

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 9. mars 2018 17

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 9. mars 2018 18

Del 1 Trekkstrukturgramatikker Litt repetisjon litt mer formelt: Eksempel motivasjon 1. Trekkstrukturer 2. Unifikasjon og subsumpsjon 3. Trekkstrukturgrammatikker 4. Tolkning av trekkstrukturgrammatikker 19

Betingelser på grammatikalitet S, Hvert lokalt tre må tillates av en grammatikkregel NP, VP, DET, N, V, NP, DET, N, the restaurant serves many fish 9. mars 2018 20

Lokalt tre tillatt av regel eks 1 t1: S, Hvert lokalt tre må tillates av en grammatikkregel NP, VP, R1: S NP VP Regelen R1 svarer til et lokalt tre t2 R1 tillater t1 hvis t1 «utvider» t2, Mer formelt: hvis t2 subsummerer t1 9. mars 2018 21

Subsumpsjon av trær Vi kan utvide definisjonen av subsumpsjon fra trekkstrukturer til trær med trekkstrukturer på nodene Et tre T subsummerer et tre T dersom Trekkstrukturen på T subsummerer strukturen på T Inkludert at hvis T har en kategori, så har T samme kategori Hvis T har døtrene D 1, D 2,, D n, så har T like mange døtre D 1, D 2,, D n, der D i subsummerer D i for i = 1, 2,, n, og Alle delinger i T er også delinger i T. 22

Tolkning av grammatikk Et tre T med trekkstrukturer er tillatt av grammatikk G hvis og bare hvis. Hvis t 1, t 2,, t n er alle de lokale trærne i T, så fins det tilsvarende regler i G, si g 1, g 2,, g n s.a.: tre t i er tillatt av regel g i for i= 1, 2,, n Hvis T er et annet tre tillatt av de samme reglene g 1, g 2,, g n, på tilsvarende subtrær og T subsummerer T, så subsummerer T også T. "Det skal ikke være med mer i treet enn det reglene krever. " 9. mars 2018 23

Grammatikker to alternative format 1. Trekkstrukturer i reglene NLTK er et (begrenset) forsøk på å implementere dette formatet 2. Regler + likninger Jurafsky og Martin 9. mars 2018 24

Grammatikker to alternative format 1. Trekkstrukturer i reglene 2. Regler + likninger S NP VP NP Det NOM V serves 9. mars 2018 25

Lokalt tre tillatt av regel eks 1 S, Hvert lokalt tre må tillates av en grammatikkregel NP, VP, J&M-format: Det lokale treet lystrer alle likningene 9. mars 2018 26

Lokalt tre tillatt av regel eks 2 DET, Hvert lokalt tre må tillates av en grammatikkregel the Trekkstr. i regel DET[AGR=[PERS= 3rd ]]-> the DET, Regler + likninger: Det lokale treet lystrer alle likningene the DET the <DET AGR PERS>=3rd 9. mars 2018 27

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) 9. mars 2018 28

CHART-PARSING 29

I dag chart-parsing Chart-parsing: hovedideer BU chart-parsing: algoritmen NLTKs ChartParser TD chart-parsing 30

Chart-parsing: hovedideer Dotted items, aktive kanter Active chart - datastruktur Fundamentalregelen Bruk av en agenda 31

Dotted items Representerer deler av fraser VP V NP PP En del av VP Inneholder V NP Mangler PP 32

Dotted items Representerer deler av fraser VP V NP PP En del av VP Inneholder V NP Mangler PP VP V NP PP En hel VP frase med antydet struktur 33

Dotted items Representerer deler av fraser VP V NP PP En del av VP Inneholder V NP Mangler PP VP V NP PP En hel VP frase med antydet struktur VP V NP PP Predikerer starten på en VP 34

«Dotted items»/kanter Representerer deler av fraser VP V NP PP [2, 5] En del av VP. Fra posisjon 2 til 5 VP V NP PP [2, 9] En hel VP frase med antydet struktur VP V NP PP [2, 2] Predikterer starten på en VP I posisjon 2 VP V NP PP A girl gave a bone to the small dog 0 1 2 3 4 5 6 7 8 9 VP V NP PP VP V NP PP 35

Active Chart datastruktur NP Det Nom Nom Nom PP NP Det Nom 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 9. mars 2018 36

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] ) Lag (A B, [i,j] ) 9. mars 2018 37

Active chart-parsing Kombinere 3 typer operasjoner: 1. Lese ordene i setningen inn i chartet 2. Bruke fundamentalregelen når nye kanter legges til chartet 3. Innføre aktive kanter i chartet Ulike strategier for Hvordan aktive kanter innføres Rekkefølgen oppgavene utføres Og dermed: Hvilke aktive kanter som er nødvendige March 9, 2018 38

Aktiv chart-parsing Agenda Chart Når vi legger en kan til chartet kan det skape flere nye kanter som skal legges til chartet: Hver av de kan skape flere nye kanter: Osv. For å holde orden på dette bruker vi en ekstra datastruktur: Agenda Alle nye kanter legges i Agenda Vi flytter en og en kant fra Agenda til Chart Dette gir nye kanter. De legges i Agenda March 9, 2018 39

I dag chart-parsing Chart-parsing: hovedideer BU chart-parsing: algoritmen NLTKs ChartParser TD chart-parsing 40

Active chart-algoritmen,bottom-up Gitt en sekvens av ord w 1 w 2 w n 1. For hver w i og regel på formen A w i for en eller annen A: Legg kanten (A w i, [i-1, i]) til Agenda 2. Fjern en kant e fra Agenda Hvis e ikke er i Chart: 1. Legg e til Chart, og 2. Lag nye kanter med fundamentalregelen og legg til Agenda 3. Hvis e er inaktiv: Lag nye aktive kanter og legg til agenda Gjenta til Agenda er tom 41

2. Nye kanter med fundamentalregelen Når vi legger kanten e til chartet Hvis e er inaktiv, dvs. på formen (A, [i, k]) Finn alle kanter i chartet på formen (B A, [m, i]) for en eller annen m, B, og : Legg (B A, [m, k]) til Agenda Hvis e er aktiv, dvs. på formen (B A, [m, i]) Finn alle kanter i chartet på formen (A, [i, k]) for en eller annen k, og : Legg (B A,[m, k]) til Agenda 42

3. Nye aktive kanter Når vi legger kanten e til chartet Hvis e er inaktiv, dvs. på formen (B, [m,n]) Finn alle A, s.a. A B er en regel og Legg kanten (A B, [m, m]) til agendaen. (Strategi BU0) Det var alt 43

Fotnote: Nye aktive kanter Vi la til aktive kanter ved (strategi BU0, NLTK): Hvis e er inaktiv, dvs. på formen (B, [m,n]) Finn alle A, s.a. A B er en regel og Legg kanten (A B, [m, m]) til agendaen. Alternativt kan en i stedet ved (strategi BU1, J&M): Hvis e er inaktiv, dvs. på formen (B, [m,n]) Finn alle A, s.a. A B er en regel og Legg kanten (A B, [m, n]) til agendaen. Begge deler virker og er fullstendige 44

Eksempel Parse: gi jenta fisk 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 9. mars 2018 45

I dag chart-parsing Chart-parsing: hovedideer BU chart-parsing: algoritmen NLTKs ChartParser TD chart-parsing 46

. gi. jenta. fisk. [-----------].. [0:1] DTV -> 'gi' * >... [0:0] VP -> * DTV NP NP [----------->.. [0:1] VP -> DTV * NP NP. [-----------]. [1:2] N -> 'jenta' *. >.. [1:1] NP -> * N. [-----------]. [1:2] NP -> N * [----------------------->. [0:2] VP -> DTV NP * NP.. [-----------] [2:3] IV -> 'fisk' *.. [-----------] [2:3] TV -> 'fisk' *.. [-----------] [2:3] N -> 'fisk' *.. >. [2:2] NP -> * N.. [-----------] [2:3] NP -> N * [===================================] [0:3] VP -> DTV NP NP * >... [0:0] S -> * VP [===================================] [0:3] S -> VP *.. >. [2:2] VP -> * TV NP.. [-----------> [2:3] VP -> TV * NP.. >. [2:2] VP -> * IV.. [-----------] [2:3] VP -> IV *.. >. [2:2] S -> * VP 9. mars. 2018. [-----------] [2:3] S -> VP * 47

. gi. jenta. fisk. [-----------].. [0:1] 'gi'. [-----------]. [1:2] 'jenta'.. [-----------] [2:3] 'fisk' >... [0:0] DTV -> * 'gi' [-----------].. [0:1] DTV -> 'gi' * >... [0:0] VP -> * DTV NP NP [----------->.. [0:1] VP -> DTV * NP NP. >.. [1:1] N -> * 'jenta'. [-----------]. [1:2] N -> 'jenta' *. >.. [1:1] NP -> * N. [-----------]. [1:2] NP -> N * [----------------------->. [0:2] VP -> DTV NP * NP.. >. [2:2] IV -> * 'fisk'.. >. [2:2] TV -> * 'fisk'.. >. [2:2] N -> * 'fisk'.. [-----------] [2:3] IV -> 'fisk' *.. [-----------] [2:3] TV -> 'fisk' *.. [-----------] [2:3] N -> 'fisk' *.. >. [2:2] NP -> * N.. [-----------] [2:3] NP -> N * [===================================] [0:3] VP -> DTV NP NP * >... [0:0] S -> * VP [===================================] [0:3] S -> VP *.. >. [2:2] VP -> * TV NP.. [-----------> [2:3] VP -> TV * NP.. >. [2:2] VP -> * IV.. [-----------] [2:3] VP -> IV *.. >. [2:2] S -> * VP.. [-----------] [2:3] S -> VP * (Fullstendig NLTK Egentlig følger NLTK samme rekkefølge som oss, men legger inn ordene først uten å slå opp i leksikon. Tillater dermed høyresider med både terminaler og ikketerminaler Men chartet blir større). 9. mars 2018 48

Fotnote: Nye aktive kanter Vi la til aktive kanter ved (strategi BU0, NLTK): Hvis e er inaktiv, dvs. på formen (B, [m,n]) Finn alle A, s.a. A B er en regel og Legg kanten (A B, [m, m]) til agendaen. Alternativt kan en i stedet ved (strategi BU1, J&M): Hvis e er inaktiv, dvs. på formen (B, [m,n]) Finn alle A, s.a. A B er en regel og Legg kanten (A B, [m, n]) til agendaen. Begge deler virker og er fullstendige 49

BU1: 14 kanter, (mot BU0: 21 kanter) In [73]: for t in parser_1_1.parse(sent): t.pretty_print(). gi. jenta. fisk. [-----------].. [0:1] DTV -> 'gi' * [----------->.. [0:1] VP -> DTV * NP NP. [-----------]. [1:2] N -> 'jenta' *. [-----------]. [1:2] NP -> N * [----------------------->. [0:2] VP -> DTV NP * NP.. [-----------] [2:3] IV -> 'fisk' *.. [-----------] [2:3] TV -> 'fisk' *.. [-----------] [2:3] N -> 'fisk' *.. [-----------] [2:3] NP -> N * [===================================] [0:3] VP -> DTV NP NP * [===================================] [0:3] S -> VP *.. [-----------> [2:3] VP -> TV * NP.. [-----------] [2:3] VP -> IV *.. [-----------] [2:3] S -> VP * 9. mars 2018 50

BU chart-parser: egenskaper Behersker: Unære regler Mer enn to symboler på høyresiden i en regel Takler ikke: Tomme høyresider (det vil kreve endringer i algoritmen) NLTKs implementasjon ser ut til å ha tatt høyde for det 9. mars 2018 51

NLTKs chart-parser Lag parser fra grammatikk gi: parser_1_0 = nltk.chartparser(gi) Bruk, f.eks. for t in parser_1_2.parse(sent): t.pretty_print() Det er to nivåer av trace. De må angis når vi konstruerer parser parser_1_1 = nltk.chartparser(gi, trace=1) parser_1_2 = nltk.chartparser(gi, trace=2) Vi har også mulighet til å påvirke parsingstrategien parser_0_1 = nltk.chartparser(gi, nltk.chart.bu_strategy, trace = 1) parser_t_1 = nltk.chartparser(gi, nltk.chart.td_strategy) 52

I dag chart-parsing Chart-parsing: hovedideer BU chart-parsing: algoritmen NLTKs ChartParser TD chart-parsing 53

Top down active chart-parsing Som ved Bottom-UP kombinere 3 typer operasjoner: 1. Lese ordene i setningen inn i chartet 2. Bruke fundamentalregelen når nye kanter legges til chartet 3. Innføre aktive kanter i chartet Og vi bruker agenda på samme måte Forskjellen ligger i punkt 3: Innføring av aktive kanter Punkt 2: bruk av fundamentalregelen blir helt lik Punkt 1: kan gjøres likt eller forskjellig March 9, 2018 54

Top-down active chart-algoritmen Ved intialisering legger vi kanten ( S, [0, 0]) til Agenda Når en aktiv kant (A B, [m, n] ) legges inn i chartet: Finn alle regler som har formen (B ) for en eller annen, og legg kanten (B, [n, n]) til agendaen. (Ikke innfør nye aktive kanter fra regler når inaktive kanter legges til agenda) 55

Eksempel Parse: gi jenta fisk 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 9. mars 2018 56

. gi. jenta. fisk. [-----------].. [0:1] 'gi'. [-----------]. [1:2] 'jenta'.. [-----------] [2:3] 'fisk' >... [0:0] S -> * VP >... [0:0] VP -> * IV >... [0:0] VP -> * TV NP >... [0:0] VP -> * DTV NP NP >... [0:0] DTV -> * 'gi' [-----------].. [0:1] DTV -> 'gi' * [----------->.. [0:1] VP -> DTV * NP NP. >.. [1:1] NP -> * N. >.. [1:1] N -> * 'jenta'. [-----------]. [1:2] N -> 'jenta' *. [-----------]. [1:2] NP -> N * [----------------------->. [0:2] VP -> DTV NP * NP.. >. [2:2] NP -> * N.. >. [2:2] N -> * 'fisk'.. [-----------] [2:3] N -> 'fisk' *.. [-----------] [2:3] NP -> N * [===================================] [0:3] VP -> DTV NP NP * 9. mars [===================================] 2018 [0:3] S -> VP * 57

. gi. jenta. fisk. [-----------].. [0:1] 'gi'. [-----------]. [1:2] 'jenta'.. [-----------] [2:3] 'fisk' >... [0:0] S -> * VP >... [0:0] VP -> * IV >... [0:0] VP -> * TV NP >... [0:0] VP -> * DTV NP NP >... [0:0] DTV -> * 'gi' [-----------].. [0:1] DTV -> 'gi' * [----------->.. [0:1] VP -> DTV * NP NP. >.. [1:1] NP -> * N. >.. [1:1] N -> * 'jenta'. [-----------]. [1:2] N -> 'jenta' *. [-----------]. [1:2] NP -> N * [----------------------->. [0:2] VP -> DTV NP * NP.. >. [2:2] NP -> * N.. >. [2:2] N -> * 'fisk'.. [-----------] [2:3] N -> 'fisk' *.. [-----------] [2:3] NP -> N * [===================================] [0:3] VP -> DTV NP NP * 9. mars [===================================] 2018 [0:3] S -> VP * 58

Fotnote til TD En ren TD-strategi slår ikke opp kategorier for ordene ved initalisering Den foreslår ord TD Da vil en kunne ha regler som blander terminaler og ikke-terminaler på høyresiden i en regel Fint i teorien ekstremt langsomt i praksis Bedre å anta at grammatikken er på standardform og behandle ordene BU (NLTKs TD ser ut som ren TD,men vi ser at det er hypoteser den ikke foreslår, eks N. fisk ) 59

Fordeler med Top-Down? Både BU og TD behersker: Å gi riktig svar på om ordene er en setning Unære regler Mer enn to symboler på høyresiden i en regel Høyrerekursive regler TD: Vil ofte foreslå færre kanter som ikke fører frem enn BU-strategien Har ikke problemer med tomme høyresider 9. mars 2018 60

Earleys algoritme (Som presentert av J&M) Tilsvarer en chart-parser med: TD innføring av aktive/inkomplette kanter Streng venstre mot høyre Egen rutine for leksikalske oppslag (=Scanner) Dermed behøver en bare bruke fundamentalregelen når en legger til inaktive/komplette kanter (og ser mot venstre) (=Completer) (De aktive ser mot høyre og vil ikke se noen inaktive kanter) Når en legger til aktive kanter, må en lage nye aktive kanter (=Predictor) 9. mars 2018 61

Fotnote til Earleys algoritme Som presentert av J&M Fig. 13.13 har en løkke som begynner for each state in chart[i] do og som modifiserer chart[i] Dette kan kreve litt omskrivning ved programmering 9. mars 2018 62