INF2820 Datalingvistikk V Gang 4.5 Jan Tore Lønning

Like dokumenter
INF2820 Datalingvistikk V gang, 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 13.3 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

2/24/2012. Dynamic Programming. I dag. Example. Example PARSING. 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

INF2820 Datalingvistikk V Gang 6.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

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, 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820-V2018 Oppgavesett 10 Gruppe 18.4

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

INF2820 Datalingvistikk V Gang 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

INF2820 Datalingvistikk V2012

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

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 V2011. Jan Tore Lønning & Stephan Oepen

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

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

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

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

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF 2820 V2016: Obligatorisk innleveringsoppgave 3

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

UNIVERSITETET I OSLO

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

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

Eksamen INF2820 Datalingvistikk, H2018, Løsningsforslag

INF2820 Datalingvistikk V2015. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Syntax/semantics - I INF 3110/ /29/2005 1

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

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

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

INF2820 V2017 Oppgavesett 5 arbeidsoppgaver

INF2820 Datalingvistikk V Gang 23.3 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 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF2820 Datalingvistikk V Gang 13.4 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Oppgave 1 (samlet 40%)

INF2820 Datalingvistikk V Gang 20.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V2014. Jan Tore Lønning

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

INF 2820 V2016: Innleveringsoppgave 3 hele

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

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

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

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

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

INF 2820 V2018: Innleveringsoppgave 3

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

INF2820 Datalingvistikk V2015. Jan Tore Lønning

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

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

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

INF2820 Datalingvistikk V2015. Jan Tore Lønning

INF2820 Datalingvistikk V forelesning, 30.1 Jan Tore Lønning

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

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

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

UNIVERSITETET I OSLO

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

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

INF2820 Datalingvistikk V Gang 30.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V2014. Jan Tore Lønning

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

Transkript:

INF2820 Datalingvistikk V2015 14. Gang 4.5 Jan Tore Lønning

CHART PARSING 2

I dag Svakheter ved tidligere parsere RD og SR: ineffektivitet CKY: CNF Chart parsing,,dotted items og fundamentalregelen Algoritmer: BU og TD Implementasjon CKY og Chart: Parsing vs anerkjenning 3

Problem for både RD og SR Ineffektivitet RD: Eksempel: S NP VP Noen valg under NP Noen valg under VP Vi foretar valgene for VP på nytt for hvert alternativ under NP Tilsvarende for SR For hvert valg vi foretar må vi se på alle muligheter for resten av strengen på nytt 29. april 2015 4

Example 4/29/2015 Speech and Language Processing - Jurafsky and Martin 5

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 29. april 2015 6

Chart alternativ datastruktur (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 29. april 2015 7

Chart alternativ datastruktur (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 29. april 2015 8

I dag Svakheter ved tidligere parsere RD og SR: ineffektivitet CKY: CNF Chart parsing,,dotted items og fundamentalregelen Algoritmer: BU og TD Implementasjon CKY og Chart: Parsing vs anerkjenning 9

States The table-entries are called states and are represented with dotted-rules. S VP NP Det Nominal VP V NP - A VP is predicted - An NP is in progress - A VP has been found 4/29/2015 Speech and Language Processing - Jurafsky and Martin 10

States/Locations S VP [0,0] A VP is predicted at the start of the sentence NP Det Nominal [1,2] VP V NP [0,3]. An NP is in progress; the Det goes from 1 to 2 A VP has been found starting at 0 and ending at 3 4/29/2015 Speech and Language Processing - Jurafsky and Martin 11

Active Chart datastruktur NP Det Nom Nom Nom PP NP 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 29. april 2015 12

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] ) 29. april 2015 13

Chart-parsing Agenda Chart Hovedide: Fjern en kant k fra Agenda Hvis k ikke er i chart: Legg k til Chart For alle kanter m i chartet: Prøv å match k og m med fundamentalregelen Hvis match, legg ny kant til Agenda Gjenta til Agenda er tom April 29, 2015 14

I tillegg Initialisering For det n-te ordet w i setningen For alle leksikalske regler på formen B w, for en eller annen B: Legg (B w, [n-1,n] ) til agendaen på et eller annet tidspunkt Introduser aktive kanter: Legg de aktive kantene (B γ, [k,k]) som er nødvendige, til agendaen Hold regnskap med hva som blir gjort, slik at alt blir gjort Ulike strategier for Rekkefølgen oppgavene utføres Og dermed: Hvilke aktive kanter som er nødvendige Om de leksikalske reglene må innom agenda eller kan gå rett til chartet. April 29, 2015 15

Bottom-up Legg de aktive kantene (B γ, [k,k]) som er nødvendige, til agendaen Når en inaktiv/fullstendig kant (B γ, [m, n] ) blir lagt til chartet Finn alle A, β s.a. A B β er en regel og (to alternative understrategier:) (Straegi BU0:) Legg kanten (A B β, [m, m]) til agendaen. (Strategi BU1:) Legg kanten (A B β, [m, n]) til agendaen. April 29, 2015 16

Make-predictions, fig. 13.17 BU1 29. april 2015 17

Top-Down Legg de aktive kantene (B γ, [k,k]) som er nødvendige, til agendaen Initialiser: Legg ( S, [0, 0]) til agenda Når en aktiv/ufullstendig 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. April 29, 2015 18

Make-predictions, fig. 13.17 29. april 2015 19

Eksempel Parse: gi jenta fisk med BU og TD-strategi 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 29. april 2015 20

29. april 2015 21 Chart-algoritme, fig. 13.16

I dag Svakheter ved tidligere parsere RD og SR: ineffektivitet CKY: CNF Chart parsing,,dotted items og fundamentalregelen Algoritmer: BU og TD Implementasjon CKY og Chart: Parsing vs anerkjenning 22

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]) as ((S,[],[NP, VP]),(0,0)) (S -> NP. VP, [0,3]) as ((S,[NP],[VP]),(0,3)) (S -> NP VP., [0,5]) as ((S,[NP, VP],[]),(0,5)) 23

TD: Initialize def make_chart(words, grammar, strategy='td'): agenda = [] chart = [] if strategy == 'td': top = grammar.start() for p in grammar.productions(): if p.lhs() == top: agenda.append(((p.lhs(), [], list(p.rhs())), (0, 0))) 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))) 24

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 25

Fundamental rule if to_find: # active edge, forward fundamental rule pivot = to_find[0] for edge2 in chart: ((mother2, found2, to_find2),(start2, end2)) = edge2 if mother2 == pivot and to_find2==[] and end==start2: newfound = found[:]+[pivot] agenda.append(((mother, newfound, to_find[1:]), (start, end2))) 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))) 26

Make predictions: TD vs BU if strategy == 'td' and to_find: for p in grammar.productions(): if p.lhs() == to_find[0] and p.is_nonlexical(): agenda.append(((p.lhs(), [], list(p.rhs())), (end, end))) elif strategy == 'bu0' and not to_find: for p in grammar.productions(): if p.rhs()[0] == mother: agenda.append(((p.lhs(), [], list(p.rhs())), (start, start))) elif strategy == 'bu1' and not to_find: for p in grammar.productions(): if p.rhs()[0] == mother: agenda.append(((p.lhs(), [mother], list(p.rhs())[1:]), (start, end))) return chart 27

TD vs BU Felles: Add to chart Fundamental rule Initialisering: Begge legger inn kategorier for alle ord TD legger i tillegg til TD-predikering:.S (0,0) (eller S.γ for alle regler S.γ ) Predikering: TD: utløses av aktive kanter BU: utløses av inaktive kanter 28

BU: Initialiser def make_chart(words, grammar, strategy='td'): 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))) 29

BU: Make predictions if not to_find: for p in grammar.productions(): if p.rhs()[0] == mother: agenda.append(((p.lhs(), [mother], list(p.rhs())[1:]), (start, end))) return chart 30

Egenskaper Merk Unære regler Mer enn to symb. på høyreside Dette går fint Venstrerekursjon ikke noe problem Tomme prod. OK ved TD-strategi, Problem ved BU 29. april 2015 31

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) 29. april 2015 32

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 29. april 2015 33

I dag Svakheter ved tidligere parsere RD og SR: ineffektivitet CKY: CNF Chart parsing,,dotted items og fundamentalregelen Algoritmer: BU og TD Implementasjon CKY og Chart: Parsing vs anerkjenning 34

CKY Parsing og Chart parsing Er dette egentlig en parser? Strengt tatt: Nei! Det er en anerkjenner Hvordan kan vi lage en parser som følger denne algoritmen? 4/29/2015 Speech and Language Processing - Jurafsky and Martin 35

Alternativ Alt 1: Bygg trær underveis og legg dem i chartet S S S S a Med en flertydig grammatikk kan chartet/tabellen vokse eksponensielt 36

Eksempel (0) a (1) a (2) a (3) a (4) --------------------------------------------------------------------------- 0) (Sa) (S(Sa)(Sa)) (S(S(Sa)(Sa))(Sa)) (S(S(S(Sa)(Sa))(Sa))(Sa)) (S(Sa)(S(Sa)(Sa))) (S(S(Sa)(S(Sa)(Sa)))(Sa)) (S(S(Sa)(Sa))(S(Sa)(Sa))) (S(Sa)(S(S(Sa)(Sa))(Sa))) (S(Sa)(S(Sa)(S(Sa)(Sa)))) --------------------------------------------------------------------------- 1) (Sa) (S(Sa)(Sa)) (S(S(Sa)(Sa))(Sa)) (S(Sa)(S(Sa)(Sa))) --------------------------------------------------------------------------- 2) (Sa) (S(Sa)(Sa)) --------------------------------------------------------------------------- 3) (Sa) --------------------------------------------------------------------------- April 29, 2015 37

Et bedre alternativ Ikke bygg hele trær Men inkluder i strukturen informasjon som gjør det mulig å konstruere alle trær. (Merk: Hvis vi vil skrive ut alle trær får vi uansett en eksponensiell algoritme fordi antallet trær til en streng kan være eksponensielt i lengden av inputt.) 38

Eksempel (0) a (1) a (2) a (3) a (4) ------------------------------------------------------------------------------------ 0) (1,S,'a') (3,S,[(1,2)]) (6,S,[(1,5),(3,4)]) (10,S,[(1,9),(3,8),(6,7)]) ------------------------------------------------------------------------------------ 1) (2,S,'a') (5,S,[(2,4)]) (9,S,[(2,8),(5,7)]) ------------------------------------------------------------------------------------ 2) (4,S,'a') (8,S,[(4,7)]) ------------------------------------------------------------------------------------ 3) (7,S,'a') ------------------------------------------------------------------------------------ 39