bild
Skolan för
elektroteknik
och datavetenskap

Språkteknologigruppens webbtjänster via sockets

Här finns information om hur man kan anropa Språkteknologigruppens webbtjänster via sockets. Många av verkygen finns också att ladda ned så du kan köra dem på din egen dator, se tools-hemsidan.


Stava

Stava är ett verktyg för rättstavning som kan föreslå rättningar av felstavade svenska ord. Det finns även ett Webbgränssnitt för Stava som har fler inställningar än det API som finns tillgängligt via en socket.

För att använda Stava som en servertjänst via en socket, anropa skrutten.csc.kth.se på port 6144. Tjänsten tar emot ord separerade med space eller ny rad och fortsätter läsa inmatning tills den hittar det reserverade ordet ENDQ.

Svaret skickas som ett ord per rad. För ord som är korrekt stavade skrivs först ordet, sen ett kolon, sen ordet en gång till (t.ex. "rättstavad: rättstavad"). För ord som är felstavade skrivs först ordet självt, sen ett kolon, sen möjliga rättningsförslag separerade med space (t.ex. "fellstavad: felstavad fallstavad fällstavad fullstavad"). För ord som är felstavade men där inga rättningsförslag kunde genereras skrivs ordet självt följt av ett kolon och sen inget mer (t.ex. "fellstavadddd:").

Svaret skickas i latin-1-kodning.


Särstava

Särstava är ett verktyg för sammansättningsanalys som kan ange hur sammansatta ord kan delas upp i sina ordled. Verktyget bygger på Stava för analysen av sammansatta ord.

För att använda Särstava som en servertjänst via en socket, anropa skrutten.csc.kth.se på port 6140 eller på port 6150. Tjänsten på port 6140 svarar med ett förslag på hur ordet kan delas upp (det som tjänsten tror är mest sannolikt) och tjänsten på port 6150 svarar med all förslag tjänsten tror är möjliga sätt att dela upp ordet. Tjänsten tar emot ord separerade med space eller ny rad och fortsätter läsa inmatning tills den hittar det reserverade ordet ENDQ.

Svaret skickas tillbaka och börjar med "<reply>" och slutar med "</reply>". Resten av svaret är ett ord per rad. Efter ordet självt kommer en TAB, sen förslag på uppdelningar av sammansättningen. Ordleden avdelas med pipe-tecken, "|". Ord där inga tolkningar hittas har bar ordet självt i början av raden.

Svaret skickas i latin-1-kodning.


Taggstava

Taggstava är ett verktyg för ordklasstaggning som kan ta ett enstaka ord och tagga det utan kontext. Taggstava använder Stava för att gissa ordklasstaggarna.

För att använda Taggstava via en socket, anropa skrutten.csc.kth.se på port 6145. Tjänsten tar emot ord separerade med space eller ny rad och fortsätter läsa inmatning tills den hittar det reserverade ordet ENDQ.

Svaret skickas som ett ord per rad. På varje rad kommer först ordet självt, sen ett kolon, och sen space följt av möjliga ordklasstaggar för ordet, separerade med space om det finns fler än ett taggförslag. För ord där inga förslag hittas skrivs bara ordet och ett kolon ut.

Svaret skickas i latin-1-kodning.


Granskas taggare

Granskas taggare är ett verktyg för ordklasstaggning som kan ta en text och ange ordklass för orden i texten. Verktyget använder Granska för att gissa ordklasstaggarna.

För att anropa Granska via en socket, anropa skrutten.csc.kth.se på port 6123 eller port 6127. På port 6123 kör Granska i grammatikgranskningsläge och på port 6127 körs Granska i parserläge. Båda varianterna inkluderar ordklasstaggning i resultatet som skickas tillbaka.

Inmatningen till Granska skickas på samma format till båda tjänsterna. På en rad skickas det reserverade ordet "TEXT", följt av ett space och sen följt av texten du vill ha ordklasstaggad. Hela texten måste komma på en enda lång rad. Det finns också en begränsning på hur lång texten får vara, för närvarande 100000 tecken lång. Efter själva texten skrivs det reserverade ordet "ENDQ" på en ny rad.

Resultatet som skickas tillbaka ser olika ut beroende på vilken av de två varianterna av Granska som används:

Parsertjänsten (port 6127) innehåller ordklasstaggar i avsnittet av resultatet markerat med "<bio>" och "</bio>". För varje ord i inmatningen finns ett avsnitt markerat med "<row>" och "</row>". I varje sådant avsnitt står ordet självt, följt av ordklasstaggen för ordet, och sedan följt av en frastagg och en satstagg.

Granskningstjänsten (port 6123) har ett avsnitt markerat med "<s>" och "</s>" för varje mening. I varje sådant avsnitt finns ett avsnitt markerat med "<w>" och "</w>" för varje ord. I varje w-tagg står det "tag=" och ett nummer. Senare i utmatningen finns ett avsnitt markerat med "<tags>" och "</tags>" där nummren översätts till ordklasstaggar på formatet <tag no="12" name="nn.utr.plu.def.nom"/>.

För vissa fast uttryck som grammatiskt fungerar som ett ord slås orden ihop och behandlas som ett ord, till exempel "till och med".

Svaret skickas i latin-1-kodning.


Granska

Granska är ett verktyg för grammatikgranskning som kan hitta misstänkta grammatik- och stavfel i svensk text. Mer information finns på Granskahemsidan.

För att anropa Granska via en socket, anropa skrutten.csc.kth.se på port 6123. Inmatningen ser ut som för ordklasstaggningstjänsten ovan: på en rad skickas det reserverade ordet "TEXT", följt av ett space och sen följt av texten att granska. Hela texten måste komma på en enda lång rad. Det finns också en begränsning på hur lång texten får vara, för närvarande 100000 tecken lång. Efter själva texten skrivs det reserverade ordet "ENDQ" på en ny rad.

Istället för "TEXT" kan man också använda "URL" följt av ett space och sen en URL till en fil att granska. Granska kommer då försöka hämta den filen och granska texten i den. Efter att ha angett en "URL" behöver man också ange "ENDQ" för att tala om för Granska att det inte kommer fler kommandon. Det går även att ange "EXAMPLESENTENCES" för att köra Granska på en fil med exempelmeningar som exemplifierar diverse skrivfel. (När Granska ser "EXAMPLESENTENCES" kommer Granska inte vänta på fler kommandon utan köra direkt, så vill man ange egna granskningsregler att använda behöver man ange dessa först.)

För varje mening finns ett avsnitt i utmatningen markerat med "<s>" och "</s>". Orden i meningen listas med <w>-taggar och dessa har ett "no=" fält som refereras i felrapporterna senare.

Misstänkta fel rapporteras inom "<gramerror>"-taggar. Felrapporterna har ett fält "<rule>" för namnet på granskningsregeln som orsakade rapporten och ett fält "<info>" med en text som förklarar vad som är fel.

För vissa felrapporter finns rättningsförslag. Texten i rättningsförslagen är tänkt att ersätta texten som anges i "<marked_section>" nedan.

De flesta felrapporter har ett avsnitt med en del i den ursprungliga texten att markera. Dessa anges med <marked_section><mark begin="2" end="9"/></marked_section>, där "begin" och "end" refererar till "no"-fälten i <w>-taggarna för orden. Dock anges numren av någon anledning fel och alla nummer refererar egentligen till ord med nummer 2 lägre än siffran i mark-fälten. Så "<mark begin="2" end="9"/>" referear till orden med <w no="0" och <w no="7".

Det går att skicka med egna granskningsregler till Granska. En fullständig beskrivning av Granskas regelspråk finns här (PDF). Det finns också en enkel exempelregel att använda som referens. Man kan välja att lägga till sina egna regler till Granskas regler (d.v.s. använda både Granskas regler och de nya reglerna) eller att ersätta Granskas regler med sina egna. För att lägga till egna regler anger man "EXTRARULES" följt av ett mellanslag och sen följt av reglerna. När reglerna är slut anger man "ENDOFRULES" på en egen rad. För att ersätta Granskas regler anger man "NEWRULES" istället för "EXTRARULES", och resten som för att lägga till regler. För att Granska ska göra något behöver man också ange antingen "TEXT", "URL", eller "EXAMPLESENTENCES" så att det finns något att använda reglerna på. Man måste också avsluta inmatningen av kommandon med "ENDQ" som ovan.

Exempel

Här är ett exempel på utmatning:

<s ref="0"><words>8</words>
<text>En liten testtext att granska till du.</text>
<contents><w no="0" tag="56" lemma="en">En</w>
<w no="1" tag="80" lemma="liten">liten</w>
<w no="2" tag="31" lemma="testtext">testtext</w>
<w no="3" tag="138" lemma="att">att</w>
<w no="4" tag="79" lemma="granska">granska</w>
<w no="5" tag="133" lemma="till">till</w>
<w no="6" tag="60" lemma="du">du</w>
<w no="7" tag="109" lemma=".">.</w>
</contents>
</s>
<scrutinizer><s ref="0"><gramerrors><gramerror><marked><emph type="red">till du</emph></marked>
<rule>subj_efter_prep@pronomen</rule>
<info>Felaktig pronomenform, använd objektsform</info>
<suggestions><sugg>till <emph type="green">dig</emph></sugg>
</suggestions>
<marked_section><mark begin="7" end="8"/>
</marked_section>
</gramerror>
<gramerror><marked/>
<rule>inget_finit_verb@verb</rule>
<info>Tempusböjt verb verkar saknas i satsen</info>
<marked_section><mark begin="2" end="9"/>
</marked_section>
</gramerror>
</gramerrors>
</s>

Den ska tolkas som att "till du" (ord 5 till 6, angett som begin=7 till end=8) är ett fel av typen "Felaktig pronomenform, använd objektsform" och förslaget är att ersätta "till du" med "till dig". Ett annat fel är att satsen från ord 0 till ord 7 (angett som begin=2 till end=9) saknar ett tempusböjt verb, men det finns inga rättningsförslag för detta fel.

Svaret skickas i latin-1-kodning.


GTA, Granskas parser

GTA, Granskas parser är ett verktyg för parsning som kan ta en text och parsa den. Verktyget använder Granskas regelspråk för parsningen.

Utförlig information om Granskas parser finns i denna artikel (PDF). Där finns information om hur parsern fungerar och även information om vad utmatningen betyder.

För att anropa Granskas parser via en socket, anropa skrutten.csc.kth.se på port 6127. Inmatningen ser ut som för ordklasstaggningstjänsten och för Granska ovan: på en rad skickas det reserverade ordet "TEXT", följt av ett space och sen följt av texten att granska. Hela texten måste komma på en enda lång rad. Det finns också en begränsning på hur lång texten får vara, för närvarande 100000 tecken lång. Efter själva texten skrivs det reserverade ordet "ENDQ" på en ny rad.

Utmatningen innehåller diverse information. Det enklaste sättet att hitta parsningsresultat är att titta i avsnittet markerat med "<bio>" och "</bio>". För varje ord i inmatningen finns ett avsnitt markerat med "<row>" och "</row>". I varje sådant avsnitt står ordet självt, följt av ordklasstaggen för ordet, följt av en frastagg, och slutligen en satstagg.

Frastaggar

Frastaggarna anges med bokstavskombinationer som anger frastyp (till exempel "NP" för "nominalfras") och "B" eller "I" för "begin" (första ordet i frasen) och "inside" (indikerar att ordet är en del av en fras som börjat tidigare i meningen). Om ett ord ingår i flera fraser separeras dessa med pipe-tecken, "|". Så till exempel:
<row>hund nn.utr.sin.ind.nom NPB|NPB CLB</row>
<row>och kn NPI CLI</row>
<row>katt nn.utr.sin.ind.nom NPB|NPI CLI</row>
betyder att det finns tre nominalfraser: "hund", "hund och katt", och "katt". "hund NPB|NPB" innebär att två fraser börjar vid ordet "hund", båda av typen "NP" (nominalfraser).

"och NPI" innebär att ordet "och" ingår i en nominalfras som börjat på ett tidigare ord. Att det bara finns en "NPI"-tagg innebär också implicit att en av de två nominalfraserna som började på ordet "hund" slutade på ordet "hund" eftersom bara en av dem fortsätter på nästa ord.

"katt NPB|NPI" innebär att ordet "katt" ingår i en nominalfras som börjat på ett tidigare ord och att det börjar en ny nominalfras här.

Satsgränser

Stasgränser anges ungefär som frastaggarna ovan, med "CLB" för "clause begins" och "CLI" för "clause, inside". Exempel:
<row>Granska vb.inf.akt VCB CLB</row>
<row>kan vb.prs.akt.mod VCB CLI</row>
<row>parsa vb.inf.akt VCI CLI</row>
<row>, mid 0 CLI</row>
<row>och kn 0 CLB</row>
<row>Granska vb.inf.akt VCB CLI</row>
<row>kan vb.prs.akt.mod VCB CLI</row>
<row>hitta vb.inf.akt VCI CLI</row>
<row>fel pl VCI CLI</row>
<row>. mad 0 CLI</row>
Exemplet har delats upp i två satser, "Granska kan parsa," och "och Granska kan hitta fel.", vilket indikeras av "Granska CLB" följt av "CLI" för alla ord fram till "och CLB" som indikerar att en sats börjar och implicit betyder att satsen som började på första ordet i meningen är slut, eftersom det inte står "CLI" vid detta ord.

Svaret skickas i latin-1-kodning.


Probgranska

Probgranska är en probabilistisk grammatikgranskare. Probgranskad varnar för avsnitt i text som ser "konstiga" ut jämfört med stora mängder referenstext Probgranska har använt för att lära sig hur svensk text brukar se ut..

Probgranska körs som en del av GTA ovan. För att anropa Probgranska via en socket, anropa skrutten.csc.kth.se på port 6127. Inmatningen ser ut som för ordklasstaggningstjänsten, GTA, och för Granska ovan: på en rad skickas det reserverade ordet "TEXT", följt av ett space och sen följt av texten att granska. Hela texten måste komma på en enda lång rad. Det finns också en begränsning på hur lång texten får vara, för närvarande 100000 tecken lång. Efter själva texten skrivs det reserverade ordet "ENDQ" på en ny rad.

Den utmatning från Probgranska som oftast är mest intressant finns inom XML-taggar "errors_found". Där finns rader med "row_err" som innehåller ett ord och dess slutgiltiga uppmärkning från Probgranska. Probgranska kan klassa ord som "ok"M, "err", eller "err_center". Probgranska tittar på trigram av ordklasstaggar, så om något misstänkt fel upptäcks kommer minst tre ord i rad märkas med "err" och "err_center" (för ordet i mitten).

Exempel på utmatning från att ha kört Probgranska på meningen "Jag gillar att hoppar hopprep.":

<errors_found>
<row_err>Jag pn.utr.sin.def.sub ok</row_err>
<row_err>gillar vb.prs.akt err</row_err&g;
<row_err>att sn err_center</row_err>
<row_err>hoppar vb.prs.akt err_center</row_err>
<row_err>hopprep nn.neu.sin.ind.nom err</row_err>
<row_err>. mad ok</row_err>
<row_err/>
</errors_found>

Vi kan se att "att hoppar hopprep" har märkts upp som ett misstänkt fel av Probgranska, och att resten av texten ansågs vara OK.

Granskas ordböjare

Granskas ordböjare är ett verktyg för ordböjning som kan ge alla böjningsformer av ett ord.

För att använda ordböjaren via en socket, anropa skrutten.csc.kth.se på port 6123. Inmatningen sker på formatet: först ordet "INFLECT", sen ett space, följt av ordet att böja, följt av ordet "ENDQ" på en ny rad.

Exempel

Såhär ser utmatningen ut om man skickar "INFLECT bilar" följt av "ENDQ" på en ny rad till Granskas ordböjare:

all forms found in lexicon:
<<nn.utr.plu.ind.nom>> 81
<<vb.prs.akt>> 1
all forms that can be generated from bilar <nn.utr.plu.ind.nom>:
bilarna <nn.utr.plu.def.nom>
bil <nn.utr.sin.ind.nom>
bilarnas <nn.utr.plu.def.gen>
bil <nn.utr.sms> *
bilar <nn.utr.plu.ind.nom>
bilen <nn.utr.sin.def.nom>
bilens <nn.utr.sin.def.gen>
bilars <nn.utr.plu.ind.gen> *
bils <nn.utr.sin.ind.gen> *
all forms that can be generated from bilar <vb.prs.akt>:
bilade <jj.pos.utr/neu.plu.ind/def.nom>
bilas <vb.prs.sfo> *
bila <vb.imp>
bilade <jj.pos.utr/neu.sin.def.nom>
bilar <vb.prs.akt>
bilads <pc.gen> *
bilat <jj.pos.neu.sin.ind.nom> *
bila <vb.inf.akt>
bilad <jj.pos.utr.sin.ind.nom> *
bilas <vb.inf.sfo> *
bilades <vb.prt.sfo> *
bilat <vb.sup.akt> *
bilade <vb.prt.akt>
bilats <vb.sup.sfo> *
bilande <pc.prs.utr/neu.sin/plu.ind/def.nom> *

Det betyder att ordböjaren känner till två ord som kan skrivas "bilar", ett substantiv och ett verb. Substantivet är vanligare, 81 förekomster i de texter ordböjaren är tränad på jämfört med bara en förekomst av verbet.

Sen listas böjningsformerna för substantivet tillsammans med ordklasstaggar som visar vilken böjningsform det är. Sist kommer böjningsformerna för verbet, på samma sätt.

Svaret skickas i latin-1-kodning.


Snålgranska

Snålgranska är ett annat verktyg för grammatikgranskning. Snålgranska är inte lika bra som Granska på att upptäcka fel i texter men det är enklare att skapa ett Snålgranska för ett nytt språk än det är att skapa ett Granska. Snålgranska hittar också en del fel som Granska missar, så de kan i viss mån komplettera varandra.

Det finns tre varianter av Snålgranska tillgängliga, en för ordföljdsfel, en för felatiga särskrivningar, och en för kongruensfel.

För att använda Snålgranska via en socket, anropa skrutten.csc.kth.se på port 6133 för ordföljdsfel, port 6134 för felaktiga särskrivningar, och port 6135 för kongruensfel. Inmatningen förväntas vara ordklasstaggad text.

För ordföljdsfelen och särskrivningarna förväntas ett ord och en ordklasstagg per rad. När texten är slut förväntas det ordet "ENDQ" på en egen rad. Ordklasstaggarna förväntas vara i Granskataggarens format.

För kongruensfelen förväntas ett ord och en sönderdelad ordklasstagg per rad. När texten är slut förväntas det ordet "ENDQ" på en egen rad. Ordklasstaggarna förväntas vara i Granskataggarens format. Ordklasstaggarna förväntas delas upp i smådelar enligt mappningen i den här taggmappningsfilen.

Utmatningen börjar med <reply>, avslutas med <reply>. Däremellan kommer ett ord per rad, och annoteringen OK för ord utan amärkningar. För ord där fel kan misstänkas anges WOERR för ordföljdsfel, AGRERR, och SPLIT för misstänkta särskrivningar.

Alla Snålgranskatjänster förväntar sig ordklasstaggad inmatning. Det går att få ordklasstaggar från ordklasstaggningstjänsten ovan. Eftersom det är lite bökigt att först tagga texten och sen mappa om taggarna m.m. kan det vara enklare att använda API-versionen av Snålgranska istället. Den tar vanlig text och som inmatning och matar ut det samlade resultatet av de tre varianterna av Snålgranska.


Missplel

Missplel är ett verktyg som kan införa stavel i en text. Det kan vara användbart när man vill testa hur andra verktyg fungerar. Det kan förstås användas för att se hur många av felen ett verktyg som hittar fel klarar av att hitta, men det tänkta användningsområdet är att se hur verktyg som hanterar text fungerar om texten innehåller fel. De flest verktyg utvecklas och testas på text med väldigt få fel medan många texter som verktygen senare kan stöta på innehåller fel.

För att använda Missplel via en socket, anropa skrutten.csc.kth.se på port 6143. Inmatningen förväntas vara ordklasstaggad och lemmatiserad text. Missplel förväntar sig ett ord per rad och varje rad förväntas ha först ordet, sen en ordklasstagg (i Granskas taggset) och sist ordets lemma (grundform). De tre fälten förväntas vara separerade med TAB-tecken. Missplel fortsätter läsa inmatning tills det reserverade ordet ENDQ dyker upp.

Det går att få ordklasstaggar och lemma från Granska som nämns ovan. Granska skickar dock tillbaka mycket annan information också, så man behöver parse utmatningen och leta upp tagg och lemma själv. Det finns också en webbtjänst som tar vanlig text och ger tillbaka just ord, tagg, och lemma (som i sin tur använder Granska). Det finns även en webbtjänst som tar vanlig text och ger tillbaka resultatet från Missplel (även denna använder Granska för att hitta taggar och lemma).

Utmatningen innehåller två delar. Först kommer en hel del information de fel som införts, sen kommer den resulterande texten. Texten har ett ord per rad och varje rad har först ordet självt, sen ordklasstaggen, och sist antingen "ok" om ordet är oförändrat eller en tagg som talar om vad för slags fel som har införts där.

Missplel har många konfigurationsmöjligheter där man kan välja vilka sorters fel som ska införas och hur ofta m.m. Tjänsten som beskrivs här kör bara med standardinställningar, men vill du konfigurera om Missplel går det att ladda ned Missplel och köra det lokalt på din egen maskin. För att få ord-tagg-lemma-information till text kan du använda tjänsterna som nämnts ovan, eller t.ex. ladda ned Granskas taggare och köra även den lokalt om det passar ditt användningsområde bättre. Både Missplel och Granskas taggare kan laddas ned från språkteknologigruppens "Tools" hemsida.

OpenDetex

OpenDetex är ett verktyg som kan skala bort LaTeX-annoteringar i en text. Tjänsten här är en något modifierad version av OpenDetex.

För att använda OpenDetex via en socket, anropa skrutten.csc.kth.se på port 6137. Inmatningen förväntas vara LaTeX eller TeX. Det behöver inte vara en komplett och korrekt LaTeX-fil, LaTeX-annotering kommer efter förmåga plockas bort från halvfärdiga filer också. Inmatning kommer läsas tills det reserverade ordet ENDQ dyker upp, sen skalas eventuell LaTeX-annotering bort och resultatet skickas tillbaka.


REST

Alla webbtjänster går även att anropa via ett RESTful API.


Tillbaka till Skrutten


Uppdaterad 2021-06-01