Göm menyn

729G09 Språkvetenskaplig databehandling

Resurs, parse.pl


PARSE - en parser för kontextfri frasstrukturgrammatik
Introduktion

parse.pl är en bottom-up chart-parser för kontextfri frasstrukturgrammatik skriven i Perl. Den används i Laboration 3 i kursen 729G09 Språkvetenskaplig databehandling vid Linköpings universitet. För mer information hänvisas till kursansvarig, Lars Ahrenberg.

Att köra systemet

Parsern anropas med tre argument:

  • ett filnamn för en grammatikfil, dvs en fil med regler och lexikon,
  • ett filnamn för en meningsfil, dvs en fil med numrerade meningar,
  • en indexangivelse för en eller flera meningar i meningsfilen

Ett anrop kan se ut så här:

>parse.pl grammatik meningar 3

Då kommer mening nr 3 i filen meningar.txt att analyseras. Om man i stället skriver det tredje argumentet som ett intervall, kommer alla meningarna i intervallet att analyseras. För att analysera de fem första meningarna skriver man t.ex.

>parse.pl grammatik meningar 1-5

Grammatikfilen

Grammatikfilen förutsätts vara indelad i en del med regler och en del med ord, ett lexikon. Ett exempel på en grammatikfil visas här:

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


# Regler
S -> NP VP
NP -> DT NN
NP -> EN
NP -> NN
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}


Reglerna ska vara skrivna på formatet:

KAT -> KAT KAT ... KAT

Kategorin till vänster om pilen ska vara en symbol för en fraskategori som parsern kan känna igen som en tillåten fraskategori: S, BS, RS, AP, JP, NP, VP, PP.

Kategorierna till höger om pilen ska vara en tillåten fraskategori eller någon av kategorierna som är definierade för lexikonet.

Inga andra symboler än pilsymbolen (->) eller kategorisymboler kan användas. Parsern tillåter inte uttryck för optionalitet eller alternativ.

Lexikonet skrivs så att ord som tillhör samma ordklass listas som en mängd:

KAT: {ord, ord, ord, ...}

Samma ord kan förekomma under flera ordklasser.

 

Meningsfilen

Meningarna måste vara numrerade för att kunna identifieras av parsern. Numreringen görs med siffror och punkt som i filen testmeningar.

Om man vill testa en mening i taget kan man också använda alternativet parseThisOne.pl. Den tar två argument, en grammatikfil och en mening som man skriver ut explicit, t.ex.

> parseThisOne grammatik 'rut skrattade'

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