UCP
UCP = Uppsala Chart Parser.
Hur man startar den
Det finns flera instanser av UCP på våra maskiner.
Den som för närvarande rekommenderas för de flesta fall är den som
heter "ucpnew", och instruktionerna nedan gäller den. Det finns också
"ucplab96" och "ucplab97" som har använts i ett par labbar, och därför
är frysta så att laborationsanvisningarna ska fortsätta att fungera
även när det sker ändringar i UCP. Även det program som heter bara
"ucp" är för tillfället fryst för att stämma med en gammal
instruktion. Man startar den version man vill ha genom att skriva
kommandot (t.ex. "ucpnew") i ett terminalfönster.
UCP är inbäddat i lisp, så när man kör UCP kommer man in i en
vanlig "read-eval-print-loop" i en fullständigt Commonlisp.
För tillfället kör vi UCP i Commonlispimplementationen
CLISP som är skriven av Bruno Haible och Michael Stoll.
Snabbkurs i lisp
Eftersom UCP är skriven som utökningar av lispen så känns det nog rätt
egendomligt om man inte kan lisp. Listor är en vanlig datatyp i lisp,
och de noteras inom parenteser och med mellanrum mellan lispelementen.
En lista med tre element kan t.ex. se ut så här:
(ett två tre)
Funktionsanrop i lisp noteras som sådana listor, så det man skriver i
UCP är mestadels listor med namnet på funktionen (eller kommandot)
först. T.ex. laddar man filer med funktionen LOAD i lisp, så om man
har skrivit en antal kommandon i en fil så kan man exekvera allt i den
filen med
(load "filnamn")
För att avsluta den här lispen används funktionen QUIT, utan några
argument, dvs. man skriver
(quit)
Vad gör man om det blir fel?
I CLISP är promptern normalt ">". När det har uppstått något fel får
man istället en prompter i stil med "1. Break>". Här kan man ange
särskilda kommandon för att undersöka det fel man har fått. Använd
kommandot "abort" för att avbryta detta och gå tillbaks till
toppnivån. (I själva verket går "abort" bara upp en nivå, så
om man är inne i ett fel i ett fel behöver man ge kommandot flera
gånger. Observera att "abort" inte ska sättas inom parentes.
Det är ingen funktion, utan ett speciellt kommando till debuggern i
just den här implementationen av lisp. (Ett annat kommando i samma
läge är "help" som talar om vilka andra särskilda kommandon man kan ge.)
Ifall UCP inte verkar ge någon respons kan man avbryta exekveringen
med Ctrl-C.
Grammatik och lexikon
Egentligen finns det ingen inbyggd grammatik i UCP, utan man kan
skriva vilka grammatikregler man vill och ladda in. I "ucpnew"
är dock en svensk morfologisk grammatik redan inladdad från början.
[Hur man definierar egna grammatikregler borde dokumenteras
här...]
Något lexikon finns däremot inte inladdat, utan det får man göra
själv.
[Det normala sättet att definiera lexikon borde dokumenteras här...]
En speciell funktion är USEGD som använder ett stort färdigt lexikon.
USEGD står för USE General Dictionary, och detta allmänna lexikon
omfattar bland annat Svensk Ordbok.
Denna funktion tar inga argument, så skriv bara
(usegd)
för att använda den. Du kommer att få kopior på några stora filer i
din hemkatalog. Du kan ta bort dem när du är färdig med UCP.
TRY-FILE
Om man har en färdig fil med ord som man vill köra genom parsern
ett och ett använder man funktionen TRY-FILE.
Första argumentet till TRY-FILE är den fil som orden ligger i.
Det enklaste sättet att använda den är alltså i stil med
(tryfile "min-fil")
Då tar TRY-FILE bara reda på vilka av orden som har nån parsning
och vilka som inte har det. De läggs i varsin fil som heter min-fil.OK
och min-fil.0 respektive.
Vill man ha ett annat beteende så måste man ge ytterligare argument
till TRY-FILE. Dessa ytterligare argument är så kallade
nyckelordsargument. Nyckelordsargument ges parvis, först ett
nyckelord (som är en symbol som börjar med kolon) och sen ett värde.
Ett exempel är
(try-file "min-fil" :report-style :parses :start 6)
I detta exempel har nyckelordsargumentet :REPORT-STYLE fått värdet
:PARSES och nyckelordsargumentet :START fått värdet 6.
Det betyder att hela parsningarna ska hamna i resultatfilen (som då
kommer att heta my-file.parses istället) och att orden i inputfilen
börjar först på kolumn 6.
De mest användbara nyckelordsargumenten till TRY-FILE (och deras mest
användbara värden) är:
- :PARSE-FILE
- Den outputfil där de orden som hade parsningar ska läggas.
Skriv filnamnet inom citationstecken.
- :NON-PARSE-FILE
- Den outputfil där de orden som inte hade parsningar ska läggas.
Om den har det speciella värdet :SAME istället för en sträng så
hamnar dessa i samma fil som parsningarna.
- :REPORT-STYLE
- Hur de parsade orden ska rapporteras. Värdet kan vara
:WORD (bara ordet listas), :PLUS (ordet listas med ett
plustecken framför), :PARSES (hela parsningarna visas),
:LEMMAS (bara lemmana från parsningarna visas).
- :ZERO-STYLE
- Hur de ord som inte parsades ska rapporteras. Värdet kan vara
:WORD (bara ordet listas), :MINUS (ordet listas med ett
minustecken framför).
- :START
- Orden i inputfilen börjar på denna kolumn. Värdet ska vara ett
naturligt tal.
Per Starbäck 1997-04-17