INF2820 Datalingvistikk V gang, Jan Tore Lønning

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

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 20.3 Jan Tore Lønning

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

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

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

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 V2012

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

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 23.3 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

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

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

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang 13.4 Jan Tore Lønning

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

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

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

UNIVERSITETET I OSLO

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

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

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

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

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

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

INF 2820 V2018: Innleveringsoppgave 3

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

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.

INF2820 V2017 Oppgavesett 5 arbeidsoppgaver

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

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

INF5820. Language technological applications. H2010 Jan Tore Lønning

Obligatorisk oppgave 4, INF2820, 2014

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

INF2820 Datalingvistikk V2017 Forelesning 1.1, 16.1 Jan Tore Lønning

Slope-Intercept Formula

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF 2820 V2016: Obligatorisk innleveringsoppgave 3

INF2820 Datalingvistikk V Gang, del Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Dynamic Programming Longest Common Subsequence. Class 27

INF2820 Datalingvistikk V2016. Jan Tore Lønning

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

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

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

INF2820 Datalingvistikk V2018 Forelesning 1 del 1, 15. jan. Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

Vekeplan 4. Trinn. Måndag Tysdag Onsdag Torsdag Fredag AB CD AB CD AB CD AB CD AB CD. Norsk Matte Symjing Ute Norsk Matte M&H Norsk

INF2820 Datalingvistikk V2014. Jan Tore Lønning

INF2820 Datalingvistikk V2014. Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

INF 2820 V2016: Innleveringsoppgave 3 hele

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V forelesning, 30.1 Jan Tore Lønning

INF2820 Datalingvistikk V2014. Jan Tore Lønning

Hvor mye teoretisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

INF2820 Datalingvistikk V2016. Jan Tore Lønning

Transkript:

INF2820 Datalingvistikk V2014 9. gang, 13.3.2014 Jan Tore Lønning

I dag Chart parsing Implementasjon (Earley s algoritme) Parsing vs anerkjenning For CKY og chart Trekkbaserte ( feature-based )grammatikker Motivasjon: begrensninger i kontekstfrie grammatikker for naturlige språk Eksempler 2

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

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

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 5

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

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 7

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

TD Add to chart Fundamental rule Same as BU 9

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 10

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 12. mars 2014 11

I dag Chart parsing Implementasjon (Earley s algoritme) Parsing vs anerkjenning For CKY og chart Trekkbaserte ( feature-based )grammatikker Motivasjon: begrensninger i kontekstfrie grammatikker for naturlige språk Eksempler 12

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) 12. mars 2014 13

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 12. mars 2014 14

I dag Chart parsing Implementasjon (Earley s algoritme) Parsing vs anerkjenning For CKY og chart Trekkbaserte ( feature-based )grammatikker Motivasjon: begrensninger i kontekstfrie grammatikker for naturlige språk Eksempler 15

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

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 17

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 12, 2014 18

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

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

I dag Chart parsing Implementasjon (Earley s algoritme) Parsing vs anerkjenning For CKY og chart Trekkbaserte ( feature-based )grammatikker Motivasjon: begrensninger i kontekstfrie grammatikker for naturlige språk Eksempler 21

Agreement (no: samsvar) By agreement, we have in mind constraints that hold among various constituents that take part in a rule or set of rules For example, in English, determiners and the head nouns in NPs have to agree in their number. This flight Those flights *This flights *Those flight Speech and Language Processing - Jurafsky and Martin 22 3/12/2014

Verb Phrases English VPs consist of a head verb along with 0 or more following constituents which we ll call arguments. Speech and Language Processing - Jurafsky and Martin 23 3/12/2014

Subcategorization But, even though there are many valid VP rules in English, not all verbs are allowed to participate in all those VP rules. We can subcategorize the verbs in a language according to the sets of VP rules that they participate in. This is a modern take on the traditional notion of transitive/intransitive. Modern grammars may have 100s or such classes. Speech and Language Processing - Jurafsky and Martin 24 3/12/2014

Subcategorization Sneeze: John sneezed Find: Please find [a flight to NY] NP Give: Give [me] NP [a cheaper fare] NP Help: Can you help [me] NP [with a flight] PP Prefer: I prefer [to leave earlier] TO-VP Told: I was told [United has a flight] S Speech and Language Processing - Jurafsky and Martin 25 3/12/2014

Possible CFG Solution Possible solution for agreement. Can use the same trick for all the verb/vp classes. SgS -> SgNP SgVP PlS -> PlNp PlVP SgNP -> SgDet SgNom PlNP -> PlDet PlNom PlVP -> PlV NP SgVP ->SgV Np 3/12/2014 Speech and Language Processing - Jurafsky and Martin 26

Hvorfor ikke? F.eks. NLTK ch.9, ex. 8 S NP_SG VP_SG S NP_PL VP_PL NP_SG Det_SG N_SG NP_PL Det_PL N_PL VP_SG V_SG VP_PL V_PL Det_SG 'this' Det_PL 'these' N_SG 'dog' N_PL 'dogs' V_SG 'runs' V_PL 'run' Problem Eksplosjon av regler NP DET N 16 regler i tysk (4 kasus*(3 genus i sg + pl) NPs: 1., 2., 3. person Manglende generalisering: De 16 reglene har mye felles March 12, 2014 27

I dag Chart parsing Implementasjon (Earley s algoritme) Parsing vs anerkjenning For CKY og chart Trekkbaserte ( feature-based )grammatikker Motivasjon: begrensninger i kontekstfrie grammatikker for naturlige språk Eksempler 28

Trekk ( features ) trinn for trinn NLTK ch.9, ex. 8 S NP_SG VP_SG S NP_PL VP_PL NP_SG Det_SG N_SG NP_PL Det_PL N_PL VP_SG V_SG VP_PL V_PL Det_SG 'this' Det_PL 'these' N_SG 'dog' N_PL 'dogs' V_SG 'runs' V_PL 'run' Kategorier og trekk S NP[NUM=sg] VP[NUM=sg] S NP[NUM=pl] VP[NUM=pl] NP[NUM=sg] Det[NUM=sg] N[NUM=sg] NP[NUM=pl] Det[NUM=pl] N[NUM=pl] VP[NUM=sg] V[NUM=sg] VP[NUM=pl] V[NUM=pl] Det[NUM=sg] 'this' Det[NUM=pl] 'these' N[NUM=sg] 'dog' N[NUM=pl] 'dogs' V[NUM=sg] 'runs' V[NUM=pl] 'run' March 12, 2014 29

Trekk trinn for trinn 2 Kategorier og trekk S NP[NUM=sg] VP[NUM=sg] S NP[NUM=pl] VP[NUM=pl] NP[NUM=sg] Det[NUM=sg] N[NUM=sg] NP[NUM=pl] Det[NUM=pl] N[NUM=pl] VP[NUM=sg] V[NUM=sg] VP[NUM=pl] V[NUM=pl] Saml sammen likheter S NP[NUM=?x] VP[NUM=?x] NP[NUM=?x] Det[NUM=?x] N[NUM=?x] VP[NUM=?x] V[NUM=?x] Det[NUM=sg] 'this' Det[NUM=pl] 'these' N[NUM=sg] 'dog' N[NUM=pl] 'dogs' V[NUM=sg] 'runs' V[NUM=pl] 'run' Det[NUM=sg] 'this' Det[NUM=pl] 'these' N[NUM=sg] 'dog' N[NUM=pl] 'dogs' V[NUM=sg] 'runs' V[NUM=pl] 'run' March 12, 2014 30

Intuitiv tolkning CFG S NP VP Med trekk S NP[NUM=?x] VP[NUM=?x] Hvis words[i,j] er en NP og words[j,k] er en VP Så kan words[i,k] være en S Hvis words[i,j] er en NP og words[j,k] er en VP og NP sin NUM = VP sin NUM Så kan words[i,k] være en S March 12, 2014 31

Mot en formalisering Formelt: Kan en kategori ha flere enn ett trekk? Hvilke verdier kan et trekk ta? Hva er de mulige grammatikkreglene? Hvordan skal vi tolke grammatikkreglene? Anvendelser: Hvordan skal en grammatikk med trekk for et gitt naturlig se ut? Hva mer kan trekk brukes til? Generaliseringer Grammatikker for språk som ikke er kontekstfrie Semantiske representasjoner Komputasjonelt: Hvordan kan trekkgrammatikker parses? March 12, 2014 32

Flere enn ett trekk i en kat., eks: tysk S NP[CASE=nom, NUM=?x, PERS=?y] VP[NUM=?x, PERS=y?] NP[CASE=?z,NUM=?x, PERS=3rd] Det[CASE=?z,NUM=?x, GEN=?u] N[CASE=?z,NUM=?x, GEN=?u] VP[NUM=?x] V[SUBC= dtv, NUM=?x] NP[CASE=dat] NP[CASE=acc] Det[NUM=sg, CASE=nom, GEN=mask] 'der' 33