Interactieve visualisatie van de Thema's

AIRA-training · HCSS RuBase · oktober 2026 · metadata en NLP-analyse van de drie oefendatasets

Wat vind je op deze site?

Deze site laat zien hoe de drie oefendatasets van de training in elkaar zitten: uit welke databases en bronnen de tekstfragmenten (chunks) komen, uit welke periode, hoeveel ervan als relevant zijn gelabeld en hoe lang ze zijn. Alles is gebaseerd op alleen de metadata in de CSV-bestanden; de inhoud van de fragmenten zelf wordt niet getoond.

Hoe lees je een themapagina?

Kies bovenaan een thema en daarna de omvang van de steekproef: 100, 1.000 of 10.000 chunks. Elke pagina toont kerncijfers, opmerkingen over de data en een reeks grafieken. Beweeg met de muis over een grafiek voor de exacte waarden; klik op een legenda-item om een reeks aan of uit te zetten.

Kleuren

RelevantNiet relevant

Goud is altijd relevant, blauw altijd niet relevant, op elke pagina. Relevantie komt uit de kolom is_relevant van de bronbestanden.

Twee analyses per steekproef

Metadata-visualisatie: wie, wat, waar en wanneer, uit de kolommen van de CSV-bestanden.

NLP-analyse (kosteloos): welke begrippen (woordgroepen) in de Russische teksten voorkomen, welke typisch zijn voor relevante fragmenten, welke per database opvallen en welke in de tijd ‘uitbarsten’. Dezelfde gratis methode als in het NATO PASP-project: geen betaald taalmodel, alles lokaal berekend.

De prompt

Met deze prompt kun je hetzelfde soort app laten maken voor een eigen dataset. Vervang [DATASET.csv] door je eigen bestand.

Maak één interactieve webpagina (één zelfstandig HTML-bestand, Nederlandstalig) met alle analytisch interessante visualisaties van de METADATA in de dataset [DATASET.csv].

Gebruik alleen de metadatakolommen (database, bron, datum, jaar, taal, relevantie) en eenvoudige statistieken van de tekstfragmenten (aantal tokens per chunk). Toon de inhoud van de fragmenten zelf niet.

Laat in elk geval zien: kerncijfers; verdeling over databases en bronnen, uitgesplitst naar relevant / niet relevant; het verloop in de tijd per maand; het aandeel relevante fragmenten per database; database × jaar; de verdeling van chunklengte in tokens.

Elke grafiek krijgt een tooltip bij hover, een titel die zegt wat je ziet, en een korte uitleg wat je eruit kunt afleiden. Meld eerlijk wat ontbreekt of afwijkt in de data (lege kolommen, minder rijen dan de naam van het bestand belooft).

Gebruikte modellen en hulpmiddelen

Bouw van deze siteClaude Opus 5.5 (Claude Code 2.1.296), lokaal script build_site.py
Tokens tellentiktoken
GrafiekenPlotly.js 2.34.0
NLP-analysespaCy 3.8.16 met het Russische model ru_core_news_lg en pymorphy3 (grondvormen); CiteSpace-equivalente woordgroepen; Dunning G² en Kleinberg-bursts zoals in NATO PASP. Allemaal open source, lokaal uitgevoerd.
KostenGeen. Er is geen enkele betaalde modelaanroep gedaan: alle cijfers zijn lokaal berekend uit de CSV-bestanden.
Gebouwd op

Steekproef:
Analyse:

Fragmenten per maand

Wanneer zijn de bronteksten gepubliceerd? Pieken laten zien welke periode de dataset domineert.

Fragmenten per database

Welke bronsoorten leveren de data, en hoeveel daarvan is relevant?

Aandeel relevant per database

Welke databases leveren naar verhouding de meeste relevante fragmenten? (n = aantal fragmenten)

De 15 grootste bronnen

Welke kanalen, media en accounts wegen het zwaarst? Een dataset die op een paar bronnen leunt, kan eenzijdig zijn.

Database × jaar

Komt elke database uit dezelfde jaren, of verschuift de mix door de tijd?

Fragmenten per weekdag

Op welke dagen zijn de bronteksten gedateerd?

Lengte van de fragmenten (tokens)

Hoe lang is een chunk? Dit bepaalt hoeveel tekst een model per fragment moet lezen, en wat annoteren kost.

Tokenstatistieken

Spreiding van de lengte, apart voor relevante en niet-relevante fragmenten.

Omvang en relevantie per steekproef

Hoeveel fragmenten, en welk deel relevant, in elke steekproef van dit thema.

Lengte per steekproef

Tokens per fragment (doos = middelste 50%, streep = mediaan, snorharen = 10%–90%). Lijken de kleine steekproeven op de grote?

Herkomst per steekproef

Aandeel per database in elke steekproef (100%). Een kleine steekproef die een andere bronmix heeft dan de grote, geeft een ander beeld van het thema.

Verloop in de tijd per steekproef

Aandeel van de fragmenten per maand. Bestrijken de kleine steekproeven dezelfde periode?

De 25 belangrijkste woordgroepen van de grote steekproef, in elke steekproef

Voor de 25 woordgroepen die in de 10.000-steekproef in de meeste fragmenten voorkomen: in welk percentage van de fragmenten zie je ze terug in de 1.000- en de 100-steekproef? Gelijke balken = de kleine steekproef weerspiegelt de grote.

Verdeling over de semantische clusters van de grote steekproef

De steekproeven zijn genest (de 100 zit in de 1.000, de 1.000 in de 10.000), dus van elk fragment weten we in welk cluster van de 10.000-steekproef het valt. Welke onderwerpen zijn in de kleine steekproeven over- of ondervertegenwoordigd?

Semantische kaart van de fragmenten

Elke stip is een fragment. Fragmenten met een vergelijkbare betekenis liggen dicht bij elkaar (inbedding met Qwen3-Embedding-0.6B, teruggebracht naar twee dimensies met UMAP). De kleur is het cluster. De afstanden op de kaart zijn bij benadering; de clusters zelf zijn berekend in de volledige ruimte.

Kleur:

Clusters en subclusters

Per cluster: een label in het Nederlands, de woordgroepen die het cluster het sterkst onderscheiden van de rest (G², zoals CiteSpace zijn clusters labelt), omvang, aandeel relevant, periode en de belangrijkste databases. Klik open voor subclusters en voorbeeldteksten.

Hoe is dit berekend?

Sleutelbegrippen: de 25 meest voorkomende woordgroepen

In hoeveel fragmenten komt elke woordgroep voor (documentfrequentie), en hoeveel daarvan zijn relevant? Woordgroepen staan in de grondvorm (nominatief).

Wat onderscheidt relevante van niet-relevante fragmenten?

Contrast in plaats van frequentie (de kern van CiteSpace): Dunning G². Rechts (goud) woordgroepen die oververtegenwoordigd zijn in relevante fragmenten, links (blauw) in niet-relevante. Hoe langer de balk, hoe sterker het contrast; G² > 3,84 is significant op 5%, > 10,83 op 0,1%.

Uitbarstingen in de tijd (Kleinberg-bursts)

Welke woordgroepen kwamen in een bepaalde periode plotseling veel vaker voor dan normaal? De balk loopt van begin tot eind van de uitbarsting; de stip is het eerste voorkomen in de dataset. Gesorteerd op sterkte.

Typische woordgroepen per database

Per database de woordgroepen die daar het sterkst oververtegenwoordigd zijn ten opzichte van alle andere databases (G²). Zo zie je het eigen register van elke brontype.

Hoe is dit berekend?

Vergelijking van de drie thema's

Dezelfde steekproefgrootte naast elkaar: waarin verschillen Transparent Battlefield, Grey-Zone Warfare en Effective Deterrence in bronnen, tijd, lengte en woordgebruik?

Steekproef:
Analyse:

Omvang en relevantie

Aantal fragmenten en aandeel relevant per thema.

Lengte van de fragmenten

Spreiding van het aantal tokens per fragment (doos = middelste 50%, streep = mediaan, snorharen = 10%–90%).

Herkomst: aandeel per database

Welk deel van elk thema komt uit welke database? (100% per thema; kleine databases samen als ‘overig’.)

Verloop in de tijd

Aandeel van de fragmenten per maand, per thema. Zo zie je of de thema's dezelfde periode beslaan.

Typische woordgroepen per thema

Per thema de woordgroepen die daar het sterkst oververtegenwoordigd zijn ten opzichte van de twee andere thema's (G² op documentfrequentie).

Gedeelde woordgroepen

Woordgroepen die in alle drie de thema's veel voorkomen (percentage van de fragmenten per thema).

Overlap in woordgebruik

Hoeveel van de 200 meest voorkomende woordgroepen delen twee thema's? (Jaccard-index: 0 = niets gemeen, 1 = identiek.)