Unni Cathrine Eiken February 2005

Unni Cathrine Eiken February 2005 Unni Cathrine Eiken February 2005

10.04.2013 Views

Appendix B: Ekstraktor.pl – program code Perl script Ekstraktor.pl #åpner fil som angis fra kommandolinjen når programmet kjøres open(FIL, $ARGV[0]) or die("Kan ikke åpne filen!!\n"); #leser hver linje i filen og legger linjen inn i forskjellige arrayer avhengig av hva som leses. Får lagret all informasjon som er nødvendig for å trekke ut pred-argstrukturene while ($linjeFraFil = ) { #legger indexverdi i @ARG0ep og arg0-verdi i @ARG0verdi dersom linjen fra filen inneholder ARG0 if ($linjeFraFil =~ m/ARG0/){ henteVerdi(); push(@ARG0ep, $ep); push(@ARG0verdi, $verdi); } #legger indexverdi i @ARG1ep og arg1-verdi i @ARG1verdi dersom linjen fra filen inneholder ARG1 if ($linjeFraFil =~ m/ARG1/){ henteVerdi(); push(@ARG1ep, $ep); push(@ARG1verdi, $verdi); } #legger indexverdi i @ARG2ep og arg2-verdi i @ARG2verdi dersom linjen fra filen inneholder ARG2 if ($linjeFraFil =~ m/ARG2/){ henteVerdi(); push(@ARG2ep, $ep); push(@ARG2verdi, $verdi); } #legger indexverdi i @ARG3ep og arg3-verdi i @ARG3verdi dersom linjen fra filen inneholder ARG3 if ($linjeFraFil =~ m/ARG3/){ henteVerdi(); push(@ARG3ep, $ep); push(@ARG3verdi, $verdi); } #legger lest linje inn i @restriksjoner dersom den inneholder 'BODY' if ($linjeFraFil =~ m/'BODY'/){ push(@restriksjoner, $linjeFraFil); } #legger lest linje inn i @restriksjoner dersom den inneholder 'RSTR' if ($linjeFraFil =~ m/'RSTR'/){ push(@restriksjoner, $linjeFraFil); } #legger lest linje inn i @semform dersom den bl.a inneholder 'semform' if ($linjeFraFil =~ m/'relation'\),semform\(/){ push(@semform, $linjeFraFil); } #legger lest linje inn i @cat dersom den inneholder '_CAT' if ($linjeFraFil =~ m/'_CAT'\)/){ push(@cat, $linjeFraFil); } #legger lest linje inn i @catsuff dersom den inneholder '_CATSUFF' if ($linjeFraFil =~ m/'_CATSUFF'\)/){ push(@catsuff, $linjeFraFil); } 92

#legger lest linje inn i @prt dersom den inneholder '_PRT' if ($linjeFraFil =~ m/'_PRT'\)/){ push(@prt, $linjeFraFil); } #legger lest linje inn i @index dersom den inneholder 'L-INDEX' if ($linjeFraFil =~ m/'L-INDEX'\)/){ push(@index, $linjeFraFil); } #legger lest linje inn i @index dersom den inneholder 'R-INDEX' if ($linjeFraFil =~ m/'R-INDEX'\)/){ push(@index, $linjeFraFil); } #legger lest linje inn i @navn dersom den inneholder 'CARG' if ($linjeFraFil =~ m/'CARG'\)/){ push(@navn, $linjeFraFil); } } #slutt while-loop close(FIL); #Her begynner prosesseringen av info hentet ut fra inputfilen: #fjerner ep'er som inneholder informasjon man vil se bort fra fjernRestri(); #fjerner første ep dersom den ikke har kategori 'v' finnCat(); #print("ARG0ep = \n@ARG0ep\nARG0verdi = \n@ARG0verdi\nARG1ep = \n@ARG1ep\nARG1verdi = \n@ARG1verdi\nARG2ep = \n@ARG2ep\nARG2verdi = \n@ARG2verdi\n"); #finner hovedstrukturen finnHoved(); #print("ARG0ep = \n@ARG0ep\nARG0verdi = \n@ARG0verdi\nARG1ep = \n@ARG1ep\nARG1verdi = \n@ARG1verdi\nARG2ep = \n@ARG2ep\nARG2verdi = \n@ARG2verdi\n"); #print("@semform\n"); #print("@navn\n"); #finner predikat-argumentstruktur nr2 #sjekkEkstra(); #finnResten(); #legger til predikat-argumentstrukturene til slutt i filen som angis open(OUTPUTFIL, ">>strukturer.txt") or die("kan ikke skrive til fil\n"); #open(OUTPUTFIL, ">>home/unni/Hovedoppgave/parse/pas-strukturer.txt") or die("kan ikke skrive til fil\n"); sjekkEkstra(); #lager hovedstrukturen lagStruktur(); close(OUTPUTFIL); #her kommer alle subfunksjonene: #henteVerdi(): #henter ut relasjonsindex og verdi til ARGx fra en linje fra #inputfilen og lagrer dem i $ep og $verdi 93

#legger lest linje inn i @prt dersom den inneholder '_PRT'<br />

if ($linjeFraFil =~ m/'_PRT'\)/){<br />

push(@prt, $linjeFraFil);<br />

}<br />

#legger lest linje inn i @index dersom den inneholder 'L-INDEX'<br />

if ($linjeFraFil =~ m/'L-INDEX'\)/){<br />

push(@index, $linjeFraFil);<br />

}<br />

#legger lest linje inn i @index dersom den inneholder 'R-INDEX'<br />

if ($linjeFraFil =~ m/'R-INDEX'\)/){<br />

push(@index, $linjeFraFil);<br />

}<br />

#legger lest linje inn i @navn dersom den inneholder 'CARG'<br />

if ($linjeFraFil =~ m/'CARG'\)/){<br />

push(@navn, $linjeFraFil);<br />

}<br />

} #slutt while-loop<br />

close(FIL);<br />

#Her begynner prosesseringen av info hentet ut fra inputfilen:<br />

#fjerner ep'er som inneholder informasjon man vil se bort fra<br />

fjernRestri();<br />

#fjerner første ep dersom den ikke har kategori 'v'<br />

finnCat();<br />

#print("ARG0ep = \n@ARG0ep\nARG0verdi = \n@ARG0verdi\nARG1ep = \n@ARG1ep\nARG1verdi =<br />

\n@ARG1verdi\nARG2ep = \n@ARG2ep\nARG2verdi = \n@ARG2verdi\n");<br />

#finner hovedstrukturen<br />

finnHoved();<br />

#print("ARG0ep = \n@ARG0ep\nARG0verdi = \n@ARG0verdi\nARG1ep = \n@ARG1ep\nARG1verdi =<br />

\n@ARG1verdi\nARG2ep = \n@ARG2ep\nARG2verdi = \n@ARG2verdi\n");<br />

#print("@semform\n");<br />

#print("@navn\n");<br />

#finner predikat-argumentstruktur nr2<br />

#sjekkEkstra();<br />

#finnResten();<br />

#legger til predikat-argumentstrukturene til slutt i filen som angis<br />

open(OUTPUTFIL, ">>strukturer.txt") or die("kan ikke skrive til fil\n");<br />

#open(OUTPUTFIL, ">>home/unni/Hovedoppgave/parse/pas-strukturer.txt") or die("kan ikke<br />

skrive til fil\n");<br />

sjekkEkstra();<br />

#lager hovedstrukturen<br />

lagStruktur();<br />

close(OUTPUTFIL);<br />

#her kommer alle subfunksjonene:<br />

#henteVerdi():<br />

#henter ut relasjonsindex og verdi til ARGx fra en linje fra<br />

#inputfilen og lagrer dem i $ep og $verdi<br />

93

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!