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
Zelf je elektrische kookplaat aansluiten? Zo doe je dat slim en veilig!
© andrey
Huis

Zelf je elektrische kookplaat aansluiten? Zo doe je dat slim en veilig!

Hoewel koken op gas voorlopig nog mag, is duidelijk dat de toekomst elektrisch is. Veel mensen stappen nu al over op elektrisch koken – vaak in combinatie met inductie. Ben jij toe aan een nieuwe kookplaat of wil je van het gas af? Dan is het goed om te weten hoe je zo’n elektrische kookplaat aansluit, waar je op moet letten en wanneer je beter een professional kunt inschakelen.

Na het lezen van dit artikel weet je:
  • Dat er 1-, 2- en 3-fase-aansluitingen en -kookplaten zijn
  • Hoe je met de multimeter bepaalt wat voor aansluiting jij hebt
  • Hoe je de elektrische kookplaat aansluit

Dit vind je vast ook interessant: Wat voor soort kookplaten zijn er?

Eén, twee of drie fasen: wat betekent dat?

In tegenstelling tot een gaskookplaat, die je simpelweg aan een gasaansluiting koppelt, is een elektrische kookplaat net iets technischer. Zo'n kookplaat kan worden aangesloten op één, twee of drie elektrische fasen. Welke van de drie je nodig hebt, hangt af van het vermogen van je kookplaat én van de aansluiting in je keuken.

Een 1-fase kookplaat is het eenvoudigst. Die werkt op een gewone stekker met twee pinnen, precies zoals je gewend bent van andere apparaten in huis. Deze modellen hebben een beperkt vermogen – maximaal 3680 watt – maar zijn vaak krachtig genoeg voor wie niet al te fanatiek kookt. Aansluiten is simpel: stekker erin en je kunt aan de slag.

Voor een 2-fase kookplaat heb je een zogenoemde perilex-stekker nodig, met vijf pinnen. Die zie je vooral bij iets krachtigere inductiekookplaten. Meestal worden dit soort kookplaten zonder stekker geleverd, en is het slim om een elektricien in te schakelen voor de installatie. Het benodigde vermogen ligt tussen de 3681 en 7360 watt.

Een 3-fase kookplaat vraagt nog meer stroom en werkt op krachtstroom. Ook hier gebruik je een perilex-stekker met vijf pinnen, maar je moet wel eerst controleren of je meterkast daar op is voorbereid. De aansluitwaarde ligt boven de 7360 watt en het is belangrijk dat de aansluiting klopt – anders werkt de kookplaat niet of loop je zelfs risico op overbelasting. Laat dit daarom bij voorkeur aan een vakman over.

©vectorizer88 - stock.adobe.com

Een kookplaat voor 1- en 2-fase

Je kunt ook kiezen voor een kookplaat met powermanagement. Dat is een kookplaat die je op een normaal stopcontact of op een perilex-stopcontact aansluit. Deze kookplaat kun je in de toekomst uitbreiden, als je dat wilt, maar hiervoor hoef je nu nog niet meteen de aanpassingen in de meterkast en aansluiting door te voeren. Als je wel de aanpassingen in de meterkast laat doen, heb je profijt van de kracht van een 2-fase kookplaat.

Hoe weet je welke kookplaat bij je keuken past?

Wat je kunt aansluiten, hangt af van het type stopcontact in je keuken. Heb je een standaard wandcontactdoos met twee gaten? Dan past daar alleen een 1-fase kookplaat op. Die worden meestal geleverd met stekker en snoer, zodat je hem meteen kunt gebruiken.

Zie je een perilex-stopcontact (met vijf gaten)? Dan is je keuken in principe geschikt voor een 2- of 3-fase kookplaat. Alleen weet je dan nog niet of je meterkast daadwerkelijk drie fasen aankan. Dat kun je op twee manieren controleren: met een multimeter of door in je meterkast te kijken.

Zo check je de aansluiting met een multimeter

Heb je een multimeter in huis? Dan kun je precies meten hoeveel fasen je aansluiting ondersteunt. Teken op een papier het patroon van het perilex-stopcontact en noteer per gat wat je meet. Prik met één pin in het middelste gat (de aarde) en meet met de andere pin de overige vier. Krijg je twee keer 230 volt en twee keer 0? Dan heb je een 2-fase aansluiting. Meet je drie keer 230 volt en één keer 0? Dan is het een 3-fase aansluiting. Label de gaten met ‘L’ voor stroom en ‘N’ voor nul, zodat je straks precies weet wat waar hoort.

©Dmitriy

Voordat je een kookplaat aanschaft, check je eerst de nismaat van je aanrechtblad. Meet met een rolmaat eerst de nis op in het aanrechtblad. Doe dit voor de breedte, de diepte en de hoogte. Komen de afmetingen niet overeen met de kookplaat die je graag wilt? Kijk dan of je het aanrechtblad kunt aanpassen.

Geen multimeter? Kijk in de meterkast

Heb je geen meetapparatuur? Dan kun je in de meterkast zien hoeveel fasen er beschikbaar zijn. Bij een 2-fase aansluiting zie je twee gekoppelde groepen met een hendel ertussen. Zie je vier gekoppelde groepen? Dan is er krachtstroom aanwezig en kun je dus ook een 3-fase kookplaat aansluiten – mits het stopcontact daar geschikt voor is.

©auremar

Zelf een kookplaat aansluiten

Ga je zelf aan de slag? Dan is het belangrijk dat je weet wat je doet. Elektriciteit is geen speelgoed, dus bij twijfel: bel een vakman. Heb je een 1-fase kookplaat met powermanagement die je op een normaal stopcontact wilt aansluiten? Dan moet je deze eerst correct instellen.

Leg om te beginnen een stuk piepschuim onder de kookplaat, zodat je hem veilig kunt omdraaien zonder krassen of barsten. Plak daarna de afdichtband rondom het apparaat, bij voorkeur zo dicht mogelijk bij de glasrand. Begin aan de achterkant, zodat de naad niet in het zicht valt.

Open het aansluitcompartiment onder de kookplaat en controleer het aansluitschema dat daar staat. Gebruik de bijgeleverde bruggetjes om de juiste verbindingen te maken. Sluit het snoer aan: bruin op L, blauw op N en geelgroen op aarde. Zet het snoer vast met trekontlasting en sluit het klepje.

Draai nu de kookplaat weer om en steek de stekker in het stopcontact. Leg de kookplaat op z’n plek in het aanrechtblad. Houd de pauzeknop vijf seconden ingedrukt om het menu te openen. Zoek via de plusknop naar het onderdeel ‘PO’ (power) en stel het vermogen in op 3.7 in plaats van 7.4. Bevestig dit door de pauzeknop nog eens vijf seconden ingedrukt te houden. Je kookplaat is nu geschikt voor een standaard aansluiting.

Houd de stekker op de juiste positie tijdens het meten met de multimeter. Kijk hoe je de stekker in het getekende stopcontact zou steken, zodat je de juiste kleuren van de draden noteert op je tekening.

Een 2-fase kookplaat aansluiten: zo werkt het

Heb je een 2-fase kookplaat? Dan moet je eerst bepalen welke kleur draad bij welk contact hoort. Meet het snoer door met een multimeter, op de piepstand of op de Ohm-stand. Noteer welke draad bij welke stekkerpin hoort en gebruik die info bij het aansluiten.

Open vervolgens het aansluitvak onder de kookplaat en kijk welk aansluitschema je moet gebruiken. L1 en L2 koppel je aan de juiste stroomdraden, 01 en 02 aan de juiste nuldraad. Maak de trekontlasting los, sluit de draden aan zoals je eerder hebt gemeten, en zet alles weer stevig vast.

Steek daarna de stekker in het stopcontact en plaats de kookplaat netjes in het blad. Dankzij de afdichtband blijft alles goed op z'n plek. Zet vervolgens de kookplaat aan en test of alle kookzones werken. Krijg je een foutmelding? Dan is er waarschijnlijk iets misgegaan bij het aansluiten. Geen foutmelding? Dan is je kookplaat klaar voor gebruik.

©S.Engels

Het is gebruikelijk dat de pannen een licht tikkend of zoemend geluid maken tijdens het koken. Dit heeft te maken met het magnetisch veld van de kookplaat. Ruik je een vreemde geur na het installeren van de kookplaat? Dit is ook gebruikelijk en de geur trekt uiteindelijk weg.

▼ Volgende artikel
⛈️ Wat te doen bij onweer: thuis, buiten en op de camping
© Olga Yastremska, New Africa, Africa Studio
Huis

⛈️ Wat te doen bij onweer: thuis, buiten en op de camping

Vooral in de zomer is het vaak raak: code geel of code oranje wegens onweer. Weet jij wat je wél en juist níet moet doen als er een onweersbui nadert? Thuis kun je veel risico's beperken, maar juist buitenshuis – en zeker op de camping – is het opletten geblazen. In dit artikel lees je hoe je jezelf en anderen beschermt, of je nu binnen, buiten of aan het kamperen bent.


In het kort:

⚡ Onweer & thuis ⚡ Onweer & buiten ⚡ Onweer en kamperen: 🏕️ Tent 🚐 Caravan

Lees ook: Regen, regen en nog eens regen … zo voorkom je wateroverlast

Thuis tijdens onweer: veilig, maar niet zonder risico's

In huis ben je relatief goed beschermd tegen blikseminslag, zeker als het gebouw voorzien is van een goede bliksemafleider. Toch zijn er een paar voorzorgsmaatregelen die je serieus moet nemen. Gebruik bij onweer liever geen apparaten die verbonden zijn met het stroomnet of met leidingen. Denk aan de wasmachine, een vaste telefoon of een bedrade computer. Bliksem kiest daarbij meestal de makkelijkste route naar de grond, en dat zijn vaak metalen onderdelen in huis zoals koperdraden of waterleidingen.

Trek bij voorkeur de stekkers uit het stopcontact van kwetsbare apparatuur zoals computers, tv's of de router. Een stekkerdoos met overspanningsbeveiliging biedt wel wat bescherming, maar niet bij een directe inslag. Ga liever ook niet douchen of in bad, want waterleidingen kunnen de elektrische spanning van een blikseminslag geleiden.

Ramen kun je gewoon dicht houden, en als je wilt kijken naar het natuurgeweld, doe dat dan vanaf een veilige plek binnenshuis. Zorg dat huisdieren binnen zijn en zet het alarmsysteem even uit als dat storingsgevoelig is bij blikseminslag.

Buiten bij onweer: voorkom dat je zelf bliksemafleider bent

Ben je onderweg of buiten als het begint te donderen, dan is het zaak om snel te handelen.

Onthoud: als je de bliksem ziet en binnen 10 seconden de donder hoort, zit je binnen de gevarenzone. Zoek dan zo snel mogelijk een veilige schuilplek.

De veiligste plek is een gebouw met muren en een dak – bijvoorbeeld een winkel, huis of station. Een auto met metalen carrosserie is ook een prima optie. Die werkt als een kooi van Faraday en geleidt de stroom om je heen in plaats van door je heen.

Vermijd tijdens onweer open velden zoals weilanden of sportterreinen, want daar ben je letterlijk het hoogste punt. Ook hooggelegen plekken zoals duinen of heuveltoppen vormen een risico. Zoek geen beschutting onder een boom die in z'n eentje op een veld staat – dat is juist een bliksemmagneet. Blijf verder uit de buurt van metalen objecten zoals hekken, masten of fietsen, en houd afstand van water – of dat nu een meer, sloot of zwembad is.

Kun je nergens heen? Maak jezelf dan zo klein mogelijk: hurk neer op je voetzolen, houd je voeten tegen elkaar en wikkel je armen om je knieën. Ga niet liggen; zo vergroot je je contactoppervlak met de grond, wat het risico op aardstroom vergroot.

©ID.nl

Kamperen met onweer: extra opletten in tent of caravan

Kamperen geeft een gevoel van vrijheid, maar bij onweer ben je juist extra kwetsbaar. Een tent biedt geen enkele bescherming tegen bliksem, hoe stevig het doek ook is. Het metalen frame vergroot het risico juist, vooral als je op een open veld kampeert of vlak bij een losse boom staat.

Als er onweer op komst is, zoek dan zo snel mogelijk een veilig onderkomen. Een stenen sanitairgebouw, de receptie of je auto bieden veel meer bescherming dan een tent. Zit je in een camper of caravan met een metalen buitenkant? Dan ben je redelijk veilig, mits je ramen en deuren gesloten houdt en geen contact maakt met metalen delen. Stacaravans met een houten of kunststof omhulsel bieden die bescherming niet: het klopt dat ze geen stroom geleiden, maar ze voeren die ook niet af. Daardoor kan een blikseminslag via leidingen of metalen onderdelen binnen alsnog gevaarlijk uitpakken. Tijdens onweer blijf je dus beter uit de buurt van dat soort constructies.

Laat ook je elektronische spullen niet in de tent of aan opladers zitten. Berg ze los op, zonder kabels of contact met de grond.

Staan er bomen op de camping? Zorg dat je tent daar niet direct onder staat. Bij inslag kunnen takken afbreken of kan de bliksem via de wortels naar de grond doorslaan. Ook op campings in de bergen of aan open water is het risico op blikseminslag extra hoog – check bij aankomst wat de aanbevolen schuilplaatsen zijn.

En hoe zit het met de tentstokken?

Metalen tentstokken zijn niet per definitie gevaarlijk, maar ze kunnen wel extra risico opleveren bij onweer. Omdat tenten vrijwel altijd met metalen haringen in de grond staan, is er al snel sprake van een geleidende verbinding met de bodem. Bij een blikseminslag kan de stroom zich dan via het frame en de haringen verspreiden, met risico voor wie zich in de tent bevindt. Daarom blijft het advies: verlaat bij onweer de tent en zoek een écht veilige plek op.

Tot slot: een goede voorbereiding helpt

Kijk altijd naar de weersvoorspelling voordat je op pad gaat. Veel weerapps geven een melding bij onweerskansen, vaak met een tijdsindicatie en locatie. Op de camping is het handig om bij aankomst al te weten waar je naartoe kunt bij slecht weer.

Zorg ook dat je zaklamp, powerbank en radio of noodaccu paraat hebt als je kampeert, voor het geval de stroom uitvalt. En vooral: blijf rustig. Onweer is gevaarlijk, maar met de juiste kennis en voorzorgsmaatregelen voorkom je ongelukken.

🔦 Voor als de stroom uitvalt

Licht in de duisternis!