ID.nl logo
Programmeren in Python met ChatGPT - Deel 3
© Dahina - stock.adobe.com
Huis

Programmeren in Python met ChatGPT - Deel 3

In deel 2 van deze artikelreeks leerde je hoe je verslagen van vergaderingen kon samenvatten met de OpenAI-API in de programmeertaal Python. Maar je kunt nog meer: het taalmodel achter ChatGPT is in staat om teksten te analyseren en daaruit besproken onderwerpen te halen. Zo kun je documenten automatisch op onderwerp ordenen.

In dit derde deel laten we ChatGPT onze teksten analyseren om daaruit de onderwerpen te extraheren, zodat we zelf gemakkelijker onze teksten kunnen taggen of ordenen:

  • Eerst zorgen we ervoor dat de juiste bestanden gevonden worden
  • Daarna laten we de bestanden analyseren
  • Tot slot zorgen we ervoor dat de gevonden onderwerpen worden omgezet in tags

Lees ook: Weg met de chaos! Organiseer je bestanden met TagSpaces

Code downloaden In deze workshop worden wat voorbeelden van stukken code gegeven. Omdat overtikken van code erg foutgevoelig is, kun je die code beter downloaden en daarna bekijken of kopiëren. Via deze link kun je twee bestanden downloaden: het bestand extract_tags.py (dat het eindresultaat van deze workshop bevat) en het bestand gptcode-dl3.txt (dat alle losse opdrachten uit deze hele aflevering bevat).

In deel 2 zagen we al dat ChatGPT veel meer kan dan gewoon conversaties voeren. Het taalmodel draait zijn hand bijvoorbeeld niet om voor de taak om teksten samen te vatten. We kunnen dat principe in nog veel extremere vorm doorzetten: vraag om de besproken onderwerpen van een tekst te geven in enkele woorden. Dat is ideaal om automatisch tags aan teksten toe te kennen om ze daarna sneller terug te vinden. In dit deel realiseren we dit met de OpenAI-API in Python waar je ondertussen al wat vertrouwd mee bent.

Alle bestanden doorlopen

Kopieer het Python-script summarize_docx_files.py uit deel 2. Dit bestand gebruiken we als basis en passen we hier aan. Vervang allereerst de systeemprompt in het begin:

SYSTEM_PROMPT = "Beschrijf de vijf belangrijkste onderwerpen die in de volgende tekst besproken zijn."

We gaan de systeemprompt later nog verder aanpassen, want zoals we in de vorige delen van de reeks hebben gezegd, moet die prompt zo specifiek mogelijk zijn. Maar we moeten ergens beginnen.

Voor het samenvatten van verslagen gingen we ervan uit dat alle Word-bestanden zich in dezelfde directory bevonden. Nu willen we veel meer bestanden verwerken, ook als ze zich in subdirectory’s bevinden. Daarom veranderen we de functie process_docx_files in:

De code kun je bekijken in het bestand gptcode-dl3.txt, te downloaden via deze pagina.

Met rglob krijgen we een lijst van alle paden die op .docx eindigen. We controleren dan nog voor de zekerheid of het om een bestand gaat en niet om een directory waarvan de naam eindigt op .docx. Daarna lezen we de inhoud met de functie read_docx die we vorige keer hadden gemaakt.

Sla in Visual Studio Code met Ctrl+S het script op onder de naam extract_tags.py en open een opdrachtregelvenster met het menu Terminal / New Terminal. Voer het programma hierin als volgt uit:

python extract_tags.py directorymetdocumenten

Vervang directorymetdocumenten door het daadwerkelijke pad waarin al je te analyseren documenten staan.

Grotere bestanden analyseren

Als je dit nu toepast op een directory met grotere documenten, crasht je Python-programma met een foutmelding zoals:

openai.error.InvalidRequestError: This model's maximum context length is 4097 tokens. However, your messages resulted in 4202 tokens. Please reduce the length of the messages.

Dat is een beperking van het model gpt-3.5-turbo, dat maar iets meer dan 4000 tokens kan verwerken. Met een ander model kunnen we meer tokens verwerken, maar allereerst willen we dat het programma niet meer crasht en gewoon doorgaat met de volgende teksten als één specifieke tekst te lang is. Vervang daarom de regel print(get_completion(text, SYSTEM_PROMPT)) helemaal op het einde door:

De code kun je bekijken in het bestand gptcode-dl3.txt, te downloaden via deze pagina.

Voor elk document dat te groot is, krijgen we nu nog altijd de foutmelding. Maar het programma gaat dan verder met het volgende document.

Zoals gezegd kunnen we ook nog het model in het begin van het programma vervangen:

DEFAULT_MODEL = "gpt-3.5-turbo-16k"

Dit 16K-model ondersteunt vier keer zoveel tokens, maar je betaalt er wel twee keer zoveel voor per token.

De taalmodellen van OpenAI bestaan in verschillende versies. Wil je langere documenten analyseren, dan betaal je meer.

Van onderwerpen naar tags

Als je de voorgaande code uitvoert, krijg je volledige zinnen of korte steekwoorden terug met beschrijvingen van de onderwerpen. Dat is niet onze bedoeling. We moeten dus in de systeemprompt duidelijk maken wat we wél willen: korte tags van één of twee woorden:

SYSTEM_PROMPT = "Geef de vijf belangrijkste tags die de volgende tekst beschrijven. Elke tag is één of twee woorden lang. Scheid de tags van elkaar door een komma."

Het resultaat is deze keer wel wat we verwachten, al slipt er soms een tag van drie woorden door. Maar als dat iets als ‘Raspberry Pi Pico’ is, zien we dat door de vingers. Als we deze tags verder willen verwerken, moeten we ze wel consistent maken. Daarvoor schrijven we een extra functie.

Nabewerking

Een voorbeeld maakt dit duidelijk. Stel dat ons programma de volgende tags uit een tekst haalt: Zigbee, Z-Wave, Bluetooth Mesh, Thread, Domoticaprotocollen. Dan willen we daar een lijst van maken met tags zigbee, z-wave, bluetooth-mesh, thread en domoticaprotocollen. Dat doen we met de volgende functie:

De code kun je bekijken in het bestand gptcode-dl3.txt, te downloaden via deze pagina.

De parameter tags is gewoon een string zoals ‘Domoticacontroller, Home Assistant, Raspberry Pi, Domoticatoestellen, Installatie’ die we van de OpenAI-API terugkrijgen. We splitsen die op elke komma, waardoor we een lijst met tags krijgen. Voor elke tag in die lijst halen we met strip() eerst alle spaties in het begin en eind weg, zetten we met lower() alle letters om naar kleine letters en vervangen we dan elke spatie in het midden door een koppelteken (-).

Om nu de tags te normaliseren, vervangen we de regel print(get_completion(text, SYSTEM_PROMPT)) op het einde van het script door:

De code kun je bekijken in het bestand gptcode-dl3.txt, te downloaden via deze pagina.

Je krijgt nu voor elk document de tags te zien in de vorm van een lijst in Python:

['zigbee', 'z-wave', 'bluetooth-mesh', 'thread', 'domoticaprotocollen']

Artikelen per tag

Tot nu toe gebruiken we de tags gewoon als een heel beknopte samenvatting van documenten. Maar we kunnen het ook omdraaien: na het extraheren van alle tags, kunnen we aan elke tag de documenten koppelen die door deze tag worden beschreven. Zo kunnen we achteraf heel eenvoudig opvragen welke documenten bij een specifieke tag horen.

Hoe doen we dit? Daarvoor vervangen we de hele for-lus op het einde van het programma door de volgende code:

De code kun je bekijken in het bestand gptcode-dl3.txt, te downloaden via deze pagina.

We maken dus eerst een lege dictionary documents aan. Daarna lopen we weer door alle bestanden met hun overeenkomstige tekst. We vragen aan de OpenAI-API om de tags uit te tekst te extraheren en we normaliseren die. Voor elke tag bekijken we dan of die al in de dictionary zit. Zo nee, dan voegen we die toe met als bijbehorende waarde een lege lijst. Daarna voegen we het pad van het geanalyseerde document aan die tag toe.

Uiteindelijk wanneer we alle bestanden op deze manier hebben geanalyseerd, bevat de dictionary documents tags met een lijst van bijbehorende bestanden. Die laten we nu tag na tag zien. En zo weet je onmiddellijk welke documenten je nodig hebt als je meer over een onderwerp wilt weten!

Kijk welke documenten over specifieke tags gaan.

Volgende week maandag het vierde deel van deze reeks! Hierin laten we ChatGPT in Python teksten vertalen en geschreven opdrachten omzetten in een computertaal.

Lees ook:

▼ Volgende artikel
Waarom jouw zuinige A+++-wasdroger straks zomaar een C-label krijgt
© fotomek
Huis

Waarom jouw zuinige A+++-wasdroger straks zomaar een C-label krijgt

Denk je net goed bezig te zijn met een A+++-wasdroger, blijkt die vanaf juli 2025 opeens een magere C te scoren. Wat is hier aan de hand? Geen paniek: je apparaat is niet plotseling minder efficiënt geworden, het energielabel wordt een stuk strenger. In dit artikel lees je waarom de regels zijn veranderd, wat het nieuwe label precies meet en hoe je wél de juiste conclusies trekt bij je volgende aankoop.

Partnerbijdrage - in samenwerking met Bemmel & Kroon

Vanaf 1 juli 2025 – morgen dus! – verandert het energielabel van wasdrogers in heel Europa. De bekende klassen als A+, A++ en A+++ verdwijnen en maken plaats voor een overzichtelijker schaal van A tot en met G. Hierdoor krijgen veel huidige A+++-drogers voortaan een label C. Niet omdat ze slechter presteren, maar omdat de normering strenger en toekomstbestendiger wordt.

Waarom een nieuw energielabel nodig was

Het oude systeem was zijn doel voorbijgeschoten. Doordat fabrikanten steeds energiezuinigere apparaten ontwikkelden, werden er voortdurend plussen aan de A-klasse toegevoegd. Daardoor ontstond een wildgroei aan energielabels die de consument eerder in verwarring bracht dan hielp. Met het nieuwe label keert de rust terug: één heldere schaal die opnieuw ruimte laat aan de top. De zuinigste klasse A blijft voorlopig zelfs leeg, zodat alleen uitzonderlijk efficiënte apparaten die plek mogen innemen.

©Bemmel & Kroon

Wat je ziet op het nieuwe label

Het nieuwe energielabel bevat veel meer informatie dan alleen een letter. Naast de energieklasse geeft het label nu ook inzicht in het verbruik per honderd droogbeurten, gemeten volgens een gestandaardiseerd Eco-programma. Ook de programmaduur, het maximale vulgewicht van de trommel, het geluidsniveau in decibel en de condensatie-efficiëntie staan erop vermeld. Via een QR-code kun je bovendien extra technische details opzoeken in de Europese EPREL-database. Deze toevoegingen zorgen ervoor dat je als consument beter kunt inschatten welk apparaat past bij jouw huishouden en gebruik. Meer informatie vind je op deze pagina.

©Bemmel & Kroon

1. QR-code met link naar de EU database
2. Energie-efficiëntieklasse
3. Energieverbruik in kWh/100 droogcycli*
4. Condensatie-efficiëntieklasse en -percentage

5. Geluidklasse en geluidemissie in dB(A)**
6. Maximale laadcapaciteit (nominale capaciteit in kg)**
7. Duur in uren en minuten**

* Waarden gelden voor een gewogen gemiddelde van halve en volle ladingen met een verhouding van 0,62 (24x volle lading, 76x halve lading).
** Droogcyclus van katoen eco-programma bij volle lading.

Het lastige van vergelijken

Oude en nieuwe energielabels kun je niet zomaar naast elkaar leggen. Een A+++-droger uit 2024 kan volgens de nieuwe testmethodes een label C krijgen, terwijl het apparaat in de praktijk nog steeds even zuinig is. Dat verschil komt puur door de aangescherpte meetnormen, en niet door een verandering in prestaties. Laat je dus niet misleiden door een ogenschijnlijke 'verslechtering' van het label, maar kijk naar de echte verbruiksgegevens en technische kenmerken van jouw wasdroger.

Wat dit voor jouw keuze betekent

Bij het kopen van een nieuwe droger is het dus belangrijk om verder te kijken dan alleen de letter op het label. De vermelding van het energieverbruik per honderd droogcycli geeft je een veel concreter beeld van de stroomkosten op jaarbasis. Ook het geluidsniveau, de capaciteit van de trommel en de duur van het droogprogramma bepalen in sterke mate hoe comfortabel en efficiënt het apparaat in de praktijk is. Dankzij de QR-code kun je bovendien snel en eenvoudig controleren of de technische gegevens aansluiten bij je verwachtingen.

©Viktoria

Slim kiezen met het nieuwe label

De vernieuwde energielabels maken het makkelijker om een slimme, bewuste keuze te maken. Niet alleen zie je in één oogopslag hoe energiezuinig een apparaat is volgens de nieuwste normen, je hebt ook toegang tot de details die er écht toe doen. Zo kun je jouw keuze afstemmen op wat je belangrijk vindt: lage kosten, weinig geluid, korte droogtijd of een groot vulgewicht. Door te letten op de werkelijke prestaties in plaats van alleen op een letter, maak je een duurzame keuze die ook op de lange termijn rendeert.

Wil je hulp bij het kiezen van een energiezuinige droger of persoonlijk advies over welk type het best bij jouw huishouden past? Laat je dan informeren door een specialist, zodat je met vertrouwen de juiste keuze maakt voor nu én de toekomst.

Op zoek naar een écht zuinige droger?

Bekijk de beste deals bij Bemmel & Kroon!
▼ Volgende artikel
Inbouwapparatuur in je keuken? Zo meet je alles precies goed op
© zephyr_p
Huis

Inbouwapparatuur in je keuken? Zo meet je alles precies goed op

Een nieuwe oven, koelkast of vaatwasser kiezen begint niet bij het design of de functies – het begint met een meetlint. Want hoe mooi of geavanceerd een apparaat ook is, als het nét niet past, zit je met een kostbare misser. Een paar millimeter speling kan het verschil maken tussen een perfect passende keuken en een frustrerende inbouwervaring. Met deze meetinstructies weet je zeker dat je straks niet voor verrassingen komt te staan.

Wil je je inbouwapparatuur tot op de millimeter nauwkeurig installeren, dan is precies meten onmisbaar. In dit artikel lees je over:

• Algemene meetprincipes • Waar je precies op moet letten bij een ⋄ inbouwkoelkast of -vriezer  ⋄ inbouwoven en -magnetron  ⋄ inbouwvaatwasser ⋄ inbouw-espressomachine  • Welke veelgemaakte fouten je moet zien te vermijden • Wat je altijd als laatste moet doen

Ook interessant: Een inbouwkoelkast kopen: waar moet je op letten?

Goed meten is het halve werk

Voordat je aan de slag gaat met meten, is het slim om een paar basisregels aan te houden. Gebruik altijd een betrouwbare rolmaat en eventueel een digitale schuifmaat voor extra precisie. Meet de binnenafmetingen van de nis (dus niet de buitenkant van je keukenkast) en noteer breedte, hoogte én diepte.

Houd daarnaast rekening met de ventilatieruimte: meestal is 2 tot 5 cm aan de achterkant en zijkanten nodig. En check of er ruimte is voor stopcontacten, wateraansluitingen en kabeldoorvoeren – die bepalen vaak óók of het apparaat goed kan worden geplaatst.

©Andrey Sinenkiy

Waar moet je op letten per apparaat?

Elk soort inbouwapparaat heeft zijn eigen eisen en aandachtspunten. Hieronder lees je per type waar je bij het opmeten en installeren specifiek op moet letten. Zo kom je niet voor verrassingen te staan.

Inbouwkoelkast of -vriezer

De hoogte van de nis is hier allesbepalend. Veelvoorkomende maten voor inbouwkoelkasten en -vriezers zijn 88, 140 en 178 cm, maar afwijkingen komen vaak voor. Let op het deursysteem: een sleepdeurmechanisme vraagt meestal om iets meer ruimte in de breedte. Diepte is vaak 55 cm, maar modellen met een ventilator achterop kunnen richting de 60 cm gaan.

Inbouwoven of -magnetron

Standaard? Niet helemaal. De nisbreedte is meestal 56 cm, terwijl het frontpaneel iets breder is (ca. 59,5 cm) voor een nette aansluiting. Hoogtes verschillen: compacte ovens zijn 45 cm hoog, standaardmodellen 60 cm. Magnetrons vragen soms extra ruimte aan de bovenkant voor uitstekende bedieningspanelen.

Inbouwvaatwasser

Hier draait het vooral om hoogte. Die varieert tussen 81,5 en 87 cm, met verstelbare poten voor wat speling. Meet ook de plinthoogte (van vloer tot onderkant kast), en vergeet de watertoevoer niet – reken op zo’n 5 cm extra ruimte in de diepte voor de slang.

Inbouw-espressomachine

Kleiner apparaat, maar niettemin precisiewerk. De breedte is vaak rond de 56 cm, maar de diepte varieert sterk. Let vooral op het waterreservoir (dat tot 55 cm diep kan zijn) en op kleppen of deurtjes die naar voren openen: die hebben extra werkruimte nodig.

©Cristina Villar Martin | Ladanifer

Veelgemaakte fouten die je makkelijk voorkomt

Zelfs met zorgvuldige metingen kan het misgaan, vaak doordat kleine details worden vergeten. Denk aan ventilatieruimte, uitstekende stekkers of leidingen die net in de weg zitten. Een handige tip: plak een strook tape op de vloer op de plek waar de achterkant van het apparaat komt, en markeer waar stekkers en leidingen zitten. Zo zie je snel of er iets in de weg zit.

Ook niet onbelangrijk: controleer of de nis waterpas is! Zeker bij koelkasten met uitschuiflades kan een scheve ondergrond voor problemen zorgen. Pas waar nodig je kast of ondervloer aan voordat je installeert.

Bij renovaties gelden vaak afwijkende maten. Oudere keukens hebben soms dikkere wanden of ongebruikelijke dieptes. Meet dus altijd de huidige situatie én de specificaties van je nieuwe apparaat. Twijfel je? Schakel een keukenexpert in, zeker bij combinaties zoals een oven met magnetron, waarbij elk detail telt.

En tot slot: de allerbelangrijkste stap

Het klinkt als een open deur, maar het voorkomt de meeste problemen: meet altijd twee keer! Schrijf je maten op en leg ze naast de officiële productspecificaties. Let daarbij op details als verstelbare voetjes, uitsparingen voor de deur of een uitschuifbaar bedieningspaneel. Zo weet je zeker dat jouw nieuwe inbouwapparaat niet alleen technisch past, maar ook mooi aansluit bij de rest van je keuken. Want uiteindelijk draait het om één ding: alles moet kloppen – tot op de millimeter.