INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

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

INF2820 Datalingvistikk V gang, 27.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 Datalingvistikk V Gang 26.2 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 13.3 Jan Tore Lønning

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

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

INF2820 Datalingvistikk V2012

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

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

INF2820 Datalingvistikk V Gang 16.3 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 9.3 Jan Tore Lønning

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

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

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF 2820 V2016: Obligatorisk innleveringsoppgave 3

UNIVERSITETET I OSLO

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

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Eksamen INF2820 Datalingvistikk, H2018, Løsningsforslag

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

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

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

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

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang 20.3 Jan Tore Lønning

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

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

INF2820 Datalingvistikk V Gang 13.4 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

INF2820 Datalingvistikk V2014. Jan Tore Lønning

INF2820 V2017 Oppgavesett 5 arbeidsoppgaver

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 23.3 Jan Tore Lønning

Oppgave 1 (samlet 40%)

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

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

UNIVERSITETET I OSLO

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

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

INF2820 Datalingvistikk V2015. Jan Tore Lønning

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

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.

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

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

INF 2820 V2016: Innleveringsoppgave 3 hele

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

UNIVERSITETET I OSLO

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

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

INF2820 Datalingvistikk V2014. Jan Tore Lønning

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

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

INF 2820 V2018: Innleveringsoppgave 3

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

Transkript:

INF2820 Datalingvistikk V2014 8. gang, 6.3.2014 Jan Tore Lønning

I dag Chart parsing Implementasjon CKY og Chart: Parsing vs anerkjenning 2

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 4. mars 2014 3

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 4. mars 2014 4

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 3/4/2014 Speech and Language Processing - Jurafsky and Martin 5

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 3/4/2014 Speech and Language Processing - Jurafsky and Martin 6

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 4. mars 2014 7

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] ) 4. mars 2014 8

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 March 4, 2014 9

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. March 4, 2014 10

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. March 4, 2014 11

Make-predictions, fig. 13.17 BU1 4. mars 2014 12

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. March 4, 2014 13

Make-predictions, fig. 13.17 4. mars 2014 14

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 4. mars 2014 15

4. mars 2014 16 Chart-algoritme, fig. 13.16

I dag Chart parsing Implementasjon CKY og Chart: Parsing vs anerkjenning 17

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

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

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 20

Fundamental rule if to_find: # active edge 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 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))) 21

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 22

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

TD Add to chart Fundamental rule Same as BU 24

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 25

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 4. mars 2014 26

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) 4. mars 2014 27

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 4. mars 2014 28

I dag Chart parsing Implementasjon CKY og Chart: Parsing vs anerkjenning 29

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? 3/4/2014 Speech and Language Processing - Jurafsky and Martin 30

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 31

Example (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) --------------------------------------------------------------------------- March 4, 2014 32

Et bedre alternativ Ikke bygg hele trær Men inkluder i strukture 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.) 33

Example (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') ------------------------------------------------------------------------------------ 34