Hitta ordklass och grundform för ord i svensk text

Med detta API kan du hitta ordklass (substantiv, verb, adjektiv, ...) och grundform (programmet -> program) för ord i svensk text.

Skriv in en svensk mening:

Läs mer om API:et

Om API:et

API:et bygger på efselab, ett projekt vid Stockholms Universitet. Efselab gör allt grovarbete:

JSON Tagger (detta projekt) lägger till:

Att tänka på:

Vem ligger bakom detta?

Vill du använda API:et?

Göra anrop

API:et kräver att du skickar en POST-request över HTTP. Det går att göra i alla plattformar och programmeringsspråk, men här är några av de vanligaste:

cURL (finns förinstallerat på alla Mac och Linux-datorer)

curl http://json-tagger.herokuapp.com/tag -d "Fördomen har alltid sin rot i vardagslivet - Olof Palme"

Python 2 (med hjälp av requests)

# -*- coding: utf-8 -*-
import requests
r = requests.post("http://json-tagger.herokuapp.com/tag", data=u"Fördomen har alltid sin rot i vardagslivet - Olof Palme".encode("utf-8"))
print r.json()

Python 3 (med hjälp av requests)

import requests
r = requests.post("http://json-tagger.herokuapp.com/tag", data="Fördomen har alltid sin rot i vardagslivet - Olof Palme".encode("utf-8"))
print(r.json())

Ruby (med hjälp av http.rb)

require 'http'
r = HTTP.post("http://json-tagger.herokuapp.com/tag", :body => "Fördomen har alltid sin rot i vardagslivet - Olof Palme")
puts r.to_s

Node.js (med hjälp av request)

var request = require('request');
request.post({url: 'http://json-tagger.herokuapp.com/tag', body: "Fördomen har alltid sin rot i vardagslivet - Olof Palme"}, function (error, response, body) {
    console.log(body)
})

Svaret från API:et

API:et returnerar JSON, ett format som det finns bibliotek för att läsa i alla programmeringsspråk.

{
    "sentences": [
        [
            {
                "word_form": "Fördomen",
                "lemma": "fördom",
                "suc_tags": {
                    "pos_tag": "NN",
                    "features": "UTR|SIN|DEF|NOM"
                },
                "ud_tags": {
                    "pos_tag": "NOUN",
                    "features": "Case=Nom|Definite=Def|Gender=Com|Number=Sing"
                },
                "token_id": "tok:0:0"
            },
            {
                "word_form": "har",
                "lemma": "ha",
                "suc_tags": {
                    "pos_tag": "VB",
                    "features": "PRS|AKT"
                },
                "ud_tags": {
                    "pos_tag": "VERB",
                    "features": "Mood=Ind|Tense=Pres|VerbForm=Fin|Voice=Act"
                },
                "token_id": "tok:0:1"
            },
            {
                "word_form": "alltid",
                "lemma": "alltid",
                "suc_tags": {
                    "pos_tag": "AB",
                    "features": null
                },
                "ud_tags": {
                    "pos_tag": "ADV",
                    "features": "_"
                },
                "token_id": "tok:0:2"
            },
            {
                "word_form": "sin",
                "lemma": "sin",
                "suc_tags": {
                    "pos_tag": "PS",
                    "features": "UTR|SIN|DEF"
                },
                "ud_tags": {
                    "pos_tag": "DET",
                    "features": "Definite=Def|Gender=Com|Number=Sing|Poss=Yes"
                },
                "token_id": "tok:0:3"
            },
            {
                "word_form": "rot",
                "lemma": "rot",
                "suc_tags": {
                    "pos_tag": "NN",
                    "features": "UTR|SIN|IND|NOM"
                },
                "ud_tags": {
                    "pos_tag": "NOUN",
                    "features": "Case=Nom|Definite=Ind|Gender=Com|Number=Sing"
                },
                "token_id": "tok:0:4"
            },
            {
                "word_form": "i",
                "lemma": "i",
                "suc_tags": {
                    "pos_tag": "PP",
                    "features": null
                },
                "ud_tags": {
                    "pos_tag": "ADP",
                    "features": "_"
                },
                "token_id": "tok:0:5"
            },
            {
                "word_form": "vardagslivet",
                "lemma": "vardagsliv",
                "suc_tags": {
                    "pos_tag": "NN",
                    "features": "NEU|SIN|DEF|NOM"
                },
                "ud_tags": {
                    "pos_tag": "NOUN",
                    "features": "Case=Nom|Definite=Def|Gender=Neut|Number=Sing"
                },
                "token_id": "tok:0:6"
            },
            {
                "word_form": "-",
                "lemma": "-",
                "suc_tags": {
                    "pos_tag": "MID",
                    "features": null
                },
                "ud_tags": {
                    "pos_tag": "PUNCT",
                    "features": "_"
                },
                "token_id": "tok:0:7"
            },
            {
                "word_form": "Olof",
                "lemma": "Olof",
                "suc_tags": {
                    "pos_tag": "PM",
                    "features": "NOM"
                },
                "ud_tags": {
                    "pos_tag": "PROPN",
                    "features": "Case=Nom"
                },
                "token_id": "tok:0:8"
            },
            {
                "word_form": "Palme",
                "lemma": "Palme",
                "suc_tags": {
                    "pos_tag": "PM",
                    "features": "NOM"
                },
                "ud_tags": {
                    "pos_tag": "PROPN",
                    "features": "Case=Nom"
                },
                "token_id": "tok:0:9"
            }
        ]
    ]
}

Förklaring av svarsformatet

sentences
En lista med meningar, som i sin tur består av ord. Varje ord har följande egenskaper:
word_form
Ordet som det skickades in till API:et, oförändrat.
Exempel: "Fördomen"
lemma
Grundformen för detta ord.
Exempel: "fördom"
suc_tags
Här finns ordklasstaggar för detta ord i SUC-format.
pos_tag
Ordklassen för detta ord, som förkortningar med två eller tre bokstäver. En förklaring av de olika ordklasstaggarna hittar du nedan.
Exempel: "NN"
morph_feat
Mer detaljerade egenskaper för just den här ordklassen, i form av trebokstavsförkortningar. Om det finns flera egenskaper skiljs dom med "|"-tecknet. Om det är osäkert vilken tagg som gäller kan flera taggar ges med "/" mellan. En förklaring av de mer specifika taggarna hittar du nedan.
Exempel: "UTR|SIN|DEF|NOM"
ud_tags
Här finns ordklasstaggar för detta ord i Universal Dependency (UD)-format. Detta format fungerar för fler språk än svenska så det kan vara användbart om du ska skicka vidare resultatet till ett annat system.
pos_tag
Ordklassen för detta ord, som förkortningar med tre eller fyra bokstäver.
Exempel: "NOUN"
morph_feat
Mer detaljerade egenskaper för just den här ordklassen, i form av nyckel/värde-par. Om det finns flera egenskaper skiljs dom med "|"-tecknet.
Exempel: "Case=Nom|Definite=Def|Gender=Com|Number=Sing"
token_id
Ett ID som beskriver var i originaltexten som detta ord hittades. Börjar alltid med "net", följt av ett kolon och numret på meningen där ordet stod (första meningen är noll), följt av ett kolon och det antal tecken från början där ordet stod (första tecknet är noll).
Exempel: "tok:0:0"

Förklaring av SUC-ordklasstaggarna

Förkortningarna i pos_tag motsvarar alltså ordklasser. Ordklasserna (både dessa och de mer specifika nedan) kommer från ett projekt som heter Stockholm Umeå Corpus. Över en miljon ord har manuellt taggats, och denna databas har sen använts för att träna efselab.

Kod Ordklass Exempel
ABAdverbinte
DTDetermineraredenna
HAFrågande/relativt adverbnär
HDFrågande/relativ determinerarevilken
HPFrågande/relativt pronomensom
HSFrågande/relativt possessivt pronomenvars
IEInfinitivmärkeatt
INInterjektionja
JJAdjektivglad
KNKonjunktionoch
NNSubstantivpudding
PCParticiputsänd
PLPartikelut
PMEgennamnMats
PNPronomenhon
PPPrepositionav
PSPossessivt pronomenhennes
RGGrundtaltre
ROOrdningstaltredje
SNSubjunktionatt
UOUtländskt ordthe
VBVerbkasta
MADMeningsavslutare. (punkt)
MIDMeningsdelare, (komma)
PADParvis skiljetecken- (streck)

Förklaring av de mer specifika SUC-taggarna

Ordklasserna ovan är relativt grovkorniga. För att gå mer på djupet finns även specifika böjningsformer i morph_feat. Notera att femininum inte finns med bland genusformerna eftersom det inte påverkar böjningen på svenska.

Paradigm Kod Legend Gäller för...
Genus UTR Utrum DT, HD, HP, JJ, NN, PC, PN, PS, (RG, RO)
NEU Neutrum
MAS Maskulinum
Numerus SIN Singular DT, HD, HP, JJ, NN, PC, PN, PS, (RG, RO)
PLU Plural
Species IND Obestämd DT, (HD, HP, HS), JJ, NN, PC, PN, (PS, RG, RO)
DEF Bestämd
Kasus NOM Nominativ JJ, NN, PC, PM, (RG, RO)
GEN Genitiv
Tempus PRS Presens VB
PRT Imperfekt/Preteritum
SUP Supinum
INF Infinitiv
Diates AKT Aktivum VB
SFO Passivum
Modus KON Konjunktiv VB
IMP Imperativ
Particip PRS Presens particip PC
PRF Perfekt particip
Komparation POS Positiv (AB), JJ
KOM Komparativ
SUV Superlativ
Pronomenform SUB Subjekt PN
OBJ Objekt
Sammansatt SMS Sammansatt Alla ordklasser
Förkortning AN Förkortning Alla ordklasser