INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

Like dokumenter
INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 4.5 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

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

INF2820 Datalingvistikk V Gang 6.3 Jan Tore Lønning

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

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

INF2820-V2018 Oppgavesett 10 Gruppe 18.4

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

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V gang, 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V2012

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 16.3 Jan Tore Lønning

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

INF 2820 V2016: Obligatorisk innleveringsoppgave 3

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang Jan Tore Lønning

2/20/2012. I dag. Parsing. Recursive descent parser SÆRLIG TABELLPARSING. Venstre- og høyreavledning. 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 Jan Tore Lønning

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

Oppgave 1 (samlet 40%)

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

Eksamen INF2820 Datalingvistikk, H2018, Løsningsforslag

UNIVERSITETET I OSLO

INF 2820 V2016: Innleveringsoppgave 3 hele

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.4 Jan Tore Lønning

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).

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

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

INF2820 V2017 Oppgavesett 5 arbeidsoppgaver

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V Gang 23.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF 2820 V2016: Innleveringsoppgave 3 del 1

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker

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

Bottom up parsering (nedenfra-og-opp) Kap. 5 del 1 Intro til parsering nedenfra-og-opp samt LR(0) og SLR(1) grammatikker INF5110 v2006

INF2820 Datalingvistikk V gang, Jan Tore Lønning

Syntaksanalyse. Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger. IN 211 Programmeringsspråk

UNIVERSITETET I OSLO

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

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

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

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

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

INF2820 Datalingvistikk V2014. Forelesning 4, 6.2 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Oppgave 2. INF5110 oppgave 2 på eksamen v04 med teori. FirstMengder. Arne Maus Ifi. Eks. 4.9 Beregning av First-mengde. terminal

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

INF2820 Datalingvistikk V Gang 30.3 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 V2009

Kap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO

Stoff som i boka står i kap 4, men som er. 10. Februar Ifi, UiO

INF2820 Datalingvistikk V2015. Jan Tore Lønning

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

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF 2820 V2018: Innleveringsoppgave 3

Kap. 5 del 2: LR(1)- og LALR(1)-grammatikker INF5110 V2005. Stein Krogdahl, Ifi, UiO

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2015. Forelesning 4, 9.2 Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

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

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

INF2820 Datalingvistikk V2017 Forelesning 2, 23.1 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 20.3 Jan Tore Lønning

Stoff som i boka står i kap 4, men som er

INF 2820 V2016: Obligatorisk innleverinsoppgave 1

Transkript:

INF2820 Datalingvistikk V2016 8. Gang 9.3 Jan Tore Lønning

CHART-PARSING 2

I dag Bakgrunn Svakheter med andre parsere CKY og Chart Chart-parsing: hovedideer BU chart-parsingalgoritmen Algoritmen uttrykt i Python TD chart-parsing CKY og Chart: Parsing vs anerkjenning 3

Problemer for tidligere parsere RD: venstrerekursjon SR: regler med tomme høyresider Både RD og SR: Ineffektivitet CKY: bare grammatikker på CNF 15. mars 2016 4

Example 3/15/2016 Speech and Language Processing - Jurafsky and Martin 5

Chart alternativ datastruktur for CKY (S, [0, 1]) (VP, [0,1]) (Det, [1,2]) (Nom, [2,3]) (N, [2,3]) (NP, [1, 3]) (S, [0,5]) S, VP, X2 NP S, VP, X2 Nom NP PP S, VP, V, Nom, N Det Nom, N P NP, PN 0 book 1 the 2 flight 3 through 4 Houston 5 15. mars 2016 6

CKY med chart (skisse) 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: Innfør kanten (i-1, i, A) 2. Hver gang vi innfører en kant (k, j, A) se på alle kanter i chartet på formen (i, k, B) for en eller annen i og en eller annen B: For hver regel på formen C B A for en eller annen C: Legg til kanten (i, j, C) (Hvis det finnes kanter i chartet på formen (j, m, B) for en B og en m, må vi også prøve å kombinere (k, j, A) med dem. Skjer ikke ved streng venstre mot høyre.) 8

CKY-algoritme med chart CKY-algoritmen med datastrukturen chart vil gi samme resultat som med bruk av tabell hvis vi er nøye med bokføringen og legger til alle kanter vi skal. (Ikke gjort detaljene her) Vanligvis gjøres CKY med tabell. Vi innfører chart her for å se likhetene til aktiv chart-parsing. 9

I dag Bakgrunn Chart-parsing: hovedideer Dotted items, aktive kanter Active chart - datastruktur Fundamentalregelen Bruk av en agenda BU chart-parsingalgoritmen Algoritmen uttrykt i Python TD chart-parsing CKY og Chart: Parsing vs anerkjenning 10

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 13

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] Predikerer starten på en VP i posisjon 2 14

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 15. mars 2016 15

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] ) 15. mars 2016 16

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 15, 2016 17

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 15, 2016 18

I dag Bakgrunn Chart-parsing: hovedideer BU chart-parsingalgoritmen Algoritmen uttrykt i Python TD chart-parsing CKY og Chart: Parsing vs anerkjenning 19

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 20

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 21

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 22

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 15. mars 2016 23

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 24

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) Blandinger av ord (terminaler) og kategorisymboler (ikke-terminaler) på høyresiden i samme regel 15. mars 2016 25

I dag Bakgrunn Chart-parsing: hovedideer BU chart-parsing algoritmen Algoritmen uttrykt i Python TD chart-parsing CKY og Chart: Parsing vs anerkjenning 26

Struktur En kant representeres som: <edge> = (<dotted item>,<span>) <dotted item> = (<lhs>,<rhs found>,<rhs to find>) <span> = (<begin>,<end>) Eksempler: (S NP VP, [0,0]) som ((S,[],[NP, VP]),(0,0)) (S NP VP, [0,3]) som ((S,[NP],[VP]),(0,3)) (S -> NP VP, [0,5]) som ((S,[NP, VP],[]),(0,5)) 27

Implementasjon: initialisering def make_chart(words, grammar): agenda = [] chart = [] for i in range(len(words)): for p in grammar.productions(): if len(p.rhs()) == 1 and p.rhs()[0] == words[i]: agenda.append(((p.lhs(),list(p.rhs()),[]), (i, i+1))) 31

Add to chart while agenda: edge = agenda.pop() 32

Add to chart while agenda: edge = agenda.pop() if edge not in chart: chart.append(edge) ((mother, found, to_find),(start, end)) = edge if to_find: # active edge, forward fundamental rule pivot = to_find[0] for edge2 in chart: ((moth2, found2, to_find2),(st2, end2)) = edge2 if moth2 == pivot and to_find2==[] and end==st2: newfound = found[:]+[pivot] agenda.append(((mother, newfound,to_find[1:]), (start, end2))) 36

New active edges ((mother, found, to_find),(start, end)) = edge if to_find: # active edge, forward fundamental rule else: # inactive edge, backward fundamental rule for edge2 in chart: ((mother2, found2, to_find2),(start2, end2)) = edge2 if to_find2 and to_find2[0]==mother and end2==start: newfound = found2[:]+[mother] agenda.append(((mother2, newfound, to_find2[1:]), (start2, end))) # new active edges for p in grammar.productions(): if p.rhs()[0] == mother: agenda.append(((p.lhs(), [], list(p.rhs())), (start, start))) 39

I dag Bakgrunn Chart-parsing: hovedideer BU chart-parsing algoritmen Algoritmen uttrykt i Python TD chart-parsing CKY og Chart: Parsing vs anerkjenning 40

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 15, 2016 41

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) 42

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 15. mars 2016 43

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 15. mars 2016 44

Fotnote til TD En ren TD-strategi leser ikke inn ordene ved initialisering 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 45

Earleys algoritme (Som presentert av J&M) Tilsvarer en chart-parser med: TD innføring av aktive/inkomplette kanter Streng venstre mot høyre Litt 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) 15. mars 2016 46

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 15. mars 2016 47

I dag Bakgrunn Chart-parsing: hovedideer BU chart-parsing algoritmen Algoritmen uttrykt i Python TD chart-parsing CKY og Chart: Parsing vs anerkjenning 48

CKY og Chart: Parsing vs anerkjenning Neste uke 49