Node:Top, Next:

UCP2

Detta är en del knapphändig dokumentation till UCP2.


Node:Starta, Next:, Previous:Top, Up:Top

Hur man kör UCP

UCP är ett terminalprogram och startas med *ucp* till en kommandorad.

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ändig Commonlisp. För tillfället kör vi UCP i Commonlispimplementationen CLISP som är skriven av Bruno Haible och Michael Stoll.

Det finns en del flaggor och optioner man kan ge till UCP. Normalt behöver man inte ange några av dessa, men speciellt vid batchbehandlingar är de användbara. De är (observera att inte alla är dokumenterade här ännu):

-d
--divide

-e
--environment

-f
--fixfile

-h
--host

-i
--initfile

-m FIL
--memoryimage=FIL
Använd den angivna filen som minnesdump. Detta kan användas när man vill köra en ucp där en viss grammatik och ett visst lexikon är inladdat redan från början.
-p
--port

-x LISPUTTRYCK
--execute==LISPUTTRYCK
Istället för att sätta igång en read-eval-print-loop, så utför endast dessa uttryck, skriv ut resultaten och avsluta sedan.


Node:Lisp, Next:, Previous:Starta, Up:Top

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)


Node:Fel, Next:, Previous:Lisp, Up:Top

Vad gör man om det blir fel?

Promptern i UCP är normalt något i stil med UCP[17]>. När det har uppstått något fel får man istället en prompter i stil med 1. Break UCP[17]>. 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.


Node:Grammatik och lexikon, Next:, Previous:Fel, Up:Top

Grammatik och lexikon

Det finns ingen inbyggd grammatik i UCP, utan man kan skriva vilka grammatikregler man vill och detsamma gäller lexikon. Dokumentation om hur man gör detta finns (ännu) inte här.

Dessa definitioner sker med funktionen define. När man har samlat en mängd definitioner av grammatikregler i lexikon i en fil kan man ladda den med den vanliga lisp-funktionen LOAD. Om ens applikation består av en mängd filer bör man istället använda en särskild UCP-funktion LOADG (= load grammar) som skiljer sig genom att sätta aktuell katalog under inladdningen. Om man gör

        (loadg "german/morf.ucp2")

sätts alltså aktuell katalog till german/ medan morf.ucp2 laddas, så om det står (load "noun.ucp2") i den kommer german/noun.ucp2 i samma katalog att laddas. På detta sätt kan man undvika att skriva absoluta filnamn i filerna, vilket slutar fungera när man flyttar grammatiken någonannanstans.

För programmet spelar det ingen roll, men det rekommenderas att man använder extensionen .ucp2 för UCP2-filer. (Tidigare användes nästan alltid .grm för grammatikfiler och .dic för lexikonfiler, så det är fortfarande vanligt.)


Node:Parsning, Next:, Previous:Grammatik och lexikon, Up:Top

Parsning

För att parsa (analysera) en text används funktionen PROCESS som kan förkortas P tillsammans med PRINTRESULT som kan förkortas PR.

        (process "Gräv där du står!")
        (printresult)

Detta kommer att analysera den givna texten samt sedan skriva ut eventuella parsningar.


Node:Spårning, Next:, Previous:Parsning, Up:Top

Spårning

Till PROCESS kan man lägga till flaggor som talar om att analysen ska spåras. Det görs med ett andra argument som är en lista över vilka saker som ska spåras. De möjliga sakerna att spåra är chart, scheduling, selection, search, ruleentry, ruleexit, rulestep.

Exempel:

        (p "en liten fisk" (ruleentry ruleexit))
        (p "utan vidare" ())

I det första exemplet ges spårutskrifter för när analysen kommer in i grammatikregler samt när den lämnar det. I det andra exemplet är spårlistan tom, dvs. ingenting kommer att spåras. Skönsvärdet är att samma spårning görs som förra gången, så detta behövs för att uttryckligen stänga av spårning efter att man har använt det.

Den spårning som ger mest detaljer är rulestep.

Efter varje spårutskrift avbryts parsningen och man får en prompter !. Där kan man ge särskilda spårningskommandon. Med ? får man veta vilka spårningar som är på och vilka som är av. Med ?? får man veta vilka särskilda spårningskommandon man kan ge.

Varje spårningskommando avslutas med returtangenten. Genom att trycka på den utan att skriva något innan går man vidare i analysen.


Node:try-file, Previous:Spårning, Up:Top

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.


Node:Index, Previous:Top, Up:Top

Index

Table of Contents