INF2820 Datalingvistikk V2017 6. Gang - 20.2 Jan Tore Lønning
I dag Kontekstfrie grammatikker og naturlige språk (fortsatt fra sist) Kontekstfrie grammatikker og regulære språk Grammatikker og trær i NLTK Kontekstfrie grammatikker, avledninger og trær Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) 17. februar 2017 2
Eksempel: grammar1 17. februar 2017 3
Context-Free Grammars Det mest sentrale verktøyet i datalingvistikk 2/17/2017 Speech and Language Processing - Jurafsky and Martin 4
CFGs for naturlige språk CFG er en generell og fleksibel formalisme Hvordan kan vi best lage CFG for å modellere naturlige språk? Vanlig skille: Syntaktiske regler: Bare ikke terminaler på høyre side (HS) Leksikalske regler: Høyresiden består av bare en terminal Mange lingvistisk modeller antar at hver frase (hver HS) har et «head» (leder?) En del av disse antar igjen X bar modellen 5
X-bar En antagelse i flere grammatiske modeller/teorier En frase har tre nivåer: Full frase, eks. NP (= N ) Ord, eks N Midtnivå, eks. N (Called Nominal in J&M) Gjelder i prinsippet for all fraser: NP, VP, AP, PP Men ikke alle delene like hyppige for alle typer NP Det N N AP N N N PP VP V V V PP V V NP For generell form og mer informasjon, se Wikipedia 6
Eksempel: NP Det N NP=N N PP comp N PP Adju. A professor of physics from Germany Komplement: of physics Adjunct: from Germany Ikke: a professor from Germany of physics 17. februar 2017 7
Eksempel: VP VP V V V NP PP comp PP Adju. la beina på bordet på kontoret. 17. februar 2017 8
Komplementer (vs. modifikatorer) Komplement (argument): Kim gave the book to Mary Obligatorisk Eks, ugrammatisk: *Kim gave the book Kan ikke skifte med en annen preposisjon: *Kim gave the book from Mary Plasseres i X-bar-teori som Søster til X Datter til X Eks.: P P NP, eks. til skolen V V NP, eks. så Kari V V NP PP, eks. gave the book to Mary 9
Modifikatorer (vs. Komplementer) Modifikator: Kim sang in the garden Kan fjernes uten at det blir ugrammatisk Kan gjentas: sang in the garden with great joy Kan bruke annen preposisjon: sang with great joy Plasseres i X-bar-teori som Søster til X Datter til X Eks.: N N PP, eks. mannen med pistolen N AP N, eks. rød bil V V PP, eks. traff Kari på stasjonen Kan noen ganger være vanskelig å avgjøre om det er komplement eller modifikator 10
N =NP N =NOM DET A =AP N =NOM N =NOM P =PP A =AP N =NOM N P =PP 11
I dag Kontekstfrie grammatikker og naturlige språk Kontekstfrie grammatikker og regulære språk Grammatikker og trær i NLTK Kontekstfrie grammatikker, avledninger og trær Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) 17. februar 2017 12
Kontekstfrie og regulære språk Alle regulære språk er kontekstfrie Det fins kontekstfrie språk som ikke er regulære. Eksempel:L = {a n b n n >1} S ab S asb 17. februar 2017 13
Fra regulært til kontekstfritt S svarer til starttilstand En ikketerminal per tilstand: S, A1, A2, A3 En regel per transisjon: S a A1 A1 b A2 A2 b S A2 c A3 A3 c A1 En regel per sluttilstand A3 Ethvert regulært språk kan beskrives av en kontekstfri grammatikk 17. februar 2017 14
Kontekstfrie og regulære språk En CF grammatikk er høyrelinjær hviss: Høyresidene i reglene ikke inneholder mer enn en ikke-terminal. Og den må stå lengst til høyre Venstrelinjær defineres tilsvarende Hvis L=L(G) og G er høyrelinjær, så er L regulært. Hvis L=L(G) og G er venstrelinjær, så er L regulært. 17. februar 2017 15
Oppgave: venstrelinjær Lag en venstrelinjær grammatikk for denne FSA-en 17. februar 2017 16
Eksempel A = {a, b, c} S A S a A A b c A A c b A A a a B B b C C c C C a Lag NFA 17. februar 2017 17
Oppgave A = {d, a, n, v, w} S Aw S B n B B a B C d C A v A D n D D a D d Lag NFA 17. februar 2017 18
I dag Kontekstfrie grammatikker og naturlige språk Kontekstfrie grammatikker og regulære språk Grammatikker og trær i NLTK Kontekstfrie grammatikker, avledninger og trær Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) 17. februar 2017 19
Representasjon av grammatikk i NLTK Interaktiv innlesning >>> gram = nltk.cfg.fromstring(""" S > NP VP VP > V NP V NP PP PP > P NP V > 'saw' 'ate' 'walked' NP > PN Det N Det N PP 'I' PN > 'John' 'Mary' N > 'dog' 'man' 'telescope' 'park' P > 'in' 'by' 'on' 'with' Det > 'a' 'an' 'the' 'my' """) >>> Les fra fil: <name>.cfg S > NP VP VP > V NP V NP PP PP > P NP V > 'saw' 'ate' 'walked' NP > PN Det N Det N PP 'I' PN > 'John' 'Mary' N > 'dog' 'man' 'telescope' 'park' P > 'in' 'by' 'on' 'with' Det > 'a' 'an' 'the' 'my' Entering >>> gram = nltk.data.load( file:<name>.cfg ) February 17, 2017 20
Tilgang til grammatikken >>> gram <Grammar with 25 productions> >>> gram.start() S >>> for i in gram.productions(): print i S > NP VP VP > V NP VP > V NP PP PP > P NP V > 'saw' V > 'ate' V > 'walked' NP > PN Etc. >>> rule0 = gram.productions()[0] >>> rule0.lhs() S >>> rule0.rhs() (NP, VP) >>> rule5 = gram.productions()[5] >>> rule5 V > 'ate' >>> rule5.lhs() V >>> rule5.rhs() ('ate',) >>> February 17, 2017 21
Representasjon av trær i Python En mulig implementasjon ville være å bruke et par (tuppel) Et tre kan forstås som Et par av En streng Morens kategori En liste av trær døtrene Eller en streng et blad, en terminal (S, [(NP, [(Det, ['the']), (N, ['dog'])]), (VP, [(V, ['saw']), (NP, [(Det, ['a']), (N, ['man'])]), (PP, [(P, ['in']), (NP, [(Det, ['the']), (N, ['park'])] )])])]) February 17, 2017 22
NLTKs tre-klasse Klassen Tree utvider klassen List List-en brukes til døtrene: tre[0] er første datter, osv Utvidet med: Metoden tre.label() gir mors kategori Metoder for uttegning, prøv t.print() t.prettyr_print() t.draw() S VP NP NP ND TV ND barnet elsket kosedyret 17. februar 2017 23
I dag Kontekstfrie grammatikker og naturlige språk Kontekstfrie grammatikker og regulære språk Grammatikker og trær i NLTK Kontekstfrie grammatikker, avledninger og trær Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) 17. februar 2017 24
Eksempel: Avledning 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 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 17. februar 2017 25
Flertydighet Samme streng kan avledes på flere måter Er vi interessert i dette? Noen ganger Andre ganger ikke Interessant hvis de representerer ulike måter setningen er bygget opp på (=) ulike strukturer (trær) ulike betydninger ved flertydighet 17. februar 2017 26
Eksempel: grammar1 17. februar 2017 27
Trær Et lokalt tre: En node som ikke er et blad Alle døtrene Rekkefølgen mellom døtrene Kantene mellom mor og datter En regel B s1, s2,, sn tillater ( license ) et lokalt tre hvis og bare hvis det har formen: 17. februar 2017 28 B s1 s2.. sn
Trær En CFG G, generer et tre t hviss Toppen av t er merket med S Bladene er merket med terminaler Hvert lokalt tre er tillatt av en produksjonsregel T(G) for mengde av trær generert av G Utkomme ( yield ) av treet t er symbolene på bladene i riktig rekkefølge Forkortelse: hviss for hvis og bare hvis En streng w er avledbar fra G hviss w er utkomme til et tre i T(G). 17. februar 2017 29
Ekvivalens Definisjon To grammatikker, G1 og G2, er (svakt) ekvivalente hvis og bare hvis L(G1)=L(G2) G1 og G2 er sterkt ekvivalente hvis T(G1)=T(G2) 17. februar 2017 30
I dag Kontekstfrie grammatikker og naturlige språk Kontekstfrie grammatikker og regulære språk Grammatikker og trær i NLTK Kontekstfrie grammatikker, avledninger og trær Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) 17. februar 2017 31
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 17. februar 2017 32
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 33
I dag Kontekstfrie grammatikker og naturlige språk Kontekstfrie grammatikker og regulære språk Grammatikker og trær i NLTK Kontekstfrie grammatikker, avledninger og trær Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) 17. februar 2017 34
Eksempel: Avledning 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 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 17. februar 2017 35
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. Til ethvert tre generert av grammatikken svarer det nøyaktig en venstreavledning og nøyaktig en høyreavledning. 17. februar 2017 36
Eksempel: VF og HF 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 17. februar 2017 37
I dag Kontekstfrie grammatikker og naturlige språk Kontekstfrie grammatikker og regulære språk Grammatikker og trær i NLTK Kontekstfrie grammatikker, avledninger og trær Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) 17. februar 2017 38
Recursive Descent parser Lager en venstreavledning Tilsvarer å bygge 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å 17. februar 2017 39
S the dog saw a man in the park Datastruktur 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 Venstreavledning 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 S saw NP PP saw a man in the park NP VP NP PP a man in the park Det N VP Det N PP a man in the park the N VP a N PP a man in the park the dog VP N PP man in the park the dog V NP PP man PP man in the park the dog saw NP PP PP in the park the dog saw Det N PP P NP in the park the dog saw a N PP in NP in the park the dog saw a man PP NP the park the dog saw a man P NP Det N the park the dog saw a man in NP the N the park the dog saw a man in Det N N park the dog saw a man in the N park park the dog saw a man in the park # # 17. februar 2017 40
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) 17. februar 2017 41
Søkerom Recursive Descent: Deterministisk Dybde først: Følg det alternativet du har valgt til bunns før du prøver det neste 17. februar 2017 42
Demo nltk.app.rdparser() 17. februar 2017 43
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 44
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 X t og regel X t t For enhver regel A der lengden av er 2: Skift enhver terminal t i med korresponderende ikke terminal X t Eks: Skift: NP NP and NP Med: X and and NP NP X and NP der X and er ny ikke terminal Tilsv. for alle regler 45
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. 17. februar 2017 46
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) 17. februar 2017 47
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 (to be continued ) 17. februar 2017 48