Skip to main content

Insticksprogram till Sparv som använder KBs modeller

Submitted by Kristoffer Andersson on 2025-12-10

Vi har under året utvecklat följande plugin till Sparv, Språkbankens analysplattform, som använder olika modeller som KB-Labb skapat.

sparv-sbx-word-prediction-kb-bert

Detta plugin använder KBLab/bert-base-swedish-cased för att förutse de vanligaste orden för varje ord i en mening.

Om vi som exempel tar meningen Engelbert tar Volvon till Tele2 Arena och kör Sparv med sparv-sbx-word-prediction-kb-bert så får vi följande xml ut (utdrag):

<token word-prediction--kb-bert="|Jag:0.388|Vi:0.384|Han:0.082|De:0.031|Hon:0.022|">Engelbert</token>
<token word-prediction--kb-bert="|tar:0.541|tog:0.208|kör:0.157|körde:0.050|åker:0.004|">tar</token>
<token word-prediction--kb-bert="|tunnelbanan:0.275|oss:0.118|bussen:0.116|mig:0.100|bilen:0.099|">Volvon</token>
<token word-prediction--kb-bert="|till:0.897|från:0.038|mot:0.028|på:0.009|förbi:0.007|">till</token>
<token word-prediction--kb-bert="|Friends:0.584|Stockholm:0.136|Globen:0.037|Djurgården:0.034|Stockholms:0.027|">Tele2</token>
<token word-prediction--kb-bert="|arena:0.518|Arena:0.471|,:0.002|Globen:0.001|Stockholm:0.001|">Arena</token>

Värdena är sannolikheter (mellan 0 och 1). Här kan vi se att varje ord är annoterat med de sannolikaste orden på den platsen i samma mening.

Läs mer här: https://spraakbanken.gu.se/analyser/sbx-swe-word_prediction-kb_bert

sparv-sbx-sentiment-kb-sent

Detta plugin använder KBLab/robust-swedish-sentiment-multiclass för att analysera om en mening är positiv, neutral eller negativ.

Vi kan titta på tre exempel:

  • "Han var glad."
  • "Rihanna uppges gravid."
  • "Jag har ätit sämre."

Om vi kör Sparv med sparv-sbx-sentiment-kb-sent så får vi följande xml:

<?xml version='1.0' encoding='utf-8'?>
<text>
  <sentence sentiment--kb-sent="|POSITIVE:0.9|">
	<token>Han</token>
	<token>var</token>
	<token>glad</token>
	<token>.</token>
  </sentence>
  <sentence sentiment--kb-sent="|NEUTRAL:1.0|">
    <token>Rihanna</token>
    <token>uppges</token>
    <token>gravid</token>
    <token>.</token>
  </sentence>
  <sentence sentiment--kb-sent="|NEGATIVE:0.7|">
    <token>Jag</token>
    <token>har</token>
    <token>ätit</token>
    <token>sämre</token>
    <token>.</token>
  </sentence>
</text>

Värdena är normerade så att de ligger emellan 0 och 1, där 1 är starkast. I detta exempel har varje mening fått ett värde, men en mening kan få flera sentiment kombinerade. Exempel: sentiment--kb-sent="|NEUTRAL:0.938|POSITIVE:0.798|NEGATIVE:0.759|

Antalet decimaler i annoteringen kan styras genom att lägga till följande i config.yaml för din korpus:

sbx_sentiment_kb_sent:
  num_decimals: 5 # default is 3

Antalet decimaler styr också cut-off, det vill säga alla värden som avrundas till 0 med det antalet decimaler filtreras bort.

Läs mer här: https://spraakbanken.gu.se/analyser/sbx-swe-sentiment_sentence-transformers-kblab_robust_swedish_sentiment_multiclass

sparv-sbx-emotions-kb-emoclass

Detta plugin använder KBLab/emotional-classification för att analysera vilka känslor en mening ger uttryck för. De känslor som kan kännas igen är:

  • absence of emotion (känsla saknas)
  • happiness (glädje)
  • love/empathy (kärlek/empati)
  • fear/anxiety (oro/rädsla)
  • sadness/disappointment (sorg/besvikelse)
  • anger/hate (ilska/hat)
  • hope/anticipation (hopp/förväntan)

Om vi analyserar samma meningar som för sparv-sbx-sentiment-kb-sent så får vi följande xml:

<?xml version='1.0' encoding='utf-8'?>
<text>
  <sentence emotion--kb-emoclass="HAPPINESS">
	<token>Han</token>
	<token>var</token>
	<token>glad</token>
	<token>.</token>
  </sentence>
  <sentence emotion--kb-emoclass="ABSENCE OF EMOTION">
    <token>Rihanna</token>
    <token>uppges</token>
    <token>gravid</token>
    <token>.</token>
  </sentence>
  <sentence emotion--kb-emoclass="SADNESS/DISAPPOINTMENT">
    <token>Jag</token>
    <token>har</token>
    <token>ätit</token>
    <token>sämre</token>
    <token>.</token>
  </sentence>
</text>

Språket för annoteringarna kan ändras genom att lägga till dessa rader i din korpus config.yaml:

sbx_emotions_kb_emoclass:
	# supported languages 'en' (default) and 'sv'
	annotation_lang: sv

Läs mer här: https://spraakbanken.gu.se/analyser/sbx-swe-emotion_sentence-transformers-kblab_emotional_classification

Kontakta sb-info@svenska.gu.se om du har några frågor.