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

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

INF2820 Datalingvistikk V Gang 6.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

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

3/5/2012. Chart alternativ datastruktur. Fundamentalregelen. Chart-parsing. Bottom-up FORMELL SPRÅKTEORI. 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 V2012. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

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

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

INF2820-V2018 Oppgavesett 10 Gruppe 18.4

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

INF2820 Datalingvistikk V gang, 27.2 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 27.2 Jan Tore Lønning

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

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 V2012

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

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

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

INF 2820 V2016: 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 V2012. Jan Tore Lønning

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

UNIVERSITETET I OSLO

INF 2820 V2016: Innleveringsoppgave 3 hele

INF2820 Datalingvistikk V Gang 13.4 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 23.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 20.3 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF 2820 V2016: Innleveringsoppgave 3 del 1

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

Eksamen INF2820 Datalingvistikk, H2018, Løsningsforslag

INF2820 V2017 Oppgavesett 5 arbeidsoppgaver

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

INF2820 Datalingvistikk V Gang 30.3 Jan Tore Lønning

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

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

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

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

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

Oppgave 1 (samlet 40%)

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

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

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

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

INF2820 Datalingvistikk V Gang 16.3 Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

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

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

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

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF 2820 V2016: Obligatorisk innleverinsoppgave 1

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF 2820 V2018: Innleveringsoppgave 3

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

INF2820 Datalingvistikk V2014. 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 V gang, Jan Tore Lønning

INF3110 Programmeringsspråk

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

UNIVERSITETET I OSLO

INF 2820 V2018: Innleveringsoppgave 2

INF2820 V2017 Oppgavesett 6 Gruppe 7.3

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

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

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

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

INF2820 Datalingvistikk V2014. Jan Tore Lønning

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

INF2820 Datalingvistikk V2014. Jan Tore Lønning

Transkript:

INF2820 Datalingvistikk V2018 10. Gang 19.3 del 1 Jan Tore Lønning

I dag: to deler A. Active chart-parsing Fortsatt fra sist B. Tekstklassifisering 2

CHART-PARSING 3

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

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

«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] Predikerer 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 6

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

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

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 16, 2018 9

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

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 11

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 12

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 13

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 Vår måte å legge inn ordene på plasserer oss mellom BU1 (for ord) og BU0 (for regler) 14

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

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

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

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

Top down active chart-parsing Som ved Bottom-UP kombinere 3 typer operasjoner: 1. Lese ordene i setningen inn i agenda 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 16, 2018 19

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

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

. 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 * 16. mars [===================================] 2018 [0:3] S -> VP * 22

. 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 * 16. mars [===================================] 2018 [0:3] S -> VP * 23

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

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

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

I dag chart-parsing Fortsatt fra sist: Chart-parsing: hovedideer BU chart-parsing: algoritmen NLTKs ChartParser Enkel Python-implementasjon av BUChart TD chart-parsing CKY og Chart: Parsing vs anerkjenning 27

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/16/2018 Speech and Language Processing - Jurafsky and Martin 28

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 29

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) --------------------------------------------------------------------------- March 16, 2018 30

Catalantallet Antall binære trær over en streng av n mange ord In [9]: def catalan(n):...: cats=[0,1,1]...: for i in range(3, n+1):...: cats.append(sum([cats[j]*cats[(i-j)] for j in range(1, i)]))...: return cats...: In [10]: catalan(10) Out[10]: [0, 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862] 31

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

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') ------------------------------------------------------------------------------------ 33