INF2820 Datalingvistikk V2012. Jan Tore Lønning

Like dokumenter
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

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

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

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.3 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-V2018 Oppgavesett 10 Gruppe 18.4

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

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V gang, 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 16.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V2012

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

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

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

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

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

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 V2017 Oppgavesett 6 Gruppe 7.3

INF 2820 V2016: Obligatorisk innleveringsoppgave 3

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 V2017 Oppgavesett 5 arbeidsoppgaver

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

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 23.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

Eksamen INF2820 Datalingvistikk, H2018, Løsningsforslag

UNIVERSITETET I OSLO

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

INF2820 Datalingvistikk V2012. 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 V2015. Forelesning 4, 9.2 Jan Tore Lønning

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

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

INF 2820 V2016: Innleveringsoppgave 3 hele

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

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V forelesning, 30.1 Jan Tore Lønning

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

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

INF2820 Datalingvistikk V Gang 30.3 Jan Tore Lønning

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

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

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

INF2820 Datalingvistikk V2012. 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.

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

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

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

Språktyper og syntaksanalyseteknikker. Dagens temaer. Hvordan lage en deterministisk automat? Fra jernbanediagram til ID-automat

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

INF2820 Datalingvistikk V2016. Forelesning 4, 10.2 Jan Tore Lønning

INF2820 Datalingvistikk V2018 Forelesning 3, 29. jan. Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

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 V2017 Forelesning 3, 30.1 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

Løsningsforslag til obligatorisk oppgave 3 INF1800 Logikk og beregnbarhet, høsten 2009

INF2820 Datalingvistikk V2016. Forelesning 4, 10.2 Jan Tore Lønning

Oppgave 1 (samlet 40%)

INF3110 Programmeringsspråk

Kontekstfrie grammatikker og syntaksanalyse (parsering)

INF 2820 V2016: Innleveringsoppgave 3 del 1

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

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

Dagens tema: Regulære språk og uttrykk

Transkript:

INF2820 Datalingvistikk V2012 Jan Tore Lønning

CHART-PARSING FORMELL SPRÅKTEORI 5. mars 2012 2

Chart alternativ 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 5. mars 2012 3

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] ) Kan vi lage (A α B β, [i,j] ) 5. mars 2012 4

Chart-parsing To datastrukturer: Chart Agenda Hovedstruktur: Fjern en kant k fra agenda Hvis k ikke alt finnes i chartet: Legg k til chartet For alle aktuelle kanter m i chartet: Prøv å matche k mot m m/fundamentalregelen: Hvis de matcher, legg resultatet i agenda Gjenta til agenda er tom I tillegg må vi tenke på: Initialisering: for w ordet på plass n og alle leksikalske regler B w, for en B, skal (B w, [n-1,n] ) legges til agenda (/chart) på et tidspkt. Innfør aktive kanter: Legg de nødvendige aktive kanter på formen (B γ, [k,k]) til agenda. Hold styring på rekkefølge Ulike strategier for Rekkefølge Og dermed hvilke aktive kanter som er nødvendige for å få et fullstendig parse. 5. mars 2012 5

Bottom-up Legg de nødvendige aktive kanter på formen (B γ, [k,k]) til agenda : Når inaktiv/komplett kant (B γ, [m, n] ) flyttes til chartet: Finn alle A, β s.a. A B β er en regel, og Legg kanten (A B β, [m, n]) til agenda. (kunne alternativt lagt (A B β, [m, m]) til agenda: Kan være hensiktsmessig Gjør sammenlikning med TD-strategi lettere) 5. mars 2012 6

Make-predictions, fig. 13.17 5. mars 2012 7

Top-down Legg de nødvendige aktive kanter på formen (B γ, [k,k]) til agenda (/chart) : Initialiser: Legg ( S, [0, 0]) i agenda Når aktiv/inkomplett kant (A α B β, [m, n] ) flyttes til chartet: Finn alle regler på formen (B γ) for en eller annen γ, og legg kanten (B γ, [n, n]) til agenda. 5. mars 2012 8

Make-predictions, fig. 13.17 5. mars 2012 9

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 5. mars 2012 10

5. mars 2012 11 Chart-algoritme, fig. 13.16

Struktur An edge is represented like: <edge> = (<dotted item>,<span>) <dotted item> = (<lhs>,<rhs found>,<rhs to find>) <span> = (<begin>,<end>) Examples: (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)) 12

Innpakning def ChartRecognize(words, grammar, strategy='td'): top = grammar.start() n = len(words) for edge in Chart(words, grammar, strategy): ((mother, found, to_find),(start, end)) = edge if mother == top and not to_find and start == 0 and end == n: return True return False def ChartParse(words, grammar, strategy='td'): top = grammar.start() chart = Chart(words, grammar, strategy) display(chart, words) 13

Initialize def 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))) 14

Add to chart while True: if not agenda: return chart else: edge = agenda.pop() if edge not in chart: chart.append(edge) ((mother, found, to_find),(start, end)) = edge if to_find: # active edge 15

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

Make predictions 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))) 17

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 5. mars 2012 18

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 Dermed behøver en bare bruke fundamentalregelen når en legger til inaktive/komplette kanter (og ser mot venstre) De aktive som ser mot høyre vil ikke se noen inaktive kanter Når en legger til aktive, må en lage nye aktive 5. mars 2012 19

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 5. mars 2012 20

CHART-PARSING FORMELL SPRÅKTEORI 5. mars 2012 21

Figure 16.2

Figure 16.1

Er naturlige språk regulære? Jfr. forelesning 3 Pumpelemma for regulære språk Eks.: a n b n ikke regulært Matche ( og ) ikke regulært: ((( ) ( ))( )((( ) ( ))( ))( )) Regulært Ikke regulært 5. mars 2012 24

Kontekstfrie språk Ikke kontekstfrie: a n b n c n a m b n c m d n ww Noen fakta: Hvis L1 og L2 er kontekstfrie, behøver ikke L1 L2 være kontekstfritt. Hvis L1 er kontekstfritt og L2 er regulært, så må L1 L2 være kontekstfritt. Hvis L1 er kontekstfritt, så er f[l1] kontekstfritt. (Fins et liknende pumpelemma for CF-språk, men ikke ta detaljene her.) 5. mars 2012 25

Er naturlige språk kontekstfrie? 5. mars 2012 26

Figure 16.5 En slik struktur kan avbildes på ww og kan derfor ikke være kontekstfri. Finnes slike strukturer i naturlig språk?

Sveitsertysk Viktig: Ordstilling Kasus Høytysk: wir dem Hans das Haus anstreichen halfen. 5. mars 2012 28

Argumentet Rekursivt: L2 (regulært) ST L2 F[ST L2] = a m b n c m d n er ikke kontekstfritt. Da kan ikke ST L2 være kontekstfritt. Siden L2 er regulært og ST L2 ikke er CF, kan ikke ST være CF 5. mars 2012 29

Er dette viktig? Viktig fordi Chomsky innførte CFG men argumenterte mot dem for naturlige språk (NL) og lagde andre typer grammatikker Men det har vist seg vanskelig å vise at NL ikke er kontekstfrie. Vi har gode parsingalgoritmer for CFG-er Mindre viktig fordi Kraftigere grammatikkformalismer, som LFG og HPSG: Hensiktsmessige for å beskrive NL Langt oppe i Chomskyhierarkiet, men effektive algoritmer for å prosessere dem 5. mars 2012 30