Finnish politics, measured.

A data-led look at the Eduskunta: 22,167 evaluated plenary speeches from 2019–2026. Who talks, what they ask, and where they sit on the ideological map.

All three language models evaluated the same speech sample described above. The sample does not cover all plenary speeches. See dataset scope.

What does the AI analyze? DeepSeek V4 Flash (DeepSeek), Clef Flash (Cloudflare Workers AI), and Jev (TypeSafe) classify each speech’s main policy topic, expressed economic stance (left–right), and values stance (GAL: green, libertarian, cosmopolitan; TAN: traditional, authoritarian, nationalist). You can compare several models together on the party compass and switch models in topics and trends. The number of speeches with an accepted economic or values score varies by model and is smaller than the evaluated sample.

Interpretations, not verified facts. Models can make mistakes and misread context, irony, or quoted positions. Speech averages depend on topics, sampling, and which speeches a model can score; they do not establish an MP’s beliefs or whether promises were fulfilled. Comparing models reveals differences, not which is correct. Clef and Jev do not collect supporting quotes or fact-check claims in this analysis. Activity figures are counts from the source records.

01 · activity

Parliamentary activity

Compare speeches, questions, and initiatives by party.

→
04 · topics

Which party talks about what?

Compare party priorities with the parliamentary average.

→
02 · ideology

Compass

Compare parties’ economic and values positions across three speech models, CHES, Manifesto Project, and EVA.

→
05 · time

How does positioning shift?

Track party positions and topics over time.

→
03 · comparison

Parliamentary work vs election answers

Explore MPs’ speech positions and compare them with independently projected 2023 Yle questionnaire answers.

→
vas sd vihr liik r kesk kd kok ps
dataset
MPs
281
Questions & initiatives
8,266
Speeches evaluated by language models (shared sample)
22,167
Parliamentary years
2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026
Speeches through
21/07/2026
Votes through
21/07/2026
Questions & initiatives through
23/07/2026
Question & initiative years
2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026
Dataset created
30/07/2026

Activity

Parliamentary activity

Compare speeches, questions, and initiatives by party across 2019–2026. Adjust for seats or sitting MPs to compare parties of different sizes.

Speech figures describe the selected analytical sample, not every parliamentary speech. See dataset scope.

what
normalize
breakdown
when by type
term
sort

Speeches come from plenary puheenvuoro records; the type buckets collapse the Finnish labels into six groups (Regular, Reply, Fast, Group, Intro, Other). Questions & initiatives are first-signer matters: KK written, SKT oral, VK interpellation, TPA/TAA/KA motions. Seat counts are from the official Vaalit.fi results (2019, 2023). "Sitting MPs" counts MPs who gave at least one speech in the term. Note the systematic government/opposition effect: governing parties file far fewer questions because they don't interrogate themselves. In the all-years view, per-seat figures divide by the combined seats across both electoral terms (seat-terms), while per-MP figures use distinct speakers across the whole period.

Topics

Which party talks about what?

Compare the topic shares of each party’s speeches with parliament overall.

term
group

Changes the speech analysis model for topics, trends, government/opposition, party outliers, the MP map and MP speech-position comparisons.

Sample and model details

All models evaluated the same 22,167 speeches. Chart filters reduce these counts.

deepseek-v4-flash. Other sections use the existing datasets. Differences show model interpretations, not which model is correct. Clef and Jev do not supply evidence quotes.

Which topics do parties emphasise?

Read one party row at a time. A value of 1 means the same topic share as parliament overall; 2 means twice that share. Darker cells mean greater relative emphasis, not more speeches.

color scale (over-index) below average → above average

The baseline stays fixed when filtering government/opposition. Topics use the selected model’s classifications of the shared speech sample.

Compass

Ideological compass

Compare parties’ economic and values positions across datasets. Each point shows one party’s position in one dataset.

Party positions on the compass

Horizontal axis: economic policy
−2 = left, +2 = right.
Vertical axis: values (GAL–TAN)
−2 = green and liberal (GAL), +2 = traditional and nationalist (TAN).
Datasets to show
tie-lines

Clear and neutral scores (−2…+2) are averaged by party. Mixed and unscorable positions are excluded from the means.

Show speech-model data
party Speech model econ GAL-TAN
Finns Party (ps) (ps) DeepSeek speeches 0.165 (n=2066) 1.154 (n=2758)
Social Democrats (sd) (sd) DeepSeek speeches -1.109 (n=2527) -0.821 (n=1729)
National Coalition (kok) (kok) DeepSeek speeches 0.275 (n=2008) 0.070 (n=1882)
Centre (kesk) (kesk) DeepSeek speeches -0.520 (n=1704) 0.063 (n=1517)
Greens (vihr) (vihr) DeepSeek speeches -1.058 (n=678) -1.445 (n=1123)
Left Alliance (vas) (vas) DeepSeek speeches -1.366 (n=850) -1.432 (n=687)
Christian Democrats (kd) (kd) DeepSeek speeches -0.317 (n=287) 0.549 (n=324)
Swedish Party (r) (r) DeepSeek speeches -0.199 (n=181) -0.842 (n=272)
Liike Nyt (liik) (liik) DeepSeek speeches 0.309 (n=55) 0.914 (n=35)
Reference datasets
DeepSeek speeches
Speech-derived party coordinates (plenary speeches 2019–2026). (−2..+2 per-party mean of 20,760 axis scores (18,316 speeches), model deepseek-v4-flash)
Clef Flash speeches
Speech-derived party coordinates (plenary speeches 2019–2026). (−2..+2 per-party mean of 19,772 axis scores (17,232 speeches), model clef-flash)
Jev speeches
Speech-derived party coordinates (plenary speeches 2019–2026). (−2..+2 per-party mean of 19,211 axis scores (16,097 speeches), model jev-1.13.0)
CHES
Chapel Hill Expert Survey: Expert judgments on party positions. (2014 Chapel Hill Expert Survey, Version 2015.1; 0–10 GAL-TAN → −2..+2 via (x-5)·0.4) GAL-TAN mapped with (x−5)×0.4; economic values are the project's normalized comparison series.
Manifesto
Manifesto Project (MARPOR): Coded party election manifestos. (Manifesto Project Dataset 2025a; RILE -100..+100 → -2..+2 via x/50) RILE mapped with x/50; GAL-TAN is a project-defined approximation from cultural categories.
EVA
EVA value survey: Finnish citizen value survey. (Suomen kuvitettu arvokartta 2023; Economic/social -1..+1 → -2..+2 via ×2) Coordinates were transcribed from the original publications into the comparison series and multiplied by two.
Ohjelmat
Party programmes (DeepSeek): DeepSeek-scored party principle & election programmes (Pohtiva archive), same axes. (program-stance-v1; −2..+2 per-party mean across all programmes) Programme-level DeepSeek scores are averaged by party across the stored Pohtiva snapshot.

Governing vs opposition

Changes the speech analysis model for topics, trends, government/opposition, party outliers, the MP map and MP speech-position comparisons.

Sample and model details

All models evaluated the same 22,167 speeches. The selected model produced an accepted score on at least one axis for 18,316 distinct speeches. Axis scores: economic 10,383, GAL–TAN 10,377. One speech can score on both axes. Chart filters reduce these counts.

deepseek-v4-flash. Other sections use the existing datasets. Differences show model interpretations, not which model is correct. Clef and Jev do not supply evidence quotes.

Mean speech positions in government and opposition. Each line connects the same party’s means on the selected axis.

axis
in opposition in government

Mean government minus opposition difference: economic +0.38 (7 parties), GAL–TAN +0.16. A positive difference means a more rightward or TAN mean in government. Period and government role vary together.

Show compass data
party axis in opposition in government shift
Christian Democrats (kd) (kd) economic -0.405 0.042 0.447
Christian Democrats (kd) (kd) GAL-TAN 0.462 0.769 0.307
Finns Party (ps) (ps) economic -0.105 0.544 0.649
Finns Party (ps) (ps) GAL-TAN 1.151 1.190 0.039
National Coalition (kok) (kok) economic 0.021 0.516 0.495
National Coalition (kok) (kok) GAL-TAN 0.064 0.178 0.114
Social Democrats (sd) (sd) economic -1.185 -0.871 0.314
Social Democrats (sd) (sd) GAL-TAN -0.878 -0.704 0.174
Centre (kesk) (kesk) economic -0.632 -0.371 0.261
Centre (kesk) (kesk) GAL-TAN 0.299 0.006 -0.293
Greens (vihr) (vihr) economic -1.127 -0.953 0.174
Greens (vihr) (vihr) GAL-TAN -1.643 -1.288 0.355
Left Alliance (vas) (vas) economic -1.485 -1.191 0.294
Left Alliance (vas) (vas) GAL-TAN -1.637 -1.203 0.434
Swedish Party (r) (r) economic — — —
Swedish Party (r) (r) GAL-TAN — — —
Liike Nyt (liik) (liik) economic — — —
Liike Nyt (liik) (liik) GAL-TAN — — —

MP compass

Dots show speech positions. Select a dot or search for an MP by name. A square marks the selected MP’s questionnaire position; a line connects the two estimates.

Changes the speech analysis model for topics, trends, government/opposition, party outliers, the MP map and MP speech-position comparisons.

Sample and model details

All models evaluated the same 22,167 speeches. The selected model produced an accepted score on at least one axis for 18,316 distinct speeches. Axis scores: economic 10,383, GAL–TAN 10,377. One speech can score on both axes. Chart filters reduce these counts.

deepseek-v4-flash. Other sections use the existing datasets. Differences show model interpretations, not which model is correct. Clef and Jev do not supply evidence quotes.

The map shows MPs with a speech position on both axes. A hollow point means at least one axis uses fewer than 10 scored speeches. These estimates are less certain. The 10-speech marker is a provisional guide; speech counts alone do not guarantee accuracy.

Loading MP positions…

Left Alliance (vas)Social Democrats (sd)Greens (vihr)Liike Nyt (liik)Swedish Party (r)Centre (kesk)Christian Democrats (kd)National Coalition (kok)Finns Party (ps) □ Election questionnaire 2023 (Yle) Fewer than 10 speeches

Party outliers

Pick a party and see its MPs on the Orpo-term speech compass. Highlighted are those furthest from the party speech mean toward the left or right (economic) and toward GAL or TAN.

A hollow point means at least one axis uses fewer than 10 scored speeches. These estimates are less certain. The 10-speech marker is a provisional guide; speech counts alone do not guarantee accuracy.

pick a party

Parliamentary work vs election answers

Vote alignment

Links between questionnaire statements and roll-call votes were matched by AI (DeepSeek) and have not been checked by a person.

By party

how often party members voted according to their election questionnaire answers

Per question

votes where representatives diverged from their answers

About

The documentation below describes the original dataset. Model comparison scope and sample counts appear beside the charts’ dataset controls.

About

  • Speeches
    All three language models evaluated the same sample of 22,167 plenary speeches, selected from records collected through the Eduskunta open-data speech search. It accumulated from capped API result pages in API return order; historical run settings were not persisted. The collected dataset’s exact IDs are in a machine-readable manifest (SHA-256 5e2dcbbabe9d869abd5b206be6b3a23b5401ffe51a130219562970468e46f248; yearly counts: 2019: 3,450, 2020: 6,180, 2021: 6,100, 2022: 6,095, 2023: 3,280, 2024: 6,290, 2025: 5,990, 2026: 4,143).
  • MPs
    281 distinct speakers with recorded speeches.
  • Questions & initiatives
    8,266 party-attributed matters from parliamentary years 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026: written and oral questions (KK, SKT), interpellations (VK), and motions (TPA, TAA, KA).
  • Stance scores
    The number of speeches with accepted scores varies by model and filters. The MP map and speech-position comparison use the selected speech analysis model. Counts of speeches with scores differ from the total evaluated sample. One speech can contribute a score on each axis; axis scores are not a count of speeches.
  • Area tags
    The original topic dataset uses title-based keyword rules. The speech-model comparison uses model classifications of the same speech sample.
  • Parliamentary years
    2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026

Topic-tagged speeches by month

The chart shows the monthly distribution of speeches in the original topic dataset. Each dated speech is counted once, by the month it was delivered. Colors distinguish parliamentary years 2019–2022 and 2023–2026. This scope differs from the shared model-comparison sample. Bars do not represent all parliamentary speeches. The topic dataset covers speeches from May 2019 – December 2025; later speeches are included only in the model-comparison sample.

The final month of the sample may be incomplete. Zero means the sample contains no topic-tagged speeches for that month.

Monthly counts as a table
MonthMarin (2019–2022)Orpo (2023–2026)
May 2019750
Jun 20194290
Jul 201900
Aug 201900
Sep 20193780
Oct 20199930
Nov 20197890
Dec 20197860
Jan 202000
Feb 20205210
Mar 20205960
Apr 20205790
May 20205420
Jun 20206270
Jul 202000
Aug 202000
Sep 20206040
Oct 20209730
Nov 20208290
Dec 20209010
Jan 202100
Feb 20216490
Mar 20216010
Apr 20213330
May 20218220
Jun 20215590
Jul 2021640
Aug 2021410
Sep 20218630
Oct 20217440
Nov 20215720
Dec 20217610
Jan 2022700
Feb 20224800
Mar 20225120
Apr 20223680
May 20224890
Jun 20224400
Jul 2022410
Aug 202200
Sep 20228930
Oct 20226410
Nov 20225660
Dec 20226170
Jan 20233600
Feb 20236300
Mar 2023470
Apr 2023014
May 2023055
Jun 20230311
Jul 202300
Aug 202300
Sep 20230477
Oct 20230913
Nov 20230652
Dec 20230848
Jan 202400
Feb 20240524
Mar 20240497
Apr 20240666
May 20240647
Jun 20240571
Jul 2024087
Aug 202400
Sep 20240876
Oct 20240670
Nov 20240666
Dec 202401,074
Jan 202500
Feb 20250543
Mar 20250573
Apr 20250621
May 20250523
Jun 20250554
Jul 202500
Aug 202500
Sep 20250849
Oct 20250646
Nov 20250756
Dec 20250915

Area classification

There are 13 policy areas. In the speech-model comparison, each model classifies the speech text; the party is withheld from the prompt. The original topic dataset uses keyword rules over the title of the matter being debated. Questions and initiatives are also classified by title keywords. When no rule matches, the category is “muu” (other). Producing a classification does not establish its accuracy; both methods can make mistakes.

Stance scoring

Every non-empty speech is eligible for scoring, with no minimum length. Speeches in the selected sample are evaluated separately on both axes using a scale from −2 to +2. If a speech contains no explicit position on an axis, that axis is marked unscorable and excluded from the mean:

axis evaluation −2 (left / GAL) +2 (right / TAN)
economic evaluated separately for every speech state / redistribution / welfare free market / low tax
GAL-TAN evaluated separately for every speech cosmopolitan / green / libertarian nationalist / traditional / authoritarian

The prompt instructs the model to reason from speech substance, not speaker identity, and marks speeches without an explicit position as unscorable. Party is withheld to prevent speaker-prior bias. The published scores used deepseek-v4-flash. The prompt is available below.

Show stance prompt

Below is the Finnish instruction given to the model. Both axes are evaluated in the same call; the matter title and speech text are inserted via the input template.

deepseek-v4-flash

Olet suomalaisen politiikan asenneanalyytikko. Sinulle annetaan yksi
eduskuntapuheenvuoro. Arvioi puhujan oma kanta ERIKSEEN kahdella akselilla.

TALOUSAKSELI (economic), vasen ↔ oikea:
−2 = vaatii julkisen sektorin, uudelleenjaon tai työntekijän aseman LAAJENTAMISTA
     (lisää palveluita, korkeampi verotus, vahvempi sääntely/ay-asema)
−1 = puolustaa nykyisiä julkisia palveluita tai etuja leikkauksia vastaan
 0 = nimenomaisesti keskitie tai tasapaino talouskysymyksessä
+1 = kannattaa maltillista markkinaehtoisuutta, veronkevennystä tai menokuria
+2 = vaatii selvästi markkinaehtoisuutta, merkittäviä veronkevennyksiä tai
     julkisen sektorin supistamista

ARVOAKSELI (gal_tan), GAL ↔ TAN:
  GAL = vihreä, vaihtoehtoinen, liberaali, kosmopoliittinen
  TAN = perinteinen, autoritaarinen, nationalistinen
−2 = vahva GAL (yksilönvapaus, avoimuus, pluralismi, yli-rajainen yhteistyö)
−1 = maltillinen GAL
 0 = nimenomaisesti keskitie tai tasapaino arvokysymyksessä
+1 = maltillinen TAN
+2 = vahva TAN (kansallinen sulkeutuneisuus, järjestys, perinteiset normit)

Säännöt jokaiselle akselille:
- Perusta arvio VAIN puhujan omaan, eksplisiittiseen kantaan. Älä käytä puoluetta,
  henkilön tunnettuja mielipiteitä tai yksittäisiä avainsanoja oikoteinä.
- Hallituksen puolustaminen tai opposition arvostelu EI OLE oma kanta. Kysy:
  esittääkö puhuja oman vaihtoehdon, vai reagoiko hän vain toisten esityksiin?
  Jos jälkimmäinen, akseli on "unscorable".
- Useimmat puheet ottavat kantaa vain TOISEEN akseliin. Se on odotettua: merkitse
  toinen "unscorable". Älä pakota kantaa akselille, jota puhe ei käsittele.
- Aihe ei ratkaise akselia: talouspuhe voi ottaa arvokannan ja päinvastoin.

status jokaiselle akselille:
- "clear": selvä oma suunta; stance −2, −1, +1 tai +2.
- "neutral": puhuja kannattaa eksplisiittisesti keskitietä; stance 0.
- "mixed": vastakkaisia omia kantoja ilman hallitsevaa suuntaa; stance 0.
- "unscorable": tähän akseliin liittyvää omaa kantaa ei ole; stance 0.

Vastaa kentät tässä järjestyksessä jokaiselle akselille: poimi ensin SANATARKKA
lainaus puheesta ("evidence"), päätä sitten status ja stance. Älä tiivistä tai
muotoile lainausta uudelleen; jos sanatarkkaa lainausta ei ole (esim. unscorable),
jätä "evidence" tyhjäksi.

Input template

AIHE (taustatieto): {matter}

PUHEENVUORO:
{speech}

Party compass

A party's place on the compass is the mean of its stance-scored speeches on each axis. Each party therefore gets one point: (economic, GAL-TAN). The same coordinates are compared below to CHES, Manifesto, and EVA.

Activity

The activity view counts plenary speeches as well as questions and initiatives (by first signer). Figures are shown by party, as raw counts or relative to seat totals or sitting MPs. Without this adjustment, larger parties have higher counts simply because of their size.

Seat counts come from Vaalit.fi (2019 and 2023). Here, the Marin term means parliamentary years 2019–2022 and the Orpo term 2023–2026. The all-years per-seat figure uses the combined seat count across both terms.

The speech-compass party ordering is compared with external series using Pearson correlation. This is a directional sanity check, not independent accuracy validation: only eight parties overlap, the series cover different years, and no uncertainty intervals were calculated.

reference method econ r GAL-TAN r n parties
CHES Expert judgments on party positions. 0.91 0.98 8
Manifesto Coded party election manifestos. 0.94 0.98 8
EVA Finnish citizen value survey. 0.93 0.97 8
Ohjelmat DeepSeek-scored party principle & election programmes (Pohtiva archive), same axes. 0.92 0.80 9
  1. Eduskunta open-data API: api.eduskunta.fi. Valtiopaivaasia and Puheenvuoro categories.
  2. Yle election questionnaire, Finnish parliamentary election 2023: vaalikone.yle.fi. The open data published by Yleisradio Oy is licensed under CC BY (license); this project processes and analyzes the material. YLE open data.
  3. CHES: Chapel Hill Expert Survey. Expert judgments on party positions. 2014 Chapel Hill Expert Survey, Version 2015.1; 0–10 GAL-TAN → −2..+2 via (x-5)·0.4. GAL-TAN mapped with (x−5)×0.4; economic values are the project's normalized comparison series.
  4. Manifesto: Manifesto Project (MARPOR). Coded party election manifestos. Manifesto Project Dataset 2025a; RILE -100..+100 → -2..+2 via x/50. RILE mapped with x/50; GAL-TAN is a project-defined approximation from cultural categories.
  5. EVA: EVA value survey. Finnish citizen value survey. Suomen kuvitettu arvokartta 2023; Economic/social -1..+1 → -2..+2 via ×2. Coordinates were transcribed from the original publications into the comparison series and multiplied by two.
  6. Ohjelmat: Party programmes (DeepSeek). DeepSeek-scored party principle & election programmes (Pohtiva archive), same axes. program-stance-v1; −2..+2 per-party mean across all programmes. Programme-level DeepSeek scores are averaged by party across the stored Pohtiva snapshot.
  7. YSO, the Finnish General Ontology: finto.fi/yso.

How often do the models agree?

All three models evaluated the same 22,167 speeches. The bars show how often two models gave the same classification.

DeepSeek / Clef Flash

Policy topic 74.7 %
Economic stance 63.8 %
GAL–TAN 55.8 %

DeepSeek / Jev

Policy topic 78.1 %
Economic stance 70.7 %
GAL–TAN 60.9 %

Clef Flash / Jev

Policy topic 85.4 %
Economic stance 71.3 %
GAL–TAN 73.0 %

Topic agreement compares the selected policy topic. For economic and GAL–TAN stances, both status and score (−2…+2) must match. This includes speeches both models classified as mixed or unscorable. The scale is 0–100%. Agreement between models does not establish accuracy.