INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv...

33
INF2820 Datalingvistikk – V2016 6. Gang - 24.2 Jan Tore Lønning

Transcript of INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv...

Page 1: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

INF2820 Datalingvistikk – V2016 6. Gang - 24.2 Jan Tore Lønning

Page 2: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

PARSING – DEL 1

2

Page 3: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

I dag

• Hva er parsing? • Høyre- og venstreavledninger • Recursive-Descent parser (top-down) • Shift-Reduce parser (bottom-up) • Pythonimplementasjon: Shift-Reduce Recognizer • Svakheter ved RD- og SR-parsing

24. februar 2016 3

Page 4: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Parsing

• Gitt en grammatikk G og streng s

• Spm1: Er s ∈L(G) • Spørsmål om anerkjennelse (”recognition”)

• Spm2:

• ”Hvorfor er s ∈L(G)?” • ”Hva er frasestrukturen til s i G?” • Finn alle trær i T(G) som har s som utkomme (”yield”) • Parsing

24. februar 2016 4

Page 5: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Ulike typer parsere

• ‘’Back-tracking’’-parsere • Recursive Descent Parser

• Strategi: Ovenifra og ned (‘’Top-down’’) • Shift-Reduce Parser

• Strategi: Nedenifra og opp (‘’Bottom-Up’’)

• Tabellparsere • CKY • Chartparsere

• Earleys algoritme

5

Page 6: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

I dag

• Hva er parsing? • Høyre- og venstreavledninger • Recursive-Descent parser (top-down) • Shift-Reduce parser (bottom-up) • Pythonimplementasjon: Shift-Reduce Recognizer • Svakheter ved RD- og SR-parsing

24. februar 2016 6

Page 7: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Eksempel: Avledning

• SNP VP Det N VP the N VP the dog VP the dog V NP PP the dog saw NP PP the dog saw Det N PP the dog saw a N PP the dog saw a man PP the dog saw a man P NP the dog saw a man in NP the dog saw a man in Det N the dog saw a man in the N the dog saw a man in the park

• Flere avledninger av samme streng, for eksempel: • S NP VP NP V NP PP NP V NP P NP

NP V NP P Det N NP V NP P Det park … • …

24. februar 2016 7

Page 8: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Høyre- og venstreavledninger • Til hvert tre svarer det mange avledninger. • For kontekstfrie grammatikker er forskjellene mellom

avledninger som svarer til samme tre uinteressante.

• En avledning er en venstreavledning (”leftmost derivation”) hvis vi alltid ekspanderer ikke-terminalen lengst til venstre.

• Høyreavledning defineres tilsvarende.

24. februar 2016 8

Til ethvert tre generert av grammatikken svarer det • nøyaktig en venstreavledning • og nøyaktig en høyreavledning.

Page 9: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

24. februar 2016 9

Venstreavledning: S NP VP Det N VP the N VP the dog VP the dog V NP PP the dog saw NP PP the dog saw Det N PP the dog saw a N PP the dog saw a man PP the dog saw a man P NP the dog saw a man in NP the dog saw a man in Det N the dog saw a man in the N the dog saw a man in the park

Høyreavledning: S NP VP NP V NP PP NP V NP P NP NP V NP P Det N NP V NP P Det park NP V NP P the park NP V NP in the park NP V Det N in the park NP V Det man in the park NP V a man in the park NP saw a man in the park Det N saw a man in the park Det man saw a man in the park the dog saw a man in the park

Eksempel: VF og HF

Page 10: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

I dag

• Hva er parsing? • Høyre- og venstreavledninger • Recursive Descent parser (top-down) • Shift-Reduce parser (bottom-up) • Pythonimplementasjon: Shift-Reduce Recognizer • Svakheter ved RD- og SR-parsing

24. februar 2016 10

Page 11: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Recursive Descent parser

• Lager en venstreavledning • Bygger et tre:

• Fra toppen (”top-down”) • Fra venstre mot høyre

• Merk

• Tilstrekkelig å bare se på venstreavledninger fordi de svarer til trær

• Streber mot tidligst mulig å sjekke mot input-data • Et trinn er ikke-deterministisk: Velg en regel!

• Dette gir et søkerom å holde orden på

24. februar 2016 11

Page 12: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Venstreavledning

S NP VP Det N VP the N VP the dog VP the dog V NP PP the dog saw NP PP the dog saw Det N PP the dog saw a N PP the dog saw a man PP the dog saw a man P NP the dog saw a man in NP the dog saw a man in Det N the dog saw a man in the N the dog saw a man in the park

Datastruktur S the dog saw a man in the park NP VP the dog saw a man in the park Det N VP the dog saw a man in the park the N VP the dog saw a man in the park N VP dog saw a man in the park dog VP dog saw a man in the park VP saw a man in the park V NP PP saw a man in the park saw NP PP saw a man in the park NP PP a man in the park Det N PP a man in the park a N PP a man in the park N PP man in the park man PP man in the park PP in the park P NP in the park in NP in the park NP the park Det N the park the N the park N park park park # #

24. februar 2016 12

Page 13: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Algoritme – ikke-deterministisk

• Struktur: • Frontier: De symbolene det gjenstår å finne • Words: Resten av input som så langt ikke er prosessert

• Intialisering • Words:= Inputordene • Frontier:= list(’S’)

• Løkke: • Hvis Frontier=Words=ε: stopp med suksess! • Hvis first(Words)=first(Frontier):

• Words:=rest(Words), Frontier:=rest(Frontier) • Hvis first(Frontier) er en ikke-terminal B,

• velg en regel B β, og la Frontier:= β + rest(Frontier)

24. februar 2016 13

Page 14: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Søkerom

24. februar 2016 14

Recursive Descent: • Deterministisk • Dybde-først:

Følg det alternativet du har valgt til bunns før du prøver det neste

Page 15: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Demo

• nltk.app.rdparser()

15 24. februar 2016

Page 16: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

En underklasse av CFG-er • I lingvistikk er det vanlig å skille mellom

1. Leksikon: ordene og deres egenskaper 2. Syntaktiske regler: relaterer syntaktiske kategorier

• Modelleres i CFG ved å bare ha regler av to typer 1. Høyresiden består av en terminal: Det ‘the’ 2. Høyresiden inneholder bare ikke-terminaler: S NP VP

• De fleste CFG-grammatikker vi vil se har denne formen • I mangel av et bedre navn vil vi si at en slik grammatikk er

på ‘’Standardform’’

16

Page 17: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Egenskaper Til enhver CFG G1 fins en CFG G2 på standardform s.a. L(G1) = L(G2)

Fremgangsmåte, gitt G1: • For enhver terminal t

• innfør ny ikke-terminal Xt

• og regel Xt t • For enhver regel A α der

lengden av α er ≥ 2: • Skift enhver terminal t i α med

korresponderende ikke- terminal Xt

Eks: • Skift:

• NP NP and NP • Med:

• Xand and • NP NP Xand NP • der Xand er ny ikke-terminal

• Skift: • P ved siden av

• Med • P Xved Xsiden Xav • Xved ved • Xsiden siden • Xav av

• Tilsv. for alle regler

17

Page 18: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

En noe forbedret algoritme

• Med mange (f.eks. 20 000) regler på formen N cat, N dog, N man, etc. blir algoritmen svært langsom.

• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words,

• se på alle regler av formen X w, for en eller annen X: (typisk max 10)

• Er X først i Frontier? I så fall fjern w fra Words og X fra Frontier og fortsett.

18 24. februar 2016

Page 19: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Algoritme – grammatikk standardform

• Struktur: • Frontier: De symbolene det gjenstår å finne • Words: Resten av input som så langt ikke er prosessert

• Intialisering • Words:= Inputordene • Frontier:= list(’S’)

• Løkke: • Hvis Frontier=Words=ε: stopp med suksess! • Hvis first(Words)=w, first(Frontier)=F og det fins en leksikalsk

regel F w: • Words:=rest(Words), Frontier:=rest(Frontier)

• Hvis first(Frontier) er en ikke-terminal B, • velg en (ikkeleksikalsk) regel B β, og la Frontier:= β + rest(Frontier)

24. februar 2016 19

Page 20: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Problemer for RD-parsing

1. Venstrerekursjon: • Hvordan takler parseren

• N’ AP N’ • N’ N’ PP • ?

2. Dobbeltarbeid: • Som en del av en overordnet gal analyse kan den

finne riktige deler, men disse blir glemt 3. Prøving og feiling som er litt blind

24. februar 2016 20

Page 21: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

I dag

• Hva er parsing? • Høyre- og venstreavledninger • Recursive-descent parser (top-down) • Shift-Reduce parser (bottom-up) • Pythonimplementasjon: Shift-Reduce Recognizer • Svakheter ved RD- og SR-parsing

24. februar 2016 21

Page 22: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Datastruktur

Høyreavledning S NP VP NP V NP PP NP V NP P NP NP V NP P Det N NP V NP P Det park NP V NP P the park NP V NP in the park NP V Det N in the park NP V Det man in the park NP V a man in the park NP saw a man in the park Det N saw a man in the park Det man saw a man in the park the dog saw a man in the park

Datastruktur

S # NP VP # NP V NP PP # NP V NP P NP # NP V NP P Det N # NP V NP P Det park # NP V NP P Det park NP V NP P the park NP V NP P the park NP V NP in the park NP V NP in the park NP V Det N in the park NP V Det man in the park NP V Det man in the park NP V a man in the park NP V a man in the park NP saw a man in the park NP saw a man in the park Det N saw a man in the park Det dog saw a man in the park Det dog saw a man in the park the dog saw a man in the park # the dog saw a man in the park

24. februar 2016 22

shift

reduce

Page 23: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Bottom-up: Shift-Reduce parser • Struktur:

• Words: en liste av ord (terminaler) • Stack: en stack av symboler (terminaler og ikketerminaler) • Vanlig notasjon: Stack | Words

• (toppen av stacken til høyre i Stack) • Start:

• Words:= ordene i setningen som skal analyseres • Stack:= tom

• Løkke: • Hvis Words=[] og Stack=[S]: stopp med suksess! • Hvis mulig, gjør en av følgende:

• (Shift:) Hvis Words=/=[], La Stack:=Stack+ first(Words) og Words:=rest(Words)

• (Reduce:) Hvis det fins α, β, B, en regel B β og Stack= α + β: la Stack= α + B

24. februar 2016 23

Page 24: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Bottom-up: Shift-Reduce parser

• ε | Kim saw the girl with the telescope • … • NP V Det | girl with the telescope • NP V Det girl| with the telescope (SHIFT) • NP V Det N| with the telescope (REDUCE) • NP V NP| with the telescope (REDUCE) • …

24. februar 2016 24

Page 25: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

I dag

• Hva er parsing? • Høyre- og venstreavledninger • Recursive-descent parser (top-down) • Shift-reduce parser (bottom-up) • Pythonimplementasjon: Shift-Reduce Recognizer • Svakheter ved RD- og SR-parsing

24. februar 2016 25

Page 26: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

24. februar 2016 26

def recognize(grammar, stack, rwords, trace): if rwords==[] and len(stack)==1 and stack[0]==grammar.start(): return True else: for p in grammar.productions(): rhs = list(p.rhs()) n = len(rhs) if stack[-n:] == rhs: newstack = stack[0:-n] newstack.append(p.lhs()) if recognize(grammar, newstack, rwords,trace): return True if not len(rwords) == 0: newstack = stack[:] newstack.append(rwords[0]) if recognize(grammar, newstack, rwords[1:], trace): return True

return False

Page 27: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Fra anerkjenner til parser

• La stacken bestå av deltrær • ‘’Shift’’ som før

27

Stack: 4 elements Remaining input

Page 28: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Fra anerkjenner til parser • La stacken bestå av deltrær • ‘’Shift’’ som før • Reduksjon:

• For hver av de n øverste deltrærne t1, t2, …, ti…, tn på stacken:

• Ta merkelappen li på toppnoden • Hvis det finnes en regel

X l1, l2, …, li…, ln • fjern t1,…, ti…, tn fra toppen av stacken • Lag et tre t med:

• X som merke på mora • t1,…, ti…, tn som døtre

• Push t på toppen av stacken

28

Page 29: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Demo

• nltk.app.srparser()

29 24. februar 2016

Page 30: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Algoritme – ikke-deterministisk • To plasser for valg/ikke-determinisme:

• Skal vi flytte eller redusere? • Hva skal vi velge når vi har flere valg for reduksjon ?

• Eks: • NP DET N • NP N

• Hvis grammatikken er på standardform, kan algoritmen gjøres noe mer effektiv:

• Hver gang vi ”shifter” et ord over på stacken, må vi redusere, • Mao. Det eneste stedet på stacken vi tillater en terminal er på toppen.

24. februar 2016 30

Page 31: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

I dag

• Hva er parsing? • Høyre- og venstreavledninger • Recursive Descent parser (top-down) • Shift-Reduce parser (bottom-up) • Pythonimplementasjon: Shift-Reduce Recognizer • Svakheter ved RD- og SR-parsing

24. februar 2016 31

Page 32: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

Problemer spesielt for Shift-Reduce

• Unære produksjonsregler: • Shift-Reduce kan tillate disse, men en må sjekke at

det ikke er cykler av unære regler i grammatikken: • A B • B A

• Tomme produksjonsregler:

• NP DET N PPS • PPS PP PPS • PPS #

• Når skulle vi foreslå dem? • Hvor mange? Iterasjon?

32

Page 33: INF2820 Datalingvistikk – V2016...• Forbedring hvis grammatikk på standardform • Ikke omskriv de leksikalske reglene X w • For et ord w først i Words, • se på alle regler

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 24. februar 2016 33