bild
Skolan för
elektroteknik
och datavetenskap

Verktyg från Språkteknologigruppen

Här finns diverse verktyg utvecklade av Språkteknologigruppen på KTH CSC. De flesta verktygen går att ladda ned och köra på din egen dator. Många av verktygen finns också tillgängliga online, så att du kan köra dem i din webbläsare utan att behöva ladda ned någonting. Onlineversionerna kan också användas av andra program, om du t.ex. skriver ett eget program som behöver utföra något som verktygen nedan kan göra.


Snabblänkar

Verktyg att ladda ned

Följande verktyg finns tillgängliga för nedladdning:

Verktyg online

Följande verktyg finns tillgängliga att använda online:

För en utförlig lista på de tjänster som finns online, se Granska API.

Artiklar om och referenser till verktygen

Om du vill läsa mer om något verktyg, referera till ett verktyg, m.m. finns det artiklar skrivna om följande verktyg:

Se även hemsidan med dokumentation till Språkteknologigruppens verktyg.


Verktygen


Granska

Granska är ett grammatikgranskningsprogram för svensk text. Granska innehåller även många andra funktioner som går att använda separat, till exempel tokenisering, ordklasstaggning, ordböjning, parsning, rättstavning, och lemmatisering.

Ladda ned

Källkoden till Granska finns tillgänglig under GNU General Public License. Källkoden är skriven i C och C++. Granska använder biblioteket Xerces som du också behöver installera om du inte redan har det. Xerces är också fritt tillgängligt.

För att Granska ska kunna köra behöver man också lexikonfiler och regelfiler. Här finns två regelfiler: en med regler för grammatikgranskning och en med regler för parsning.

Online

Granska finns tillgänglig i flera varianter online:

Dokumentation

Vill du referera till Granska i en forskningsartikel kan du använda:

Domeij, Knutsson, Carberger, & Kann, 2000, "Granska - an efficient hybrid system for Swedish grammar checking"

@inproceedings{granska, author = {Richard Domeij and Ola Knutsson and Johan Carlberger and Viggo Kann}, title = {Granska -- an efficient hybrid system for {Swedish} grammar checking}, booktitle = "Proceedings of Nodalida '99", pages = {49--56}, address = "Trondheim, Norway", year = "2000"}

Aritkeln finns som PDF här: Granska - an efficient hybrid system for Swedish grammar checking.

Vill du veta mer om Granskas regelspråk finns det en PDF med beskrivning av just detta.


Granskas ordböjare

Inflector, Granskas ordböjare, är inbyggd i Granska men det går även att skapa ett fristående program som bara tillhandahåller ordböjningen.

Ladda ned

Källkoden till Inflector är skriven i C och C++. Du kan ladda ned Inflector här (senast publicerad 2005-12-30). Inflector behöver delar av Granskas taggare och behöver även taggarens lexikonfiler.

Det går även att be Granska göra allt som Inflector kan göra, så det kan eventuellt vara enklare att installera Granska istället. Eller att använda onlineversionen nedan.

Online

Inflector kan också köras online, via REST och via sockets.


Granskas taggare

Granskas taggare är inbyggd i Granska, men det går även att skapa ett fristående program som bara tillhandahåller ordklasstaggning. Granskas taggare är en HMM-taggare (Hidden Markov Model), så den använder statstik över taggföljder i en referenstext för att ange taggar i ny text. Taggaren är tränad på SUC-korpusen och använder en tagguppsättning som är en något modifierad variant av SUCs tagguppsättning. Det följer med ett verktyg som gör det möjligt att träna om taggaren på en annan korpus, så det går att få taggaren att använda ett annat taggset eller att fungera på ett annat språk än svenska.

Ladda ned

Källkoden till Granskas taggare finns här (senast publicerad 2009-03-10). Det finns även en version för amd64 (2010-11-05, tack till Robert Östling). Det finns också en version av Granskas taggare skriven i Java, skapad av Pierre Nugues.

Lexikon

För att taggaren ska fungera behöver den lexikonfiler. Man kan skapa egna lexikonfiler genom att träna taggaren på en redan taggad korpus. Det finns färdiga lexikonfiler (från att träna taggaren på SUC-korpusen) att ladda ned.

Online

Granskas taggare kan köras online, dels via taggarens ursprungliga hemsida, och dels via REST och sockets.

Dokumentation

Vill du referera till Granskas taggare kan du använda:

Carlberger & Kann, 1999, "Implementing an efficient part-of-speech tagger"@article{carlberger99implementing, author = "Johan Carlberger and Viggo Kann", title = "Implementing an efficient part-of-speech tagger", journal = "Software -- Practice and Experience", volume = "29", number = "9", pages = "815--832", year = "1999"}
Artikeln finns som PDF här: Implementing an efficient part-of-speech tagger.


GTA, Granskas parser

GTA är Granskas parser. Den anger frasstruktur och satsgränser i svensk text, men ger inte ett helt parseträd för hela meningen. GTA bygger på regler skrivna i Granskas regelspråk och GTA körs genom att man kör Granska med dessa regler.

Ladda ned

För att ladda ned GTA behöver du ladda ned Granska ovan, kompilera Granska med en speciell flagga satt, starta Granska med några speciella parametrar, och ange en regelfil med regler för parsning.

När du kompilerar Granska behöver du ange flaggan
-DDEVELOPER_OUTPUT

När du kör Granska, skicka med följande parametrar:
-Cb 1 -Cr repr.ptt -Ch 4 -CH 3 -J none 0 2
Filen repr.ptt föjer normalt med i paketet med lexikonfiler och det går bra att bara peka på filen där eller ladda ned repr.ptt separat.

Online

GTA finns tillgängligt online, via REST och via sockets. Det finns även två alternativa REST-tjänster, en som ger bara frasstruktur och en som ger bara satsgränser.

Dokumentation

Vill du referera till GTA kan du använda:

Knutsson, Bigert & Kann, 2003, "A Robust Shallow Parser for Swedish"@inproceedings{gta, author = {Ola Knutsson and Johnny Bigert and Viggo Kann}, title = {A Robust Shallow Parser for {Swedish}}, booktitle = "Proceedings of Nodalida 2003", address = "Reykjavik, Iceland", year = "2003"}
Artikeln finns som PDF här: A Robust Shallow Parser for Swedish.

Vill du veta mer om Granskas regelspråk finns det en PDF med beskrivning av just detta.


Probgranska, en statistisk grammatikgranskare

Probgranska är ett verktyg som hittar skrivfel i text. "Prob" i Probgranska står för probabilistisk och Probgranska skiljer sig från många andra grammatikgranskningsverktyg genom att ingen har skrivit regler för hur korrekt eller inkorrekt svenska ser ut. Istället har Probgranska gått igenom stora mängder (förhoppningsvis) korrekt text och räknat hur ofta olika ordklasser och böjningsformer följer varandra. När Probgranska hittar en ordföljd som är väldigt ovanlig i referenstexterna varnar den om att det ser misstänkt ut. Ett exemepl är t.ex. verb som inte står i infinitivform efter ordet "att", eftersom Probgranska har noterat att det är väldigt ovanligt.

Ladda ned

För att köra Probgranska så gör man samma sak som för att köra GTA ovan. För att ladda ned Probgranska behöver du ladda ned Granska ovan, kompilera Granska med en speciell flagga satt, starta Granska med några speciella parametrar, och ange en regelfil med regler för parsning.

När du kompilerar Granska behöver du ange flaggan
-DDEVELOPER_OUTPUT

När du kör Granska, skicka med följande parametrar:
-Cb 1 -Cr repr.ptt -Ch 4 -CH 3 -J none 0 2
Filen repr.ptt föjer normalt med i paketet med lexikonfiler och det går bra att bara peka på filen där eller ladda ned repr.ptt separat.

Online

Probgranska finns tillgängligt online, via REST och via sockets.

Dokumentation

Vill du referera till Probgranska (engelska: ProbCheck) kan du använda:

Bigert & Knutsson, 2002, "Robust error detection: A hybrid approach combining unsupervised error detection and linguistic knowledge" @inproceedings{probgranska, author = "Johnny Bigert and Ola Knutsson", title = "Robust Error Detection: A Hybrid Approach Combining Unsupervised Error Detection and Linguistic Knowledge", booktitle = "Proceedings of Romand 2002, Robust Methods in Analysis of Natural Language Data", address = "Frascati, Italy", pages = "10--19", year = "2002"}
Robust error detection: A hybrid approach combining unsupervised error detection and linguistic knowledge (PDF)

Vill du veta mer om Granskas regelspråk finns det en PDF med beskrivning av just detta.


Stava

Stava är ett rättstavningsprogram för svenska. För att få bra rättstavning på svenska behöver man hantera sammansatta ord på ett vettigt sätt, och det gör Stava genom regler för hur svenska sammansättningar kan och inte kan skapas.

Ladda ned

Stavas källkod (senast publicerad 2016-07-25) är skriven i C. Stava behöver också så kallade Bloomfilter (de motsvarar ordlistan Stava använder) för att fungera. Det finns ett paket med Bloomfilter till Stava och listor på vanliga namn o.dyl. tillgängligt.

Det finns också en version av Stava med tillägg för sockets. Det är samma kod som ovan, med små tillägg i två filer och en ny fil för hantering av kommunikation över sockets. Denna version behöver också ordlistorna ovan.

Online

Stava kan också köras online. Stavas webbsida har ett interface där du kan ange många olika parametrar till Stava. Du kan också anropa Stava via REST och via sockets.

Dokumentation

Det finns en Manual för Stava online.

Vill du referera till Stava kan du använda:

Domeij, Hollman & Kann, 1994, "Detection of spelling errors in Swedish not using a word list en clair"@article{stava, title={Detection of spelling errors in {Swedish} not using a word list en clair}, author={Rickard Domeij and Joachim Hollman and Viggo Kann}, journal={Journal of Quantitative Linguistics}, volume="1", pages="195--201", year=1994 }
Aritkeln i PDF


Taggstava

Taggstava är en variant av Stava som använder Stavas analys av böjningsformer för att ange ordklasstagg för ord utan att behöva titta på ordens kontext.

Ladda ned

Taggstava följer med när du laddar ned Stava ovan. Du behöver ange några speciella parametrar när du kompilerar Stava för att skapa Taggstava.

Online

Det finns en hemsida för Taggstava där man kan pröva olika parametrar. Taggstava finns även tillgängligt via REST och via sockets.

Dokumentation

Vill du referera till Taggstava kan du använda:

Kann, 2010, "KTHs morfologiska och lexikografiska verktyg och resurser (Morphological and Lexicographical Tools and Resources from KTH)"@misc{taggstava2, author = {Viggo Kann}, title = {{KTHs} morfologiska och lexikografiska verktyg och resurser ({M}orphological and Lexicographical Tools and Resources from {KTH})}, booktitle = "LexicoNordica 17", pages="99--117", address = {Sch{\"a}fferg{\aa}rden, Denmark}, year = "2010"}


Särstava

Särstava analyserar sammansatta ord och kan föreslå vilken tolkning som är mest sannolik om ett sammansatt ord kan analyseras på mer än ett sätt (t.ex. "glasskål" som kan vara "glass-skål", "glas-skål", eller "glass-kål"). Särstava använder Stava för att hitta de olika sätt ett sammansatt ord kan delas upp, och använder statistik och en del heuristik för att gissa vilken tolknings som är mest sannolik. Särstava kan mata ut antingen alla möjliga tolkningar eller bara den mest sannolika tolkningen.

Ladda ned

Särstava är skrivet i C och C++: Särstavas källkod (senast publicerad 2022-04-14). För att Särstava ska fungera behövs även lexikonfiler till Stava.

Online

Särstava finns tillgängligt online, via REST och via sockets.

Dokumentation

Vill du referera till kan du använda:

Sjöbergh & Kann, 2004, "Finding the Correct Interpretation of Swedish Compounds a Statistical Approach"@inproceedings{compounds2004, author = {Jonas Sj\"{o}bergh and Viggo Kann}, title = {Finding the Correct Interpretation of {Swedish} Compounds a Statistical Approach}, booktitle = "Proceedings of {LREC}-2004", address = "Lisbon, Portugal", pages = {899--902}, year = "2004" }
eller
Sjöbergh & Kann, 2006, "Vad kan statistik avslöja om svenska sammansättningar?"@Article{sos, author = {Jonas Sj\"{o}bergh and Viggo Kann}, title = {Vad kan statistik avsl\"{o}ja om svenska sammans{\"a}ttningar?}, journal = {Spr{\aa}k och Stil}, year = {2006}, volume = {16}, number = {}, pages = {199--214} }
Artiklarna finns som PDF här: Finding the Correct Interpretation of Swedish Compounds a Statistical Approach och Vad kan statistik avslöja om svenska sammansättningar?.


JavaSDM

JavaSDM är ett verktyg för Random Indexing (en vektorrymdsmodell för lexikal semantik), skrivet i Java. JavaSDM innehåller även en stemmer (ett program för trunkering, återföra böjda ord till ordets rot) byggd på Porters algoritm. Det finns också Javaklasser för att prata med onlineversionerna av Granska, Särstava, m.m.

Ladda ned

Det finns två paket att välja på för JavaSDM: JavaSDM med data och JavaSDM, endast kod och dokumentation (senast publicerade 2006-12-13). Det går även att ladda ned äldre versioner av JavaSDM.

Det finns också ett relaterat paket som innehåller diverse likhetsmått (senast publicerat 2006-11-16) för vektorer och matriser, också skrivet i Java.

Dokumentation

Paketen att ladda ned innehåller även all dokumentation för JavaSDM. Dokumentationen till JavaSDM för de klasser m.m. som ingår finns också online som JavaDoc. Det finns en beskrivning av hur man kör JavaSDM för Random Indexing och en beskrivning av hur man använder de andra verktygen i JavaSDM (dess stemmer, hur man kontaktar Granska, m.m.).

Dokumentation till likhetsmåtten (JavaDoc) finns också online.


Stomp

Stomp är en ordklasstaggare. Den är relativt oberoende av vilket språks som ska taggas, men den behöver en taggad referenskorpus på samma språk som de texter som ska taggas. Stomp är skapad för att göra fel på andra sätt än vad de vanliga metoderna för ordklasstaggning gör. Stomp gör fler fel än de vanliga metoderna, men gör rätt på en del ord som är svåra för andra metoder. Om du bara behöver en ordklasstaggare är det nog bättre att använda Granskas taggare ovan.

Stomp använder inte n-gram av taggar (vilket är det vanliga sättet att tagga ord) utan letar efter den längsta sekvensen av ord som är desamma i referenstexterna och i den aktuella texten och väljer samma tagg som i referenstexten där. Det faktum att Stomp gör andra typer av fel än andra taggare gör att Stomp är användbar om man har en ensemble av taggare (flera taggare som tillsammans får rösta om vilken tagg som ska användas).

En egenhet i den här versionen av Stomp är att alla numeriska värden förutsätts ha ersatts med "4711" i texterna. Det är inte så praktiskt, men är det ett problem bör det vara rättframt att ändra koden så att den fungerar bättre för numeriska värden.

Ladda ned

Källkoden till Stomp (senast publicerad 2005-11-22) är skriven i C++.

Dokumentation

Vill du referera till Stomp kan du använda:

Sjöbergh, 2003, "Stomp, a POS-tagger with a different view"@inproceedings{stomp2003, author = {Jonas Sj\"{o}bergh}, title = {Stomp, a {POS}-tagger with a different view}, booktitle = "Proceedings of {RANLP}-2003", pages ="440--444", address = "Borovets, Bulgaria", year = "2003" }
Artikeln finns som PDF här: Stomp, a POS-tagger with a different view.


AutoEval

AutoEval är ett verktyg för att automatisera utvärdering av språkteknologiska system.

Ladda ned

Källkoden till AutoEval (senast publicerad 2020-08-17) är skriven i C++. AutoEval behöver även biblioteken Xerces, Boost, och zlib för att fungera.

Dokumentation

Vill du referera till AutoEval kan du använda:

Bigert, Ericson & Solis, 2003, "Missplel and AutoEval: Two Generic Tools for Automatic Evaluation"@inproceedings{Bigert03toolbox, author = "Johnny Bigert and Linus Ericson and Antoine Solis", year = "2003", title = "{Missplel} and {AutoEval}: Two Generic Tools for Automatic Evaluation", booktitle = "Proceedings of Nodalida 2003", address = "Reykjavik, Iceland" }
Artikeln finns som PDF här: Missplel and AutoEval: Two Generic Tools for Automatic Evaluation.


Missplel

Missplel är ett verktyg för att införa realistiska stavfel i svensk text. Det går att välja olika sorters fel, t.ex. "sound alike"-fel (fel där skribenten känner till ett ord men inte vet hur det stavas) eller fel där skribenten råkat trycka på en närliggande tangent på tangentbordet.

Ladda ned

Källkoden till Missplel (senast publicerad 2022-04-05) är skriven i C++. Missplel behöver även biblioteken Xerces, Boost, och zlib för att fungera.

Missplel behöver en lexikonfil med ordfrekvens, ord, ordklasstagg, och lemmaform för generering av vissa typer av fel. Om du inte har en egen sådan finns det en stor sådan fil bland lexikonfilerna till Granskas taggare (filen "cwtl").

Online

Missplel finns tillgängligt online, via REST och via sockets.

Dokumentation

Vill du referera till Missplel kan du använda:

Bigert, Ericson & Solis, 2003, "Missplel and AutoEval: Two Generic Tools for Automatic Evaluation"@inproceedings{Bigert03toolbox, author = "Johnny Bigert and Linus Ericson and Antoine Solis", year = "2003", title = "{Missplel} and {AutoEval}: Two Generic Tools for Automatic Evaluation", booktitle = "Proceedings of Nodalida 2003", address = "Reykjavik, Iceland" }
Artikeln finns som PDF här: Missplel and AutoEval: Two Generic Tools for Automatic Evaluation.


Infomat

Infomat är ett verktyg för att visualisera och utforska stora vektorrymder. Sådan dyker ofta upp inom informationssökning ("information retreival"). Infomat har en egen hemsida: Infomathemsidan där det finns källkod, dokumentation, exempel m.m.

Ladda ned

Du kan ladda ned flera versioner av Infomat från Infomathemsidan. Här är en snabblänk till senaste versionen av Infomat (publicerad 2010-03-05).

Dokumentation

Infomathemsidan har diverse dokumentation till Infomat.

Infomat JavaDoc har information om koden.

Hur man använder Infomat, en översikt

Utförlig manual till Infomat (i PDF).

Vill du referera till Infomat kan du använda:

Rosell, 2007, "Infomat - A Vector Space Visualization Tool"@inproceedings{infomat, author = {Magnus Rosell}, title = "Infomat -- A Vector Space Visualization Tool", booktitle = {Proceedings of the Workshop Semantic Content Acquisition and Representation (SCAR) 2007}, address = "Tartu, Finland", year = "2007" }
Artikeln finns i PDF här: Infomat - A Vector Space Visualization Tool


Snålgranska

Snålgranska är ett verktyg för grammatikgranskning. Det använder maskininlärning för att hitta tre sorters fel i svensk text. Snålgranska är tränad på felfri text med artificiella fel införda. Snålgranska är inte lika bra som Granska på att hitta fel, men det är mycket mindre arbete att skapa en ny Snålgranska (t.ex. för ett språk som inte har något verktyg för grammatikgranskning) än det är att skapa en ny Granska. Snålgranska hittar en del fel som inte Granska hittar (och tvärtom, förstås) så de kompletterar varandra i viss mån också.

Ladda ned

Snålgranskas källkod (senast publicerad 2022-04-14) är skriven i C++. Snålgranska förväntar sig att texten som kommer in är ordklasstaggad av Granskas taggare eller någon annan ordklasstaggare som använder samma tagguppsättning. För kongruensfel förväntas även taggarna ha delats upp i mindre beståndsdelar enligt denna fil med taggmappning för Snålgranska.

Allt detta gör att det är lite bökigt att köra Snålgranska själv, och det är förmodligen enklare att använda online-versionen nedan. Den tar vanlig text och gör allt som behövs med texten för att kunna anropa Snålgranska.

Online

Snålgranska finns tillgängligt online, via REST och via sockets.

Dokumentation

Vill du referera till kan du använda:

Sjöbergh & Knutsson, 2005, "Faking Errors to Avoid Making Errors: Very Weakly Supervised Learning for Error Detection in Writing"@inproceedings{snaalgranska, author = {Jonas Sj\"{o}bergh and Ola Knutsson}, title = "Faking Errors to Avoid Making Errors: Very Weakly Supervised Learning for Error Detection in Writing", booktitle = "Proceedings of {RANLP} 2005", address = "Borovets, Bulgaria", pages = "506--512", year = "2005" }
Artikeln finns som PDF här: Faking Errors to Avoid Making Errors: Very Weakly Supervised Learning for Error Detection in Writing.


Tillbaka till Skrutten


Uppdaterad 2022-04-14