2 Du kan svare på norsk, dansk, svensk eller engelsk. Du skal besvare alle spørsmålene. Vekten på de ulike spørsmålene er oppgitt. Du bør lese gjennom hele settet slik at du kan stille spørsmål til faglærerne når de kommer i tilfelle noe er uklart. Hvis du føler noen forutsetninger mangler, lag dine egne og redegjør for dem! Oppgave 1 Spørsmål 1.1 (10%) Gitt det regulære uttrykket: a((bcd)+(cd))*cd (Symbolet + står her for disjunksjon som i JFLAP. Andre steder brukes, eller ). Lag en ikkedeterministisk endelig tilstandsautomat (NFA) som beskriver samme språk som det regulære uttrykket. Spørsmål 1.2 (10%) Er automaten deterministisk? Hvis ikke, lag også en deterministisk endelig tilstandsautomat (DFA) som beskriver det samme språket
3 Spørsmål 1.3 (10%) En ikke-deterministisk tilstandsautomat (NFA) M over et alfabet A beskriver et språk L(M). Hvis vi skal lage et program som skal avgjøre om en streng w av symboler fra A er i L(M) eller ikke, er en mulighet først å finne en deterministisk automat N som er slik at L(N)=L(M). En annen mulighet er å bruke en algoritme som bruker en beskrivelse av M direkte og ser om w er i L(M), og det er denne tilnærmingen vi skal bruke her. Beskriv hovedideene i en slik algoritme. Mer bestemt, beskriv datastrukturen du vil bruke og trinnene algoritmen skal utføre. Du behøver ikke å skrive kode. Hovedideen er at vi leser input fra venstre mot høyre. For hvert trinn tar vi vare på en mengde tilstander, alle de tilstandene automaten kunne ha vært i etter å ha lest så langt i input. Når vi har lest hele input, aksepterer vi denne hvis minst en av tilstandene maskinen kunne vært i, er en aksepterende tilstand. Datastrukturen består av to elementer: - En mengde av tilstander: Q - Resten av strengen som skal aksepteres: w Start: - Q = epsilontillukningen til {q0} der q0 er begynnertilstanden - w er hele strengen Løkke: Akseptering - hvis w = ε (det tomme ordet) - og det fins en q i Q som er en aksepterende tilstand (sluttilstand): o aksepter Trekk - hvis w = /= ε, og Q =/= : - hvis s er første element i w, og w' er resten av w (mao. w =sw') o la ny w være w' o la ny Q være epsilontillukningen til δ(q1, s) δ(q2, s) δ(qn, s) der Q={q1, q2,, qn} Ellers: forkast
4 Oppgave 2 La gramatikk G være: S -> NP VP VP -> VI VP -> VTV NP VP -> VS CP CP -> C S NP -> 'dyret' 'barnet' 'Kari' 'Ola' VI -> 'sov' 'smilte' 'danset' VTV -> 'kjente' 'likte' 'klappet' VS -> 'trodde' 'visste' 'fortalte' C -> 'at' Spørsmål 2.1 (10%) Er språket beskrevet av G endelig? Nei Vi ser at S NP VP NP VS CP NP VS C S NP VS C NP VS C S NP (VS C NP) n VI Kari ( fortalte at Ola) n sov for alle n Er språket beskrevet av G regulært? Begrunn svarene! Ja Ikke-terminalene NP, VI, VTV, VS, C forekommer bare som venstresider i regler der det er en enslig terminal på høyresiden. Hver av disse kan derfor betraktes som en forkortelse for en endelig gruppe terminaler. Da blir grammatikken høyrelinjær og språket regulært. (Å tegne en FSA eller å gi et regulært uttrykk virker like bra.)
5 Spørsmål 2.2 (10%) Vis hvordan en recursive descent parser (RD-parser) vil anerkjenne setningen: Kari fortalte at barnet likte dyret Du behøver bare vise de trekkene som fører til en vellykket anerkjenning og ikke de trekkene som ikke fører frem. Forklar hvilke datastrukturer du bruker. Datastruturen består av to sekvenser. Den første er en sekvens av symboler. Det kan være både terminaler og ikke-terminaler. Denne sekvensen kaller vi "Frontier". Det er det det gjenstår å finne. Den andre sekvensen er bare terminaler. Det er resten av input. Det som ikke er anslysert. Da går anerkjenningen slik Frontier Restinput Utført aksjon S Kari fortalte at barnet likte dyret NP VP Kari fortalte at barnet likte dyret S NP VP Kari VP Kari fortalte at barnet likte dyret NP Kari VP fortalte at barnet likte dyret Match VS CP fortalte at barnet likte dyret VP VS CP fortalte CP fortalte at barnet likte dyret VS fortalte CP at barnet likte dyret match C S at barnet likte dyret CP C S at S at barnet likte dyret C at S barnet likte dyret match NP VP barnet likte dyret S NP VP barnet VP barnet likte dyret NP barnet VP likte dyret match VTV NP likte dyret VP VTV NP likte NP likte dyret VTV likte NP dyret match dyret dyret NP dyret # # match suksess
6 Spørsmål 2.3 (10%) Vi lurer på om følgende sekvens av ord er en grammatisk setning i grammatikken G: Kari fortalte Ola at barnet sov Vis hvordan en chart-parser kan besvare dette spørsmålet ved å konstruere et fullstendig chart for ordsekvensen. Her skal en skrive opp agenda og tegne chartet. Litt avhengig av strategi kan det f.eks. se ut som:. Kari.fortal. Ola. at.barnet. sov. [------]..... [0:1] 'Kari'. [------].... [1:2] 'fortalte'.. [------]... [2:3] 'Ola'... [------].. [3:4] 'at'.... [------]. [4:5] 'barnet'..... [------] [5:6] 'sov' [------]..... [0:1] NP -> 'Kari' * [------>..... [0:1] S -> NP * VP. [------].... [1:2] VS -> 'fortalte' *. [------>.... [1:2] VP -> VS * CP.. [------]... [2:3] NP -> 'Ola' *.. [------>... [2:3] S -> NP * VP... [------].. [3:4] C -> 'at' *... [------>.. [3:4] CP -> C * S.... [------]. [4:5] NP -> 'barnet' *.... [------>. [4:5] S -> NP * VP..... [------] [5:6] VI -> 'sov' *..... [------] [5:6] VP -> VI *.... [-------------] [4:6] S -> NP VP *... [--------------------] [3:6] CP -> C S *
7 Oppgave 3 Spørsmål 3.1 (10%) Vi skal lage en trekkbasert grammatikk ("feature-based grammar") (også omtalt som unifikasjonsgrammatikk) for et lite fragment av engelsk. Leksikon skal inneholde noen egennavn, f.eks. Kim, Lee, Sandy noen intransitive verb, f.eks. sing, dance, sleep noen transitve verb, f.eks. admire, respect, see Verbene skal forekomme både i infinitt form (sing, sleep) og i fortidsform (sang, slept), og reglene skal beskrive enkle setninger i fortidsform, som Kim danced Sandy saw Lee I tillegg skal fragmentet inneholde de to verbene promise og persuade og setningsmønstrene Kim promised to dance Kim promised Sandy to dance Kim persuaded Sandy to dance Disse mønstrene er rekursive og fragmentet skal inneholde setninger som Kim persuaded Sandy to persuade Lee to promise Kim to dance Lag en trekkbasert grammatikk som oppfyller dette. % start S[+FIN] S[FIN=?f] -> NP VP[FIN=?f] VP[FIN=?f] -> IV[FIN=?f] VP[FIN=?f] -> TV[FIN=?f] NP VP[FIN=?f] -> PV[FIN=?f] VCOMP VP[FIN=?f] -> PPV[FIN=?f] NP VCOMP VCOMP -> 'to' VP[-FIN] NP -> 'kim' 'lee' 'sandy' IV[-FIN] -> 'run' 'dance' IV[+FIN] -> 'ran' 'danced' TV[-FIN] -> 'admire' 'respect' TV[+FIN] -> 'admired' 'respected' PV[-FIN] -> 'promise' PV[+FIN] -> 'promised' PPV[-FIN] -> 'promise' PPV[+FIN] -> 'promised' PPV[-FIN] -> 'persuade' PPV[+FIN] -> 'persuaded'
8 Spørsmål 3.2 (10%) Tegn opp treet grammatikken din tilskriver setningen: Sandy persuaded Lee to promise to dance Ta med alle trekk på nodene i treet.
9 Oppgave 4 Spørsmål 4.1 (10%) Vi tar utgangspunkt i følgende lille fcfg-grammatikk med semantikktrekk % start S S[SEM=<?vpsem(?npsem)>] -> NP[SEM=?npsem] VP[SEM=?vpsem] NP[SEM=?npsem] -> PN[SEM=?npsem] VP[SEM=?vpsem] -> IV[SEM=?vpsem] PN[SEM=<ola>] -> 'Ola' PN[SEM=<kari>] -> 'Kari' IV[SEM=<\x. sov(x)>] -> 'sov' IV[SEM=<\x.smilte(x)>] -> 'smilte' Denne grammatikken vil analysere noen svært enkle setninger og tilordne dem en logisk-semantisk representasjon. For eksempel vil Kari sov analyseres og tilordnes sov(kari). Utvid grammatikken med et par transitive og et par ditransitive verb slik at Kari likte Ola får analysen: likte(kari, ola), og Kari ga Ola Skriket får analysen: ga(kari, Ola, Skriket) Utvid også fragmente med konjunksjon og diskjunksjon slik at Kari likte Ola og Ola smilte får analysen: likte(kari, ola) & smilte(ola) og Kari likte Ola og Ola smilte eller Kari smilte får to analyser: likte(kari, ola) & (smilte(ola) smilte(kari)) (likte(kari, ola) & (smilte(ola)) smilte(kari) VP[SEM=<?vpsem(?npsem)>] -> TV[SEM=?vpsem] NP[SEM=?npsem] VP[SEM=<?vpsem(?o1sem)(?o2sem)>] -> DTV[SEM=?vpsem] NP[SEM=?o1sem] NP[SEM=?o2sem] TV[SEM=<\y x.beundret(x,y)>] -> 'beundret' TV[SEM=<\y x.likte(x,y)>] -> 'likte' DTV[SEM=<\y z x.ga(x, y, z)>] -> 'ga' DTV[SEM=<\y z x.overrakte(x,yz)>] -> 'overrakte' PN[SEM=<skriket>] -> 'Skriket' S[SEM=<?s1sem &?s2sem>] -> S[SEM=?s1sem] 'og' S[SEM=?s2sem] S[SEM=<?s1sem?s2sem>] -> S[SEM=?s1sem] 'eller' S[SEM=?s2sem]
10 Spørsmål 4.2 (10%) Omarbeid reglene og utvid fragmentet med flere regler slik at grammatikken også kan takle kvantifiserte nomenfraser og slik at, for eksempel Kari ga Ola et bilde får analysen exists x.(bilde(x) & ga(kari, Ola, x)) % start S S[SEM=<?npsem(?vpsem)>] -> NP[SEM=?npsem] VP[SEM=?vpsem] S[SEM=<?s1sem &?s2sem>] -> S[SEM=?s1sem] 'og' S[SEM=?s2sem] S[SEM=<?s1sem?s2sem>] -> S[SEM=?s1sem] 'eller' S[SEM=?s2sem] NP[SEM=<\X.X(?npsem)>] -> PN[SEM=?npsem] NP[SEM=<?dsem(?nsem)>] -> Det[SEM=?dsem] Nom[SEM=?nsem ] VP[SEM=?vpsem] -> IV[SEM=?vpsem] VP[SEM=<\s.?npsem(\o.?tvsem(s,o))>] -> TV[SEM=?tvsem] NP[SEM=?npsem] VP[SEM=<\s.?np1(\o1.(?np2(\o2.?tvsem(s,o1,o2))))>] -> DTV[SEM=?tvsem] NP[SEM=?np1] NP[SEM=?np2] Nom[SEM=?nsem] -> N[SEM=?nsem] PN[SEM=<ola>] -> 'Ola' PN[SEM=<kari>] -> 'Kari' IV[SEM=<sov>] -> 'sov' IV[SEM=<smilte>] -> 'smilte' TV[SEM=<likte>] -> 'likte' TV[SEM=<beundret>] -> 'beundret' DTV[SEM=<ga>] -> 'ga' DTV[SEM=<overrakte>] -> 'overrakte' Det[SEM=<\P Q.exists x.(p(x) & Q(x))>] -> 'et' Det[SEM=<\P Q.all x.(p(x) -> Q(x))>] -> 'ethvert' N[SEM=<hus>] -> 'hus' N[SEM=<barn>] -> 'barn' N[SEM=<dyr>] -> 'dyr' N[SEM=<bilde>] -> 'bilde' SLUTT