Göm menyn

729G09 Språkvetenskaplig databehandling

Lab 3, VT 2012


Laboration 3: Frasstrukturgrammatik

Syfte

Syftet med denna laboration är att ge övning i att modellera syntaktisk struktur med frasstrukturgrammatik för ett litet fragment av svenska. Specifikt kommer ni att skapa regler för enkla huvudsatser och bisatser, och olika varianter av nominalfraser, verbfraser och andra fraser i svenska.

Datorn används här som ett redskap för att kontrollera att de grammatiska regler ni skriver fungerar tillsammans som ni har tänkt. Systemet som används heter parse.pl och körs från kommandoraden. Systemet tar en eller flera meningar som indata och levererar noll, en eller flera frasstrukturträd som utdata, beroende på hur många analyser som grammatiken genererar. Mer detaljer om parsern finns här.

Förberedelser

  • Läs kurslitteraturen om frasstrukturgrammatik:
    • Elementa i Generativ Grammatik, särskilt kapitlen 4-7
    • avsnitten om frasstrukturgrammatik i Nusvensk grammatik.
    • Föreläsningsanteckningar från föreläsningen om frasstrukturgrammatik

Genomförande

Kopiera filerna i katalogen ~729G09/www-pub/vt12/Resurser/Lab3/ till din egen arbetskatalog. Det ska bli fem stycken:

  • parse.pl
  • parseThisOne.pl
  • grammatik
  • testmeningar
  • viewGraph.sh

Du gör parsern exekverbar genom att ställa dig i arbetskatalogen och skriva:

> chmod u+x parse.pl
> chmod u+x parseThisOne.pl

Du kan testa att det fungerar genom att skriva:

  • > parse.pl grammatik testmeningar 1-2
  • > parseThisOne.pl grammatik 'rut skrattade'

Grammatikfilen

I filen grammatik finns en uppsättning frasstrukturregler och ett lexikon som ser ut på följande sätt:


 

# Regler

S -> NP VP
NP -> DT NN
NP -> EN
VP -> IV
VP -> TV NP

# Lexikon

DT: {en, ett, ingen, inget}
EN: {rut, rune}
NN: {bil, cykel, bilen, cykeln}
IV: {skrattade, försvann}
TV: {köper, har}


Grammatiken är skriven på liknande sätt som i boken Elementa i generativ grammatik. Du kan dock inte använda parenteserna (, ), {, } för att ange optionalitet eller alternativ i regler. Den enda symbolen förutom kategorisymbolerna som kan förekomma i reglerna är således omskrivningssymbolen '->'.

I lexikonet listas alla ord av en viss ordklass som en mängd. Ordklassymbolen följs av ett kolon (:) och ett mellanslag och mängden omsluts med parentestecknen { }. Orden i mängden ska separeras med ett kommatecken (,).

Rader som börjar med #-tecknet är kommentarer och läses inte av parsern.

I den givna grammatiken används kategorisymbolerna med följande tänkta tolkningar:

S   huvudsats
NP   nominalfras
VP   verbfras
DT   artikel (determinerare)
EN   egennamn
NN   substantiv (nomen)
IV   intransitivt verb
TV   transitivt verb

För att lösa uppgifterna behöver du definiera flera kategorier. En lista på rekommenderade symboler finns på denna sida.

Utdata från parsern

Parsern ger upplysning om hur många analyser den genererat för varje mening i indata. Analyserna visas i form av frasstrukturträd i följande format, här för meningen 'rune har ingen bil':

S{
--NP{
----EN[rune]
----}
--VP{
----TV[har]
----NP{
------DT[ingen]
------NN[bil]
------}
----}
--}

Här säger alltså trädet att meningen (S) består av en nominalfras (NP) och en verbfras (VP). Den senare består av ett transitivt verb (TV) och en nominalfras (NP) etc.

 

Visualisera graferna

Det finns ett experimentellt stöd för att kunna visualisera träden grafiskt, som kan vara till hjälp om trädformatet ovan är svårt att tolka. För att kunna använda det gör filen viewGraph.sh körbar:

> chmod u+x viewGraph.sh
Ni behöver även lägga till en modul för programmet graphviz, som används för visualiseringen:

> module initadd office/graphviz

> module add office/graphviz

Visualiseringen sker i steg, först skapar parse-kommandot visualiseringsfiler för alla träd som skapats, sedan tar kommandot viewGraph.sh in en sådan fil, skapar en bildfil, och öppnar den i porgrammet Ghostview. För att visualiseringsfiler ska skapas behövs ett extra argument till kommandona parse.pl och parseThisOne.pl. Det kommandot står för namnet på visualiseringsfilerna. Till exempel:

  • > parse.pl grammatik testmeningar 1-2 minGraf
  • > parseThisOne.pl grammatik 'rut skrattade' minGraf

Om man kör kommandot ovan så kommer det i det första fallet att skapas filer som heter minGraf.x.y, där x är en siffra som står för meningsnumret, och y är en siffra som står för vilken av träden det gäller ifall det finns flera tolkningar, där 0 är den första tolkningen. Till exempel är minGraf.2.0 den första tolkningen av mening nummer 2. Om man kör parseThisOne.pl så kallas filen minGraf.y, där y är tolkningensnumret.

För att visa graferna används viewGraph.sh, som gör om visualiseringsfilen till en bildfil i ps (sparas som t.ex. minGraf.2.0.ps), och sedan öppnar grafbilden i programmet Ghostview. Argumentet till viewGraph.sh är en visualiseringsfil, till exempel:

> viewGraph.sh minGraf.2.0 &

 

Uppgifter

Uppgift 1

Skriv regler och lexikon så att de grammatiska satserna nedan accepteras och analyseras korrekt. De ogrammatiska, som är märkta med en asterisk (*) ska slås ut, dvs. grammatiken ska inte kunna generera meningen som en ordsekvens av kategorin 'S'.

Grammatiska satser

  1. rune ska köpa en ny soffa
  2. rut är hans smakråd
  3. de tar bilen till det nya köpcentret
  4. resan till köpcentret går fort
  5. rune hittar en soffa som är ganska billig
  6. den är ljus och blommig
  7. rut tycker inte att den är så snygg
  8. hon säger att soffan inte passar till hans tapeter
  9. rune köper den och en bok om inredning
  10. han köper också några ljus
  11. rune är glad men rut är inte lika glad
  12. rut säger att hon tror att rune kommer ångra att han köpte soffan
  13. hans framtid är inte ljus

Ogrammatiska satser

  1. *rune köper
  2. *rut tycker soffan
  3. *rune som
  4. *de köper till köpcentret
  5. *han köper soffan inte
  6. *rut säger att rune ska köpa inte soffan

Rekommenderat arbetssätt

En möjlighet är att utvidga regler och lexikon med vad som behövs för varje ny mening. Ett mer systematiskt sätt är att identifiera fraser av olika typer från alla meningar och börja med de enklaste typerna:

  • adjektivfras,
  • nominalfras,
  • prepositionsfras
  • verbfras

innan ni går vidare till att analysera satser av olika slag. Om man skriver in t.ex. en nominalfras som argument till parseThisOne.pl kommer parsern att visa en analys för den, om grammatiken tillåter det.

Parsern är ett hjälpmedel, men inte nödvändig för att lösa uppgiften. Rita gärna upp den struktur du tycker att en sats eller fras ska ha, innan du använder parsern. Var också uppmärksam på strukturen hos de träd som genereras. Bara för att ett träd genereras behöver det ju inte vara en korrekt syntaktisk analys. Ni bör få med alla rimliga syntaktiska tolkningar av meningarna, men det är möjligt att det sker till priset av en eller annan mindre rimlig analys. Vid alla fall när er grammatik ger mer än en analys ska ni kommentera detta i er redovisning, beskriva skillnaden och diskutera om alla analyser är korrekta. Obs! Tänk på att det är skillnad mellan syntaktiskt rimliga tolkningar och semantiskt rimliga tolkningar.

Uppgift 2

Kompaktera dina regler med hjälp av optionalitets- och alternativsymboler, dvs () resp. { }, så som beskrivs i Elementa i Generativ Grammatik, kapitel 7. Denna uppgift måste du lösa på papper. Exempel på reduktioner du kan göra är:

  • Om en bestämning (B) till ett huvud (H) kan reglerna
    • HP -> B H, och
    • HP -> H,
    slås ihop till HP -> (B) H
  • Om två bestämningar (AB, CB) inte båda kan förekomma tillsammans, men stå i samma position relativt till ett huvud (H), som i reglerna
    • HP -> H AB
    • HP -> H CB
    kan dessa regler slås ihop till HP -> H {AB,CB}

För en liknande uppgift (med facit), se övning 1 och 2 i avsnitt 7.3 sid 59 i Elementa i generativ grammatik.

Uppgift 3 (VG-uppgift)

De regler ni har skrivit hanterar inte kongruensböjningen (se Nusvensk grammatik) i nominalfraser på ett bra sätt. De kan acceptera både en ny soffa och *en ny bord. Adjektiven ska även kongruensböjas då de står predikativt (t.ex. soffan är ny - sofforna är nya - *soffan är nya, eller soffan måste vara röd - *soffan får inte vara gula). Ge någon principiell lösning på hur ni skulle lösa problemet med att få med ovanstående utökningar till grammatiken. Ni behöver inte skriva en fullständig grammatik, men visa genom exempel på nya regler och kategorier, dvs. vilken typ av information som måste finnas med i lexikon och grammatik för att ovanstående utvidgningar ska fungera.

För godkänt

För att få godkänt ska följande villkor vara uppfyllda:

  • Följande meningar skall få exakt en analys som S: 1,2,4,5,6,7,9,10. Övriga meningar kan ha en eller flera analyser.
  • Alla syntaktiskt rimliga analyser av en mening ska vara med. Diskutera om alla även är semantiskt rimliga, enligt pkt 3 under Redovisning.
  • Ingen av de ogrammatiska meningarna 1-6 ska få någon analys som kategori S
  • Ord och fraser får inte vara uppenbart felkategoriserade.
  • Alla frasregler, utom samordningar, bör ha ett huvud av en kategori som är giltig för den frastypen.

För betyget VG

För betyget VG krävs även att VG-uppgiften är löst och lösningen redovisad med utförlig diskussion.

Redovisning

Redovisningen består av följande punkter:

  1. Er grammatik (regler och lexikon).
  2. Anteckna antalet analyser ni får med er grammatik för varje grammatisk mening 1-13 respektive de ogrammatiska 1-6. Redovisa med en lista som innehåller meningens nummer, meningen själv och antalet analyser.
  3. För de meningar som får mer än en analys redovisar ni de olika frasstrukturträden och hur de kan tolkas. Om ni anser någon analys vara inkorrekt, motiverar ni varför den är det och varför ni ändå måste få med den.
  4. För betyget VG ska ni även lämna in en skriftlig redovisning av er lösning till Uppgift 3.
  5. Redovisningen görs på papper i labbomslag med samtliga gruppmedlemmars underskrifter. Redovisningen lämnas till Lars, t.ex. i facket utanför hans dörr.

För laborationens deadline, se sidan med deadlines.

Sidansvarig: Lars Ahrenberg
Senast uppdaterad: 2012-03-05