Web service

Introduktion

Korps nättjänst, som till största delen är ett gränssnitt till CQP, används för att hämta information ur Språkbankens korpusar. Nättjänsten ligger på adressen:

http://spraakbanken.gu.se/ws/korp

Anrop

Frågor till nättjänsten görs genom GET-anrop:

http://spraakbanken.gu.se/ws/korp?command=...&corpus=...&...

Svaret kommer i form av ett JSON-objekt, vilket visas som text i webbläsaren.

Kommandon som stöds av nättjänsten

Nedan följer en förteckning över de kommandon som stöds av nättjänsten, och vilka argument som accepteras. Argumenten för varje kommando presenteras som en punktlista. När det står

  • a = ...
  • [opt] q = "XF"
  • [multi] x = ...

så betyder det dels att q är optionellt, dels att x kan ta flera värden separerade med kommatecken, dels att URL:en blir:

?a=...&q=XF&x=...,...

Följande argument kan användas vid samtliga frågor:

  • [opt] encoding = <Teckenkodning för att kommunicera med CQP. Default är UTF-8.>
  • [opt] indent = <Indentering av det strukturerade resultatet för att göra det mer lättläst. Default är att returnera en kompakt JSON-representation utan indentering.>
  • [opt] callback = <En sträng som returneras runt JSON-objektet, ibland nödvändigt vid AJAX-anrop.>

Om något blir fel (t.ex. icke-existerande kommando, icke-existerande korpus eller syntaxfel i CQP-uttrycket) så returneras följande:

    {
      "ERROR": {
        "type": <feltyp>, 
        "value": <felmeddelande>, 
        "traceback": <Python-information>
      }
    }

Dessutom returneras alltid ett tidsvärde i JSON-objektet:

    {
      "time": <antal sekunder det tog för skriptet att svara (realtid, inte CPU-tid)>
    }

Allmän information

Hämtar information om vilka korpusar som finns på servern och vilken version av CQP som används.

  • [opt] command = "info"

Returnerar

    {
      "corpora": [<lista med korpusnamn på servern>],
      "cqp-version": <versionsnummer för CQP>
    }

Exempel

?command=info

Korpusinformation

Hämtar information om en eller flera korpusar och tillhörande attribut.

  • [opt] command = "info"
  • [multi] corpus = <korpusnamn>

Returnerar

    {
      "corpora": {
        <korpusnamn>: {
          "attrs": {
            "p": [<lista med positionella attribut>],
            "s": [<lista med strukturella attribut>],
            "a": [<lista med align-attribut, för länkade korpusar>]
          },
          "info": {
            "Charset": <korpusens teckenkodning>,
            "Size": <antal tokens i korpusen>
          }
        }
      "total_size": <totalt antal tokens i korpusarna ovan>
      }
    }

Exempel

?command=info&corpus=ROMI,PAROLE

Konkordans

Utför konkordanssökning i en eller flera korpusar.

  • [opt] command = "query"
  • [multi] corpus = <korpus>
  • cqp = <CQP-uttryck>
  • start = <startrad>
  • end = <slutrad>
  • [opt] defaultcontext = <kontext som visas>
  • [opt][multi] context = <kontext som visas för specifik korpus i stället för default, anges som 'korpusnamn:kontext'>
  • [opt, multi] show = <positionella attribut som ska visas>
  • [opt, multi] show_struct = <strukturella attribut som ska visas>
  • [opt] cut = <hur många resultat som max ska sökas på>
  • [opt] within = <begränsa sökningen till inom angivet strukturellt attribut>

Även om man inte anger "show=word" så visas ordet i konkordansen.

Returnerar

    {
      "hits": <totala antalet träffar>,
      "corpus_hits": {
        <korpus>: <antalet träffar>,
        ...
      }
      "kwic": [
        <första konkordansraden>,
        {
          "match": {
            "start": <startposition inom raden>,
            "end": <slutposition inom raden>,
            "position": <globala korpuspositionen för träffen>,
          },
          "tokens: [
            <första token i träffraden>,
            {
              "word": <ordform>,
              "pos": <pos-attributet>,
              "saldo": <saldo-attributet>,
              ...
            }
            <tredje token i träffraden>,
            ...
          ],
          <om det ingår länkade korpusar>
          "aligned": {
            <alignad korpus>: [<lista med tokens>], ...
          }
        },
        <tredje konkordansraden>,
        ...
      ]
    }

Exempel som visar de 10 första meningarna/länkarna som matchar CQP-frågan: "och" [] [pos="NN"]

  • Frågar SUC2 och visar ordklass + grundform:

?command=query&corpus=SUC2&start=0&end=9&defaultcontext=1+sentence&cqp="och"+[]+[pos="NN"]&show=msd,lemma

  • Frågar SALTNLD_SWE och visar ordklass + den länkade nederländska texten:

?command=query&corpus=SALTNLD_SWE&start=0&end=9&context=1+link&cqp="och"+[]+[pos="NN"]&show=saltnld_nld

Ordbild

Givet ett lemgram hämtas vanliga dependensrelationer detta lemgram förekommer i.

  • command = "relations"
  • [multi] corpus = <korpus>
  • lemgram = <det lemgram man vill slå upp>
  • [opt] min = <lägsta önskade frekvens>
  • [opt] max = <max antal resultat>

Returnerar

    {
      "relations": [
        {
          "corpus": [
            <lista med korpusar i vilka träffar hittades>
          ], 
          "dep": <dependent-lemgram>,
          "depextra": <dependent-prefix>,
          "freq": <antal förekomster>,
          "head": <huvud-lemgram>,
          "mi": <lexicographer's mutual information-värde>,
          "rel": <relation>
        }, 
        ...
      ]
    }

Exempel som hämtar dependensrelationer för lemgrammet ge..vb.1

?command=relations&lemgram=ge..vb.1&corpus=ROMI

Ordbildsförekomster

Givet information om en dependensrelation (förslagsvis taget från en ordbildfråga ovan) hämtas de meningar i vilka denna relation förekommer.

  • command = "relations_sentences"
  • [multi] corpus = <korpus>
  • head = <huvud-lemgram>
  • dep = <dependent-lemgram>
  • [opt] depextra = <dependent-prefix>
  • rel = <relation>
  • [opt] start = <startrad>
  • [opt] end = <slutrad>

Returnerar

Returnerar en likadan struktur som för en vanlig konkordansfråga beskriven ovan.

Exempel som hämtar alla meningar innehållande dependensrelationen (ge..vb.1, SS, instruktion..nn.1)

?command=relations_sentences&corpus=ROMI&head=ge..vb.1&dep=instruktion..nn.1&rel=SS

Statistik

Beräknar frekvensen för ett eller flera attribut givet en CQP-fråga. Både absolut och relativ frekvens ges.

  • command = "count"
  • cqp = <cqp-uttryck>
  • [multi] groupby = <positionella och/eller strukturella attribut efter vilkas värden träffarna ska grupperas>
  • [multi] corpus = <korpus>
  • [opt] ignore_case = <attribut för vilka skiftläge ska ignoreras>

Returnerar

    {
      "corpora": {
        <korpus>: {
          "absolute": {
            <attribut1/attribut2/attribut3/...>: <absolut frekvens>,
            ...
          }, 
          "relative": {
            <attribut1/attribut2/attribut3/...>: <relativ frekvens>,
            ...
          },
          "sums": {
            "absolute": <absolut summa>, 
            "relative": <relativ summa>
          }
        },
      }, 
      "total": {
        "absolute": {
          <attribut1/attribut2/attribut3/...>: <absolut frekvens>,
          ...
        }, 
        "relative": {
          <attribut1/attribut2/attribut3/...>: <relativ frekvens>,
          ...
        },
        "sums": {
          "absolute": <absolut summa>, 
          "relative": <relativ summa>
        }
      }
      "count": <totalt antal olika värden>
    }

Exempel som returnerar frekvenser för de olika ordformerna av lemgrammet ge..vb.1

?command=count&corpus=ROMI&cqp=[lex+contains+"ge..vb.1"]&groupby=word&ignore_case=word

© University of Gothenburg 2009, Box 100, 405 30 Gothenburg, Sweden
Tel +46 31 786 0000, Contact

About the site

X
Loading