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:

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:

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.

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 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:

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:

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!

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
Consumenten testen: de Philips compacte keramische verwarming CX3120/01
© Philips
Energie

Consumenten testen: de Philips compacte keramische verwarming CX3120/01

De Philips CX3120/01 compacte keramische verwarming is ontworpen om kleinere ruimtes snel en effectief te verwarmen. Dankzij slimme technologie, zoals bediening via een app en een draaifunctie voor gelijkmatige warmteverspreiding, belooft deze verwarming comfort en gemak. Hoe presteert hij in de praktijk? Lees hier wat het Review.nl Testpanel van deze draagbare bijverwarming vond.

Partnerbijdrage - in samenwerking met Philips

De Philips CX3120/01 compacte keramische verwarming is ideaal om snel kleine ruimtes tot 20 m² te verwarmen. Dankzij een vermogen van 2000 watt en een draaifunctie voor gelijkmatige warmteverspreiding is de temperatuur in no-time aangenaam. Dankzij de energiebesparende EcoAI-modus en de keuze tussen app-bediening of de knoppen op het apparaat, biedt deze verwarming flexibiliteit en gemak. Het lichte en compacte ontwerp maakt hem eenvoudig te verplaatsen, terwijl kantelbeveiliging en automatische uitschakeling zorgen voor veilig gebruik. Bovendien ziet hij er ook nog eens strak uit.

De Philips compacte keramische verwarming CX3120/01 krijgt van testers een hoge gemiddelde score van een 8,3 en wordt geprezen vanwege zijn snelle opwarming, stille werking en gebruiksvriendelijke app-bediening. Hier volgen de belangrijkste bevindingen van het testpanel.

Snelle warmte en eenvoudig gebruik

De CX3120/01 valt bij testers vooral in de smaak vanwege de snelheid waarmee ruimtes op temperatuur komen. "In seconden is de kamer merkbaar warmer," zegt DOME85. Luuk Smeyers voegt daaraan toe: "Ondanks zijn compacte formaat levert het verrassend veel warmte, ideaal voor de koude dagen." Ook het gebruiksgemak valt goed in de smaak. "Het apparaat is lekker licht en klein, hierdoor makkelijk te verplaatsen van kamer naar kamer," meldt EviDaems. "Ook de bediening is eenvoudig met duidelijke knoppen die geen uitgebreide handleiding nodig hebben." De draaifunctie blijkt vooral handig voor een gelijkmatige warmteverspreiding in grotere ruimtes. MichaelG merkt op: "De warmte wordt goed verspreid, wat ideaal is voor mijn werkkamer van 13,5 m²." Michel voegt nog toe: "Door de drie standen laag, gemiddeld en hoog is hij voor meerdere ruimtes geschikt."

©Philips

Slimme technologie voor extra comfort

De bijbehorende app wordt door testers geprezen om het gemak. Hiermee kun je de verwarming op afstand inschakelen, een schema instellen of de temperatuur aanpassen. "Het is erg fijn dat je op afstand alvast een ruimte kunt verwarmen," zegt Marjan01. Ook Noashirley vindt de app een handige toevoeging: "Je kunt hem aanzetten voordat je thuiskomt, wat het gebruik heel flexibel maakt."

Hoewel de app handig is, noemen sommige testers verbeterpunten. BryanTest merkt op dat er soms vertraging zit in de reactie van de app: "Voor een smart device had dit wat sneller mogen zijn." S. vindt het op zich erg handig dat je het apparaat via de app kunt instellen, maar: "Wat we tijdens het testen van het product wel een nadeel vonden is dat je de temperatuur alleen via de app kunt instellen en niet op het apparaat zelf."

Stil en veilig

Veel testers benadrukken hoe stil de verwarming werkt, vooral op lagere standen. Dit maakt hem ideaal voor slaapkamers en werkkamers. S. zegt hierover: "Wij hebben het apparaat in de babykamer staan, en ons kindje wordt niet wakker van het geluid." De ingebouwde veiligheidsfuncties, zoals kantelbeveiliging en automatische uitschakeling, worden ook gewaardeerd. "Het is een geruststellend idee dat het apparaat uitgaat als het omvalt," aldus T.

"Compact, licht en stil: precies wat je zoekt in een verwarming."

- Michel

Kritiekpunten

Hoewel de CX3120/01 veel lof krijgt, noemen testers enkele verbeterpunten. Het geluidsniveau op hogere standen kan storend zijn, vooral bij gebruik in stille omgevingen. Soepah: "In een lage stand is hij heel stil, maar als je even wilt bijverwarmen, maakt hij toch best wat geluid." Piet en T. vonden de gebruiksaanwijzing onduidelijk, vooral bij de installatie van de app. Piet: "Het dikke boekje bevat nauwelijks praktische instructies, wat veel uitproberen betekent."

Conclusie

De Philips CX3120/01 biedt snelle warmte, slimme technologie en een compact ontwerp, waardoor hij ideaal is voor wie kleine ruimtes efficiënt wil verwarmen. De stille werking en ingebouwde veiligheid maken hem geschikt voor slaapkamers, babykamers en werkkamers. Ondanks enkele verbeterpunten, zoals de afhankelijkheid van de app en het geluidsniveau op hoge standen, blijft het een favoriet bij ons testpanel.

✅ Pluspunten

  • Snelle opwarming.

  • Compact en licht.

  • Stil in gebruik (lage standen).

  • Handige app-bediening.

❌ Minpunten

  • Geluid op hoge standen.

  • App niet altijd responsief.

  • Beperkte bediening op het apparaat zelf.

Ontdek de Philips compacte keramische verwarming CX3120/01

Op Kieskeurig.nl

▼ Volgende artikel
Review Apple MacBook Pro 14 inch (M4, 2024) – Nog fijner werken
© Jeroen Boer - ID.nl
Huis

Review Apple MacBook Pro 14 inch (M4, 2024) – Nog fijner werken

Je kon de klok er bijna op gelijk zetten, ongeveer een jaar na de MacBook Pro met M3 brengt Apple de M4-variant op de markt. Grote veranderingen op het gebied van de vormgeving krijgen we dit jaar niet, toch heeft Apple genoeg verbeterd waardoor de MacBook Pro weer wat fijner is geworden.

Fantastisch
Conclusie

Apple heeft zijn al erg goede 14 inch MacBook Pro toch weer weten te verbeteren. De M4-processor is indrukwekkend snel, je krijgt nu altijd 16 GB RAM en de prijs is ook nog eens lager. De bouwkwaliteit is uitstekend en prettig is dat je maar liefst drie Thunderbolt-aansluitingen krijgt. Ook de lange accuduur zal goed van pas komen als je onderweg bent, net als de extra hoge schermhelderheid. Waar de variant met een M3 vorig jaar nog een beetje tussen consument en professional inhing omdat je niet alle (aansluit)mogelijkheden kreeg, zul je bij de variant met M4 vermoedelijk niks missen. Kortom een prima laptop, al blijven de upgradeprijzen wel onveranderd hoog.

Plus- en minpunten
  • Snelle hardware
  • Mat scherm mogelijk
  • Hoge schermhelderheid
  • Indrukwekkende accuduur
  • Heel goede camera
  • Prijzige upgrades
  • Hoorbare koeling bij zware werkzaamheden

De vormgeving van de MacBook Pro is ten opzichte van vorig jaar vrijwel niet veranderd. Wel heb je bij alle varianten nu de keuze tussen spacezwart of zilver, waar de M3-variant vorig jaar nog spacegrijs of zilver was. Ook krijg je nu altijd alle aansluitingen. Want waar de variant met de normale M3 vorig jaar nog twee Thunderbolt-poorten had, krijg je er ook bij de M4-variant dit jaar netjes drie. Het enige verschil ten opzichte van de de duurdere varianten met een M4 Pro of Max is dat je bij de M4-variant Thunderbolt 4 krijgt terwijl de Pro en Max voorzien zijn van Thunderbolt 5. Dat maakt in de praktijk niet heel veel uit: zowel versie 4 als 5 zijn razendsnelle universele aansluitingen voor dataoverdracht, beeldscherm en opladen.

©Jeroen Boer - ID.nl

Je kunt op zowel de M4 als M4 Pro maximaal twee extra beeldschermen aansluiten terwijl een variant met M4 Max maximaal vier extra beeldschermen ondersteunt. Daarnaast is de MacBook Pro voorzien van een HDMI-aansluiting, kaartlezer en 3,5mm-headsetaansluiting. Opladen kan via usb-c en is handig voor dockingstations, maar doe je normaal gesproken via de MagSafe 3-aansluiting waarvoor een laadkabel wordt meegeleverd. De oplader zelf is voorzien van een usb-c-aansluiting. 

©Jeroen Boer - ID.nl

De aansluitingen zijn kortom modern en zelfs vooruitstrevend. Het is daarom opvallend dat wifi 7 ontbreekt, al ondersteunt ook het wel aanwezige wifi 6E natuurlijk wel de 6GHz-band. Omdat de behuizing vrijwel identiek is, zijn het toetsenbord en touchpad onveranderd. Dat is alleen maar positief: het tikcomfort is hoog en de touchpad is nog altijd de beste op de markt. 

©Jeroen Boer - ID.nl

Iets goedkoper, prijzige upgrades

De MacBook Pro is nu voorzien van minimaal 16 GB geheugen in plaats van de karige 8 GB die je vorig jaar kreeg, maar is met een vanafprijs van 1929 euro nu 100 euro goedkoper. Je krijgt dit jaar dus beduidend meer Mac voor je geld. De prijzen van upgrades zijn nog wel hoog, al hoef je de hoeveelheid RAM nu waarschijnlijk niet te verhogen. Wil je dat wel, dan betaal je bijvoorbeeld 230 euro om het werkgeheugen uit te breiden naar 24 GB terwijl het verdubbelen van de opslagcapaciteit naar 1 TB je ook 230 euro kost. Met een paar klikken kost de MacBook Pro dus aanzienlijk meer dan 1929 euro, maar daar staat tegenover dat die instapper meer dan prima is als je genoeg hebt aan 512 GB opslag.

Wij ontvingen van Apple een configuratie met M4-processor voorzien van 16 GB RAM, 1 TB ssd en de optionele nanotextuur op het scherm waarmee de prijs op 2329 komt. 

©Jeroen Boer - ID.nl

Nog beter scherm

Het 14inch-scherm van de vorige MacBook Pro met M3-processor was al erg goed, maar Apple heeft toch nog wat verbeteringen aangebracht. De resolutie en technologie zijn hetzelfde gebleven. Het gaat om een ips-paneel in combinatie met in zones verdeelde mini-led-verlichting. Dat zorgt voor heldere en contrastrijke beelden die de eigenschappen van een oled-scherm vrijwel benaderen. Die helderheid is wat verbeterd, want in heel felle omstandigheden kan ook in de normale SDR-modus een helderheid van 1000 nits gebruikt worden. Hierdoor kun je de laptop ook buiten prima gebruiken. De belangrijkste wijziging aan het scherm is helaas optioneel, want je kunt nu voor een meerprijs van 170 euro kiezen voor een scherm met nanotextuur. Ons testexemplaar is voorzien van nanotextuur en in de praktijk betekent dit dat je een mat afgewerkt scherm krijgt waarbij je veel minder last van reflecties hebt. Werk je vaak buitenshuis of in ruimtes met minder optimale verlichting, dan is dit een optie die je zeker moet overwegen. 

©Jeroen Boer - ID.nl

Camera met trucjes

MacBooks hadden altijd al een bovengemiddeld goede webcam, maar dit jaar heeft Apple een echt indrukwekkend 12megapixel-exemplaar ingebouwd. Die levert dankzij de hoge resolutie en brede kijkhoeken niet alleen heel fraaie beelden, maar heeft ook extra mogelijkheden. Zo kan de camera je nu volgen en je in het midden van het beeld houden. Dat werkt prima en het lijkt net of je een camera hebt die met je mee beweegt. Je schakelt deze functie centraal in via de menubalk van macOS, dus het werkt in alle programma's. Ook achtergrondvervaging en het vervangen van je achtergrond kun je centraal instellen. Een ander trucje is Bureauweergave waarbij de camera een gedeelte op je bureau voor je laptop apart in beeld brengt terwijl je tegelijkertijd ook het gewone beeld kunt gebruiken. Zo kun je iets laten zien aan mensen waar je een gesprek mee hebt. Het is grappig en werkt boven verwachting goed, want twee beelden op hetzelfde moment is toch best speciaal. Tegelijkertijd zijn de beelden van je bureau wel heel korrelig. Het gaat immers om een uitsnede van de normale camera. Leuke functionaliteit, maar hopelijk zit hier in toekomstige generaties nog verbetering in. 

©Jeroen Boer - ID.nl

Uitstekende prestaties

Met de M4 zet Apple een flinke stap ten opzichte van de M3-variant die we vorig jaar getest hebben. Afhankelijk van de benchmark zien we de single-core-prestaties rond de 10 procent toenemen terwijl multicore-prestaties tussen de 22 en 31 procent verbeteren. Waar de M3 in Geekbench 5 een single-core-score van  2377 en een multi-core-score van 10796 punten neerzet, levert deze MacBook pro met M4-processor in dezelfde benchmark maar liefst 2609 en 13268 punten. En bij de belangrijke benchmark Cinebench R23 is er een nog groter verschil. Want waar de variant met een M3-processor respectievelijk 1943 en 10470 punten scoort, gaat de M4 daar met 2202 en 13733 punten duidelijk overheen. Daarmee kom je op het niveau van een M1 Max of M2 Pro. De M4 is dus echt een prima chip. Het verval is bovendien bijzonder laag, de koeling is duidelijk toereikend om de prestaties op orde te houden. Wel slaat de koeling hoorbaar aan als een zware taak langer dan twee minuten duurt. Daar heb je bij normaal gebruik geen last van, maar als je bijvoorbeeld meerdere foto's gaat exporteren of video gaat renderen maakt de MacBook Pro best wel wat geluid.

De ssd presteert met een lees- en schrijfsnelheid van 2893,5 en 3331,3 MB/s prima, maar het zou kunnen dat de 512GB-variant wat langzamer is.

De accutijd van een MacBook Pro was al goed, maar is dit jaar echt uitstekend. In dezelfde browsertest die we vorig jaar hebben uitgevoerd halen we nu een accuduur van 19 uur en 6 minuten waar dat bij de M3-variant nog 17 uur en 31 minuten was. 

©Jeroen Boer - ID.nl

Conclusie

Apple heeft zijn al erg goede 14 inch MacBook Pro toch weer weten te verbeteren. De M4-processor is indrukwekkend snel, je krijgt nu altijd 16 GB RAM en de prijs is ook nog eens lager. De bouwkwaliteit is uitstekend en prettig is dat je maar liefst drie Thunderbolt-aansluitingen krijgt. Ook de lange accuduur zal goed van pas komen als je onderweg bent, net als de extra hoge schermhelderheid. Waar de variant met een M3 vorig jaar nog een beetje tussen consument en professional inhing omdat je niet alle (aansluit)mogelijkheden kreeg, zul je bij de variant met M4 vermoedelijk niks missen. Kortom een prima laptop, al blijven de upgradeprijzen wel onveranderd hoog.