729G09 Språkvetenskaplig databehandling
Resurs, parse.pl
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 # Lexikon
S -> NP VP
NP -> DT NN
NP -> EN
NP -> NN
VP -> IV
VP -> TV NP
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
