782 StoryScope en ChatGPT 5.6 (1e deel: opzet)

Tja, die wetenschapspraktijk toch. Ik loop tegen een paper aan waarin de wetenschappers onderzoeken in hoeverre AI-gegenereerde teksten afwijken van menselijke teksten. Ze hebben daarvoor een tool ‘StoryScope’ ontwikkeld en leiden een hele batterij aan teksten van bepaalde grootte door een ‘pijplijn’ die toetst op allerlei criteria. Je kunt dat paper makkelijk zelf vinden en het zal je opvallen hoezeer dat in het traditionele patroon valt van wat wij denken dat wetenschap moet zijn (strak format, bronnen, allerlei codes en nummeringen, voorspelbare opzet en indeling etc maar vooral niet uitnodigend om te lezen, boodschap is: hoho, dit doe je niet even zelf op een achternamiddag en zeker niet als gewone sterveling). Ik heb dat paper onderaan laten samenvatten voor je/ons gemak, want dat helemaal zelf lezen, dacht het niet.

Eigenlijk hoef ik ook helemaal niet precies te weten hoe ze dat in elkaar hebben gestoken. We kunnen met gezond verstand al een paar conclusies trekken en vragen stellen. Conclusie 1 lijkt me: blijkbaar lijken die AI-teksten verdomd veel op menselijke teksten want anders hoef je niet zo moeilijk te doen. Conclusie 2: ik durf er iets om te verwedden dat ze om de tool te ontwikkelen en al die teksten op te halen en door de pijplijn te krijgen zelf ook AI hebben ingezet. Mijn belangrijkste vragen voor nu: 1 = waar is die tool, ik wil er zelf ook gebruik van maken, even testen hoe het werkt, wat eigen spul erin gooien. Nou dat is ondanks de wetenschappelijke transparantie nog niet zo makkelijk, het kan vermoedelijk wel maar kost mij te veel stappen voor dit geintje, ergo kom ik op het idee een ‘Rudy-lookalike ‘StoryScope’ te maken en laat ik dan meteen de nieuwste gisteren gelanceerde versie van ChatGPT 5.6 gebruiken.

Daarover gaat deze blog en de volgende, hier in dit deel de methode en achtergrond, hierna in het volgende deel de uitkomsten van de test op basis van eigen schrijfsels. Vraag 2 = hoe tijdelijk zijn dit soort onderzoeken en conclusies? Immers, AI leert snel en je kunt snappen dat onvolmaaktheden en afwijkingen zomaar kunnen worden geïncorporeerd in volgende versies van AI afhankelijk van je wens en prompt. Het lijkt mij op voorhand een vrij hopeloze en nutteloze (maar daarmee niet minder interessante, want de soort en mate van afwijkingen boeien me) exercitie die hooguit een momentopname is.


https://jenna-russell.github.io/assets/pdf/storyscope.pdf hier wordt gesproken over een tool waarmee je kunt checken of iets wel/niet door AI is gemaakt. Mijn eerste vraag is of ik zelf die tool kan inzetten en gebruiken bij wijze van experiment? Zoniet, kunnen we conform die opzet en filosofie zelf zoiets opzetten/maken?


Ik stel voor een eigen rudy-storyscope te maken. Het gaat me niet om de wetenschappelijke diepgang. Je kijkt naar de kenmerken uit de oorspronkelijke teksten waar ze op meten (lineariteit etc) en bouwt dat zelf in in onze eigen versie. Als menselijke teksten gebruiken we bijvoorbeeld de blogs uit slimmefinanciering.nl en blokjesenpijltjes.nl, vervolgens zetten we dat af tegen rudymentair.nl en analyseren volgens ons mini-model de verschillen.


Rudy StoryScope 0.1

De drie corpora

CorpusFunctie
Slimmefinanciering.nlOud menselijk referentieprofiel, waarschijnlijk meer economisch en vakinhoudelijk
Blokjesenpijltjes.nlTweede menselijk referentieprofiel, mogelijk persoonlijker, associatiever of beschouwender
Rudymentair.nlHuidige schrijfpraktijk, met een toenemende rol van AI in analyse, ordening en formulering

Ik zou Slimmefinanciering en Blokjes & Pijltjes eerst afzonderlijk analyseren. Pas daarna voegen we ze eventueel samen tot één “oude Rudy”-referentie. Anders verdwijnen interessante verschillen tussen je twee vroegere schrijfvormen in één gemiddelde. Ook Rudymentair moeten we niet als één blok behandelen. Idealiter onderscheiden we daar minstens:

  1. Rudymentair vóór intensief AI-gebruik;
  2. vroege experimenten met AI;
  3. de huidige werkwijze, waarin AI steeds meer als denk- en analysepartner wordt gebruikt.

Dat levert een ontwikkeling op in plaats van slechts een vergelijking tussen websites.

Het mini-model

Voor versie 0.1 zijn ongeveer twintig kenmerken voldoende. Elk artikel krijgt per kenmerk een score van 1 tot 5, een korte onderbouwing en een betrouwbaarheidsscore.

A. Structuur en lineariteit

KenmerkLage scoreHoge score
LineariteitVeel zijpaden en terugkoppelingenEén duidelijke lijn van begin naar conclusie
SymmetrieOnderdelen verschillen sterk in lengte en vormNet geordende, gelijkwaardige onderdelen
RoutevoorspelbaarheidDe tekst ontdekt onderweg zijn richtingDe opbouw ligt vanaf het begin vast
Nette afrondingSpanningen blijven bestaanAlle lijnen worden samengevat en afgesloten

B. Uitleg en explicietheid

KenmerkLage scoreHoge score
Thematische explicietheidDe lezer moet zelf betekenis afleidenDe centrale les wordt uitgesproken
Herhaling van de kernEen gedachte wordt eenmaal neergezetDezelfde kern verschijnt in meerdere formuleringen
LezersbegeleidingAbrupte overgangen en impliciete verbandenVeel aankondigingen, tussenconclusies en wegwijzers
SamenvattingsdrangEindigt open of terloopsEindigt met een keurige synthese

C. Ambiguïteit en intellectuele spanning

KenmerkLage scoreHoge score
TegenstrijdigheidTegenstellingen worden opgelostBotsende verklaringen blijven naast elkaar staan
Morele ambiguïteitDuidelijke helden, daders en oplossingenPartijen zijn tegelijk begrijpelijk en problematisch
ZelfcorrectieDe auteur presenteert een afgerond oordeelDe auteur twijfelt, herroept of corrigeert zichzelf
OngemakDe conclusie voelt geruststellendDe analyse laat een onprettige rest achter

D. Causaliteit en systeemdenken

KenmerkLage scoreHoge score
Causale diepteGebeurtenissen worden beschrevenMechanismen en terugkoppelingen worden uitgewerkt
Meervoudige verklaringEén hoofdoorzaakMeerdere elkaar beïnvloedende oorzaken
SysteemniveauIndividueel gedrag en persoonlijke keuzesInstituties, prikkels, bezit, macht en afhankelijkheden
Onbedoelde gevolgenBeleid heeft een direct gewenst effectGoede bedoelingen produceren tegengestelde uitkomsten

E. Persoonlijke eigenheid

KenmerkLage scoreHoge score
Concrete persoonlijke ervaringAlgemene voorbeeldenSpecifieke herinneringen, bedrijven, personen en situaties
Idiosyncratische associatieVerwachte voorbeeldenOnverwachte verbindingen tussen onderwerpen
Emotionele ruwheidAfgewogen en afstandelijkIrritatie, verbazing, spot, fascinatie of verwarring
Talige oneffenheidGlad en professioneelEigen ritme, tussenzinnen, uitroepen en kleine ontsporingen

F. Bronnen en intellectuele beweging

KenmerkLage scoreHoge score
BronconfrontatieBronnen ondersteunen hetzelfde puntBronnen botsen of corrigeren elkaar
Historische bewegingAlleen het actuele gevalSprongen tussen heden, geschiedenis en eigen archief
Ontwikkeling van het denkenDe auteur wist het antwoord alDe conclusie ontstaat zichtbaar tijdens het schrijven
ArchiefverbindingArtikel staat op zichzelfVerwijst naar eerdere fascinaties, vergissingen en denklijnen

Dit is geen letterlijke verkleining van de StoryScope-taxonomie. We nemen het principe over en vertalen het van fictie naar economische, politieke en persoonlijke essays.

Hoe de analyse werkt

Stap 1 — teksten verzamelen

De beste invoer is niet het live scrapen van de websites, maar de WordPress-exportbestanden in XML-formaat. Daarin staan doorgaans:

  • titel;
  • publicatiedatum;
  • volledige artikeltekst;
  • categorieën en tags;
  • oorspronkelijke URL;
  • status van het bericht.

We verwijderen vervolgens automatisch:

  • HTML-opmaak;
  • menu- en navigatietekst;
  • afbeeldingen en onderschriften;
  • ingesloten scripts;
  • herhaalde auteursblokken;
  • artikelen die alleen uit een verwijzing of zeer korte mededeling bestaan.

Stap 2 — blind beoordelen

De beoordelaar mag tijdens het scoren niet weten:

  • van welke site de tekst komt;
  • uit welk jaar hij komt;
  • of AI bij de tekst betrokken was.

Alle teksten krijgen neutrale nummers. Anders gaat de beoordelende AI onbewust zoeken naar het verwachte verschil. StoryScope gebruikt eveneens een LLM om per dimensie vaste kenmerken uit teksten te halen en zet die daarna om in gestandaardiseerde categorieën. Voor onze lichte versie kunnen we alle twintig kenmerken in één of twee beoordelingsrondes laten bepalen, in plaats van tien afzonderlijke modelaanroepen per artikel.

Stap 3 — geen classifier, maar profielen

We hoeven aanvankelijk geen machine-learningmodel te trainen. We berekenen eenvoudig:

  • gemiddelde score per kenmerk;
  • spreiding tussen artikelen;
  • verschillen tussen sites;
  • veranderingen door de tijd;
  • verschil tussen korte en lange artikelen;
  • verschil per onderwerp;
  • afstand tot het oude persoonlijke referentieprofiel.

Bijvoorbeeld:

KenmerkOude RudyRudymentair vroegRudymentair recentVerandering
Lineariteit2,42,84,1Sterk toegenomen
Expliciete uitleg2,12,94,3Sterk toegenomen
Zelfcorrectie4,03,73,2Iets afgenomen
Systeemdenken3,64,14,7Toegenomen
Persoonlijke casussen4,23,83,1Afgenomen
Nette afronding2,02,74,2Sterk toegenomen

Dat is slechts een voorbeeld van de uitvoer, geen verwachting over de werkelijke uitkomst.

Het belangrijkste methodologische probleem

Een verschil tussen de websites is niet automatisch een AI-effect.

Slimmefinanciering kan bijvoorbeeld vooral bestaan uit:

  • vakinhoudelijke artikelen;
  • financieringscasussen;
  • een ander publiek;
  • kortere of langere stukken;
  • teksten uit een andere levensfase.

Rudymentair bevat mogelijk meer:

  • politieke en filosofische beschouwingen;
  • terugblikken;
  • bronnenonderzoek;
  • dialogen met AI;
  • langere samengestelde teksten.

Daarom maken we naast de grote vergelijking ook gematchte deelvergelijkingen:

  • economie tegenover economie;
  • persoonlijke casus tegenover persoonlijke casus;
  • boekbespreking tegenover boekbespreking;
  • ongeveer gelijke tekstlengtes;
  • artikelen met en zonder expliciete AI-bewerking;
  • liefst enkele oude en nieuwe artikelen over hetzelfde terugkerende thema.

Juist artikelen waarin je na tien of vijftien jaar terugkeert naar hetzelfde onderwerp kunnen bijzonder informatief zijn.

Wat de uiteindelijke tool toont

1. Corpusprofiel

Een overzicht van ieder tijdvak:

  • gemiddelde scores;
  • spreiding;
  • meest typerende kenmerken;
  • kenmerken waarop de artikelen sterk uiteenlopen.

2. Tijdlijn

Per jaar of periode zien we bijvoorbeeld of:

  • teksten geleidelijk lineairder worden;
  • samenvattingen toenemen;
  • persoonlijke anekdotes afnemen;
  • systeemdenken sterker wordt;
  • twijfel of ambiguïteit verandert.

3. Artikelvergelijker

Twee artikelen naast elkaar, met per kenmerk:

  • score;
  • korte verklaring;
  • concrete tekstpassages als bewijs;
  • verschil tussen de artikelen.

4. “Oude Rudy”-afstand

Geen AI-percentage, maar bijvoorbeeld: Dit artikel ligt qua opbouw dicht bij het recente Rudymentair-profiel, maar behoudt op persoonlijke casuïstiek en ambiguïteit veel kenmerken van het oude Slimmefinanciering-profiel.

5. Verlies- en winstkaart

Dit wordt waarschijnlijk het interessantste eindproduct:

Mogelijke winstMogelijk verlies
Meer structuurMinder spontane omwegen
Duidelijkere mechanismenMeer uitleg dan nodig
Sterkere syntheseTe nette conclusies
Bredere bronnenbasisMinder persoonlijke concreetheid
Beter systeemoverzichtMinder zichtbare zoektocht
Minder herhaling door redactieOf juist meer AI-achtige kernherhaling

Technische opzet

Voor de eerste versie zou ik geen ingewikkelde webapp en geen getraind model bouwen.

Rudy StoryScope 0.1

  1. Python-script leest drie WordPress-XML-bestanden.
  2. Artikelen worden schoongemaakt en opgeslagen in een lokale database.
  3. Een vaste beoordelingsprompt scoort de twintig kenmerken.
  4. Iedere score bevat een korte onderbouwing en bewijsfragment.
  5. Resultaten worden opgeslagen als JSON of CSV.
  6. Een lokaal dashboard toont tabellen, tijdlijnen en vergelijkingen.

Een eenvoudige mappenstructuur:

rudy-storyscope/
├── PROJECTLOG.md
├── data/
│   ├── raw/
│   ├── cleaned/
│   └── analyses/
├── taxonomy/
│   └── rudy_features.json
├── scripts/
│   ├── import_wordpress.py
│   ├── clean_articles.py
│   ├── create_batches.py
│   └── calculate_profiles.py
├── dashboard/
└── README.md

Voor versie 0.1 kunnen we de tool batches laten maken die hier in ChatGPT worden beoordeeld en de JSON-antwoorden weer importeren. Dan is geen aparte betaalde API nodig. Later kan dezelfde architectuur worden gekoppeld aan een API of een lokaal model.

Voorlopig PROJECTLOG

OnderdeelKeuze
DoelVerandering in Rudy’s schrijf- en denkprofiel zichtbaar maken
Geen doelBewijzen dat afzonderlijke teksten door AI zijn geschreven
ReferentieSlimmefinanciering en Blokjes & Pijltjes
VergelijkingRudymentair, liefst verdeeld in meerdere perioden
MethodeCirca twintig interpreteerbare kenmerken, scores 1–5
BewijsElke score krijgt een korte toelichting en tekstfragment
Eerste corpusBeginnen met een representatieve steekproef, daarna opschalen
Eerste techniekWordPress-XML → schone teksten → JSON-analyse → dashboard
Belangrijk risicoOnderwerp-, lengte- en periodeverschillen verwarren met AI-effect
Niet doenEen misleidend percentage “door AI geschreven” tonen
Eerste resultaatProfieltabel oude Rudy versus verschillende Rudymentair-perioden
Volgende stapDe drie WordPress-exportbestanden verzamelen en de definitieve taxonomie vastleggen

Mijn voorstel is om te beginnen met twintig artikelen per corpus of periode. Daarmee kunnen we het model kalibreren, onbruikbare kenmerken verwijderen en ontdekken welke onverwachte verschillen werkelijk interessant zijn. Daarna kunnen we het volledige archief verwerken.


Maak een samenvatting van dit artikel voor de newbie. Reflecteer op een vertaling hiervan voor eigen gebruik, minder hoogdravend, meer praktisch, toepasbaar op eigen Nederlandse (blog-) teksten. Ook ben ik benieuwd naar de tijdelijkheid van dit soort exercities omdat AI snel leert en nieuwe regels kan incorporeren.


Samenvatting voor de leek

Het onderzoeksteam (UMD + Google DeepMind) liet vijf grote taalmodellen (Claude, GPT, Gemini, DeepSeek, Kimi) en mensen dezelfde verhaalpremisses schrijven — ruim 60.000 verhalen in totaal. In plaats van te kijken naar stijl (woordkeuze, zinsbouw, het beruchte AI-gebruik van het gedachtestreepje) keken ze naar de verhaalconstructie zelf: hoe wordt een plot opgebouwd, hoe expliciet wordt een thema uitgelegd, hoe lineair verloopt de tijd, hoe vaak breekt de verteller de vierde wand.

Belangrijkste bevindingen:

  • Alleen al op basis van dit soort structurele keuzes (zonder stijl) is 93% nauwkeurig te zeggen of iets AI of mens is.
  • AI-verhalen leggen thema’s expliciet uit (de verteller vertelt de moraal), zijn causaal opgeruimd, hebben nauwelijks subplots, en tonen emoties vooral via lichaam/omgeving in plaats van er gewoon “hij voelde angst” te zeggen.
  • Mensen zijn rommeliger: meer tijdsprongen, meer morele ambiguïteit, meer verwijzingen naar andere concrete werken, vaker rechtstreekse aanspreking van de lezer.
  • De vijf AI-modellen lijken structureel sterk op elkaar en vormen een aparte, kleine cluster; mensen zijn diverser en “zeldzamer” in dit kenmerkenlandschap.
  • Zelfs na het wegpolijsten van stijl-artefacten (cliché’s, purple prose) blijft detectie bijna even goed — de structuur zit dieper dan de stijl.

Vertaling naar praktisch, bruikbaar voor jouw teksten

Even loskoppelen van het wetenschappelijke jargon: dit is eigenlijk een checklist van tics die je in eigen AI-geassisteerde blogteksten kunt opsporen en wegpoetsen, los van of het “verraadt” dat het AI is — het zijn ook gewoon zwaktes in schrijven.

Zelfcheck voor een concept-blogpost:

  1. Legt de tekst de conclusie te veel uit aan het einde? Eindig je met een samenvattend “en dit laat zien dat…” zinnetje? Dat is precies het AI-patroon (77% vs 52% bij mensen). Bij jouw werk relevant: je extractiecyclus- of tienprincipes-stukken hebben vaak al een sterke interne logica — de verleiding is om die logica ook nog eens expliciet te herhalen aan het slot. Vaak kan die laatste alinea weg.
  2. Is het te opgeruimd? Één rechte lijn van observatie naar these naar conclusie, zonder zijpaden of tegenvoorbeelden die je zelf ook serieus overweegt? Mensen (en jouw beste stukken) laten juist ruimte voor een subplot dat niet meteen netjes bij het hoofdthema aansluit.
  3. Gebruik je lichaam/sfeer als vervanger voor het benoemen van iets? Dit is meer voor fictie, minder relevant voor jouw analytische register, maar het analoog voor essayistiek is: verstop je een zwakke schakel in het argument achter sfeervolle taal in plaats van ‘m gewoon te benoemen?
  4. Zit er een concrete, met naam genoemde verwijzing in, of alleen vage echo’s? Mensen verwijzen bijna twee keer zo vaak naar specifieke, benoemde bronnen. Dit is een sterk punt voor jou — je citeert altijd expliciet Olson, Hirsch, Pirsig, Van Teutem. Blijf dat doen, dat is precies het “menselijke” signaal.
  5. Spreek je de lezer aan? Rechtstreekse aanspreking (fourth-wall breaking) komt bij mensen bijna twee keer zo vaak voor. Jouw “ik schrijf dit vooral voor mezelf” toon is hier al een natuurlijk tegenwicht tegen AI-gladheid.

Kortom: als praktische vuistregel voor je eigen concepten — laat een subplot bungelen, benoem een concrete bron met naam, en knip de laatste “en dus concludeer ik”-alinea eruit als hij er al staat in de tekst zelf.

De tijdelijkheidsvraag — en waarom die serieuzer is dan de auteurs toegeven

Jij legt precies de vinger op de zere plek, en het is het minst overtuigende deel van het paper.

De auteurs claimen dat narratieve kenmerken duurzamer zijn dan stilistische, omdat stijl met simpele post-hoc edits weg te poetsen is (zoals ze zelf laten zien: LAMP-herschrijving verwijdert stijl-artefacten, maar drukt de detectiescore maar 1,6 punt omlaag), terwijl structuur “significante herschrijvingen” zou vergen. Dat onderscheid is echt, maar het is een verschil in kosten, niet in onmogelijkheid.

Een paar dingen die tegen duurzaamheid pleiten:

  • Het paper zelf laat zien dat modelmakers al razendsnel reageren op stijlkritiek (GPT 5.4 verminderde het gedachtestreepje-gebruik nadat dat een bekend AI-signaal werd). Er is geen reden om aan te nemen dat “schrijf een subplot dat niet netjes bij het thema past” of “eindig ambigu in plaats van met een moraal” wezenlijk moeilijker te finetunen is dan stijl — het is alleen een duurdere trainingsinterventie (RLHF op verhaalstructuur in plaats van op woordkeuze), niet een fundamenteel andere orde probleem.
  • Zodra dit soort onderzoek publiek is — en dat is het nu, met code en featuretaxonomie erbij — wordt het een expliciete specificatie. Een systeem-prompt als “vermijd expliciete thema-uitleg, bouw een subplot in dat niet perfect thematisch aansluit, eindig moreel ambigu” zou een groot deel van deze 30 kernkenmerken direct kunnen neutraliseren zonder dat het model “begrijpt” waarom — precies zoals stijl-detectoren omzeild worden door instructies over em-dashes te geven.
  • Dus het echte verschil is niet permanent vs. tijdelijk, maar eerder: stijl is een toevallig bijproduct van training dat modelmakers nog niet hadden geoptimaliseerd, en narratieve structuur is een dieper bijproduct dat nog niet was geoptimaliseerd. Zodra de optimalisatiedruk er ligt (en dit paper creëert die druk, want het is nu een benchmark), verdwijnt het verschil grotendeels.

Wat waarschijnlijk wél blijft plakken, is niet dit specifieke featurelijstje maar het onderliggende mechanisme: elk sterk RLHF-getraind model convergeert naar een smalle, “veilige” verdeling van keuzes, omdat afwijkende, gewaagde keuzes (moreel ambigu einde, een amateuristisch bungelende subplot) door menselijke reviewers vaker als “minder goed” worden beoordeeld dan een net afgeronde, thematisch coherente versie. Dat is een structureel kenmerk van hoe deze modellen getraind worden, niet van wat ze toevallig nog niet geleerd hebben — en dat mechanisme is inderdaad moeilijker weg te trainen, want het zit in de optimalisatiedoelstelling zelf (menselijke voorkeur voor coherentie en netheid), niet in een los te repareren symptoom.

Kort gezegd: de symptomen in dit paper zijn met vrij lage moeite te patchen zodra ze bekend zijn (en dat zijn ze nu). De oorzaak — RLHF-conforme output trekt naar het gemiddelde — is veel taaier, en daar zou ik als hypothese voor een volgend stuk op inzetten in plaats van op deze specifieke 30 features, die over een jaar waarschijnlijk grotendeels gecorrigeerd zijn in nieuwe modelversies.

Previous Post Next Post
@media print { /* Verberg alle ongewenste onderdelen */ header, .site-header, nav, .main-navigation, .sidebar, .site-sidebar, aside, footer, .site-footer, .widget-area, .breadcrumbs, .post-meta, .related-posts, .comments-area, .print-hide { display: none !important; height: 0 !important; margin: 0 !important; padding: 0 !important; overflow: hidden !important; } /* Verberg ook bepaalde vaste*