Ordbank-API

Ordbank-APIen er en REST-API som gir tilgang til ord (lemma) og relaterte ressurser i ordbanken.
For å få en beskrivelse av et lemma kan man enten søke eller slå direkte opp på ID. Andre ressurser kan slås opp på ID, eller listes ut. Spesifikasjonen til APIen ligger her

Lemma (ord)

Lemma er en fagterm for et oppslagsord i en ordbok e.l. I ordbanken kan man søke etter, eller slå opp på lemma.

Eksempel på direkte oppslag

Spesifikasjonen til denne operasjonen finner du her

GET /api/lemmas/34290 HTTP/1.1
Accept: application/json

…resulterer i

HTTP/1.1 200 Ok
Content-Type: application/json

{
    "id": 34290,
    "lemma": "katt",
    "type": 0,
    "subcat_tags": [],
    "language": "nob",
    "type_designation": "lemma",
    "word_class": "NOUN",
    "paradigm_info": [
      {
        "paradigm_id": 557,
        "tags": ["subst", "mask", "apell"],
        "standardisation": "STANDARD",
        "from": "1996-01-01",
        "to": null
      }
    ],
    "standardisation_timeline":[{
                                   "from": "1996-01-01",
                                    "to": null,
                                    "standardisation": "STANDARD"
                                 }]
}

Feltet lemma er det sentrale her, og inneholder grunnformen til det aktuelle ordet. Se lenger nede for forklaring av feltene type og paradigm_info.

Sammensatte ord

“Katt” er et enkelt ord, la oss se på “kattedyr” som er et sammensatt ord:

{
  "id": 34298,
  "lemma": "kattedyr",
  "type": 0,
  "subcat_tags": [],
  "language": "nob",
  "type_designation": "lemma",
  "initial_lexeme": "katt",
  "final_lexeme": "dyr",
  "junction": "e",
  "initial_lexeme_class": 0,
  "word_class": "NOUN",
  "paradigm_info": [
    {
      "paradigm_id": 659,
      "tags": ["subst", "nøyt", "apell"],
      "standardisation": "STANDARD",
      "from": "1996-01-01",
      "to": null
    }
  ],
  "standardisation_timeline": [{
                                     "from": "1996-01-01",
                                      "to": null,
                                      "standardisation": "STANDARD"
                                   }]
}

Her kommer i tillegg feltene initial_lexeme (forledd) som er første del av det sammensatte ordet. final_lexeme er etterleddet, og junction er en streng som binder sammen de to leddene. initial_lexeme_class er ID-en til forleddets ordklasse.

Typer av lemma

Feltet type i resultatene er en numerisk verdi mellom 0 og 9 (inklusive):

id kode forklaring
0 lemma vanlig ord
1 expr utrykk
2 suff suffiks
3 pref prefiks
4 abbr forkortelse
5 symb symbol
6 title tittel
7 ref ?
8 prob ?
9 name navn

Feltet type_designation inneholder koden.

Normering (paradigm_info)

Språkrådet fastsetter til enhver tid hva som er korrekt rettskrivning, dette kalles normering. Normering av ord er knyttet til bøyningsmønstre, på fagspråket kalt paradigmer. Dette uttrykkes i feltet paradigm_info i beskrivelsen av et lemma. Tilbake til eksemplet for “katt”:

{
    "paradigm_info": [
      {
        "paradigm_id": 557,
        "tags": ["subst", "mask", "apell"],
        "standardisation": "STANDARD",
        "from": "1996-01-01",
        "to": null
      }
    ]
}

Dette forteller oss at ordet “katt” skal bøyes etter paradigmet med ID 557. Det vet vi fordi verdien til standardisation er lik STANDARD som betyr “normert”, og at denne assosiasjonen mellom lemma og paradigme ikke har noen sluttdato to. Et ord kan ha flere normeringer samtidig, f.eks. ble alle bokmålssubstantiv av hunkjønn på et tidspunkt normert til også å kunne bøyes som hankjønnsord.

Feltet standardisation_timeline oppsummerer denne informasjonen med en tidslinje for hver normeringsstatus.

Oppslag på lemma med bøyning

For å få alle bøyninger inkludert i resultatet bruker man query-parameteret inflect. Eksempel:

GET /api/lemmas/34290?inflect=true HTTP/1.1
Accept: application/json

…resulterer i

HTTP/1.1 200 Ok
Content-Type: application/json

{
    "id": 34290,
    "lemma": "katt",
    "type": 0,
    "subcat_tags": [],
    "language": "nob",
    "type_designation": "lemma",
    "word_class": "NOUN",
    "paradigm_info": [
      {
        "paradigm_id": 557,
        "standardisation": "STANDARD",
        "from": "1996-01-01",
        "to": null,
        "inflection":  [
        {
          "word_form": "katt",
          "tags": [
            "subst",
            "mask",
            "appell",
            "ent",
            "ub"
          ]
        },
        {
          "word_form": "katten",
          "tags": [
            "subst",
            "mask",
            "appell",
            "ent",
            "be"
          ]
        },
        {
          "word_form": "katter",
          "tags": [
            "subst",
            "mask",
            "appell",
            "fl",
            "ub"
          ]
        },
        {
          "word_form": "kattene",
          "tags": [
            "subst",
            "mask",
            "appell",
            "fl",
            "be"
          ]
        }
      ]
      }
    ]
}

Bøyningene kommer som lister av strenger assosiert med paradigmet som ble brukt til å produsere bøyningene. For å få info om hvilke former disse bøyningene er må man fokusere på selve paradigmet ordet er bøyd etter. Mer om dette lenger nede.

Eksempel på søk

Man kan søke etter lemma. “Wildcards” i form av asterisk er tillatt.

GET /api/lemmas?query=katt* HTTP/1.1
Accept: application/json

…resulterer i

HTTP/1.1 200 Ok
Content-Type: application/json

[
  {
    "id": 34290,
    "lemma": "katt",
    "language": "nob",
    "href": "/api/lemmas/34290"
  },
  {
    "id": 34298,
    "lemma": "kattedyr",
    "language": "nob",
    "href": "/api/lemmas/34298"
  },
  {
    "id": 1045448,
    "lemma": "katt",
    "language": "nno",
    "href": "/api/lemmas/1045448"
  },
  ...
]

Siden det er potensielt mange treff i et slikt søk er resultatene i utgangspunktet strippet ned til å inneholde id og oppslagsord. Feltet href inneholder en URL for direkte oppslag på lemmaet. Query-parameter stubs=false gir fullstendige resultater. Maks. 2000 ufullstendige og maks. 300 fullstendige resultater returneres. Hvis antallet treff man får stemmer med disse tallene må man anta at resultater har blitt utelatt. I så fall bør søket gjøres mer spesifikt.

For å søke i bøyde former av ord kan man legge til query-parameteren search_inflection=true. Dette vil f.eks. gi treff på verbet “å fly” dersom man søker på “fløy”.

For å begrense søket til én av målformene. bruk query-parameter language med én av verdiene nob (bokmål) eller nno (nynorsk)

For å søke i et utvidet utvalg av ord (og uttrykk), bruk query-parameter extended_vocabulary=true

For mer info, se spesifikasjonen

Paradigme

Et paradigme er et bøyningsmønster. Man kan slå opp paradigmer enten på
unik ID (denne refereres det til i output for lemma), eller på kombinasjonen språk-id og kode.

Oppslag på id

Eksempel på oppslag på id:

GET /api/paradigms/135 HTTP/1.1
Accept: application/json

Oppslag på språk og kode

Eksempel på oppslag på språk (nob = bokmål) og kode (‘22A’, gir mening for de som arbeider med dette til daglig):

GET /api/paradigms/nob/22A HTTP/1.1
Accept: application/json

Outputformat

I begge tilfeller får man følgende resultat:

HTTP/1.1 200 Ok
Content-Type: application/json

{
  "id": 135,
  "language": "nob",
  "code": "22A",
  "description": "sterk vokalskifte_Y>ØY>O pret_0 perf_+ET adj_m/f_+ET adj_be_fl_NE",
  "inflection_group": "VERB"
  "inflection": [
    "y+e",
    null,
    "y+er",
    "y+es",
    "øy+",
    "o++et",
    "o++et",
    "o++et",
    null,
    "o+ne",
    "o+ne",
    "y+ende",
    "y+",
    null,
    null
  ],
}

Beskrivelse av feltene

Bøyningsgrupper

Alle paradigmer (unntatt noen få som ikke inneholder bøyningsinformasjon) tilhører en bøyningsgruppe. Hver slik bøyningsgruppe definerer en liste med grammatiske former, og bøyningene i et paradigme samsvarer med formene til bøyningsgruppen som paradigmet tilhører. Man kan liste ut, eller slå opp bøyningsgrupper.

Oppslag

Eksempel på oppslag:

GET /api/inflectionGroups/0 HTTP/1.1
Accept: application/json

…resulterer i:

HTTP/1.1 200 Ok
Content-Type: application/json

{
    "id": "ADJ",
    "word_class": "ADJ",
    "designation": "adjektiv",
    "forms": [
      19,
      22,
      21,
      20,
      24,
      27,
      26
    ]
  }

Beskrivelse av feltene

Liste

Komplett utlisting:

GET /api/inflectionGroups HTTP/1.1
Accept: application/json

Resultatet er en komplett liste med objekter som ovenfor.

Former

Hver grammatiske form tilhører en ordklasse. Formene en bøyningsgruppe bruker må tilhøre samme ordklasse som bøyningsgruppen.

Oppslag

Eksempel på oppslag:

GET /api/forms/0 HTTP/1.1
Accept: application/json

…resulterer i:

HTTP/1.1 200 Ok
Content-Type: application/json

{
    "id": "VERB",
    "word_class": "VERB",
    "code": "inf"
}

Beskrivelse av feltene

Liste

Komplett utlisting:

GET /api/forms HTTP/1.1
Accept: application/json

Resultatet er en komplett liste med objekter som ovenfor.

Ordklasser

Ordklasse er den mest generelle klassifiseringen av ord (via paradigme og bøyningsgruppe).

Oppslag

Eksempel på oppslag:

GET /api/wordClasses/0 HTTP/1.1
Accept: application/json

…resulterer i:

HTTP/1.1 200 Ok
Content-Type: application/json

{
    "id": "NOUN",
    "designation": "Substantiv"
}

Beskrivelse av feltene

Liste

Komplett utlisting:

GET /api/wordClasses HTTP/1.1
Accept: application/json

Resultatet er en komplett liste med objekter som ovenfor.

Annet

For en komplett beskrivelse av API-en, se https://ordbank.uib.no/swagger-ui.html