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