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
Circle to Search: ken jij alle mogelijkheden al?
© Google
Huis

Circle to Search: ken jij alle mogelijkheden al?

Met Circle to Search kun je informatie opvragen over wat je op het scherm van je smartphone ziet, zonder dat je van app hoeft te wisselen of iets hoeft te kopiëren. Dat kan met Circle to Search, een functie die standaard ingebouwd is in de nieuwste Android-versies van onder andere Google Pixel- en Samsung Galaxy-toestellen. Je kunt er meer mee dan je misschien denkt!

⭕ Dit artikel in het kort

Heb je een Android-smartphone met Circle to Search? Met deze handige AI-functie kun je meer dan je denkt. In dit artikel leggen we uit hoe Circle to Search werkt, waar je het allemaal voor kunt gebruiken en waarom het ook heel handig is voor gamers ...

Lees ook: 4 handige AI-functies voor je smartphone

Even snel iets opzoeken terwijl je een video kijkt, een bericht leest of door je favoriete app scrolt: tot voor kort betekende dat toch meestal dat je moest wisselen van app, tekst moest kopiëren of een apart tabblad moest openen. Met Circle to Search hoeft dat niet meer. Google heeft deze functie zo ontworpen dat je op elk moment, in elke app, meteen kunt zoeken naar wat er op je scherm staat. Google zoekt vervolgens direct naar relevante informatie, zonder dat je iets hoeft in te typen. Het werkt in vrijwel alle apps, dus of je nu op Instagram zit, een game speelt of iets leest op een website: je kunt het op elk moment starten.

Zo activeer je Circle to Search

De manier waarop je Circle to Search activeert verschilt iets per toestel. Gebruik je een Android-toestel met navigatiegebaren – waarbij je dus veegt in plaats van op knoppen te drukken – dan houd je de onderste rand van het scherm even ingedrukt. Er verschijnt dan een blauwe waas over je scherm: het teken dat Circle to Search is geactiveerd. Heb je nog de klassieke navigatieknoppen, dan houd je gewoon de homeknop ingedrukt. Let op: als je navigatie-elementen verborgen zijn – bijvoorbeeld tijdens gamen of bij video's op volledig scherm – werkt de functie niet. Je moet eerst zorgen dat de balk weer zichtbaar is.

Zodra je Circle to Search activeert, bevriest de inhoud op je scherm. Dat betekent dat je rustig kunt aanwijzen wat je wilt onderzoeken, zonder dat iets beweegt of verdwijnt. De manier waarop je iets selecteert, bepaalt wat je te zien krijgt. Een cirkel om een object leidt tot beeldherkenning; tik je alleen op een woord, dan zoekt het systeem tekstueel. Door een lang stuk tekst te markeren, herkent Circle to Search dat je meer context zoekt, zoals een vertaling of uitleg. Je kunt ook rechthoekig selecteren als je bijvoorbeeld een blok tekst uit een afbeelding wilt analyseren. Onderaan verschijnen automatisch contextafhankelijke knoppen, zoals een vertaalicoon of muzieknoot.

Wat zie ik?

Circle to Search werkt op allerlei soorten content. Zie je een gaaf shirt op een Instagramfoto en wil je weten waar je het kunt kopen? Omcirkel het, en je krijgt gelijk links naar vergelijkbare kledingstukken in webshops. Vaak krijg je niet alleen identieke producten te zien, maar ook alternatieven in verschillende prijsklassen.

Ook meubels, accessoires of zelfs planten kun je zo herkennen. Als je tijdens het scrollen iets tegenkomt dat je aanspreekt, hoef je alleen maar te cirkelen om meteen te zien waar je het kunt vinden – of wat erop lijkt. Handig als je inspiratie opdoet via video's of foto's en daar direct iets mee wilt doen.

Vertaalhulp

Een andere slimme toepassing is het vertalen van tekst, rechtstreeks vanuit beeld. Stel je leest een buitenlandse recensie, komt een menukaart tegen in een foto, of ziet een handgeschreven briefje in een andere taal. Door simpelweg het relevante tekstdeel te selecteren, krijg je direct een Nederlandse vertaling te zien, zonder dat je eerst een aparte vertaalapp hoeft te openen. Dat maakt het veel laagdrempeliger om bijvoorbeeld Franse recepten te begrijpen, Spaanse socialemediaposts te volgen of Duitse nieuwsartikelen te lezen.

©Google

Tekstherkenning: meer dan vertalen alleen

Tekstherkenning werkt overigens niet alleen voor vertalen. Als je een screenshot maakt van een PowerPoint-dia, een gefotografeerde bladzijde uit een boek of een whiteboard vol aantekeningen, kun je die tekst ook omzetten naar digitale, bewerkbare vorm. Handig voor studenten die aantekeningen willen overnemen, of als je tijdens een vergadering snel iets wilt vastleggen maar geen tijd (of zin) hebt om het allemaal handmatig over te typen. Circle to Search herkent ook handschrift verrassend goed, zolang de letters duidelijk zijn.

Studiehulp

Circle to Search komt ook goed van pas bij het leren of studeren. Zit je met een lastige formule of grafiek die je niet begrijpt? Je kunt het direct selecteren en uitleg opvragen, vaak inclusief stapsgewijze berekening of achtergrondinformatie. Vooral handig voor scholieren en studenten die digitale lesmaterialen gebruiken: je kunt blijven werken in je les-app, terwijl je tegelijk extra uitleg opvraagt.

Wat hoor ik?

Ook muziekherkenning is inmiddels in Circle to Search geïntegreerd. Je hebt dus geen aparte apps meer nodig om een nummer te identificeren dat je toevallig hoort in een video, in een winkel of op straat. Door het muzieksymbool onderin aan te tikken terwijl het nummer speelt, herkent Circle to Search het liedje – zelfs als je het neuriet of zingt.

Tips voor gamers

Voor wie graag games speelt op zijn telefoon, biedt Circle to Search sinds kort ook specifieke ondersteuning. Krijg je een puzzel niet opgelost, heb je geen idee wat je met een object of voorwerp in de game moet doen of weet je even niet hoe je een level moet uitspelen? Door het betreffende deel van je scherm te selecteren, krijg je hulp in de vorm van tips, korte uitleg of video's die exact op het juiste moment in de gameplay beginnen. Je hoeft het spel dus niet te verlaten om informatie te zoeken.

©Google


Zin in een nieuwe game?

Ready, steady, play!

De diepte in

Een opvallende toevoeging van de laatste maanden is AI Mode. Wanneer je iets opzoekt met Circle to Search en er verschijnt een zogenoemde AI Overview, kun je naar beneden scrollen en kiezen voor 'dive deeper with AI Mode'. Je krijgt dan de mogelijkheid om door te vragen binnen hetzelfde onderwerp. Stel: je hebt een afbeelding van een historisch schilderij geselecteerd, en AI Overview geeft een korte samenvatting. In AI Mode kun je dan vragen stellen over de stijl, de kunstenaar of de historische context, en krijg je in gewone taal uitgebreide antwoorden.

De cirkel is rond

Je ziet dat je in het dagelijks gebruik dus verrassend veel met Circle to Search kunt. Daarbij is het fijn dat deze AI-hulp bovendien slim reageert op de context. Selecteer je tekst, dan krijg je andere opties dan bij een object of een geluid. Daardoor voelt het gebruik logisch en hoef je niet telkens na te denken over welke knop je moet gebruiken. Ook handig is dat je de gevonden informatie meteen kunt opslaan of delen. Heb je iets interessants gevonden? Dan kun je het met één tik bewaren in bijvoorbeeld Google Keep, mailen naar jezelf of invoegen in een agendanotitie.


Smartphones met Circle to Search

Omcirkelen. Zoeken. Vinden.

Smartphones met Circle to Search

Powered by Kieskeurig.nl

 

 

▼ Volgende artikel
10 fouten die je laptop langzaam, instabiel of onveilig maken
© deagreez
Huis

10 fouten die je laptop langzaam, instabiel of onveilig maken

Je laptop maakt lange dagen. Of je nu thuiswerkt, films kijkt of schoolopdrachten maakt, hij staat vaak uren aan. Wil je dat hij zo lang mogelijk goed blijft werken? Dan zijn er een aantal dingen die je beter niet kunt doen – omdat ze op termijn voor problemen kunnen zorgen. Van slechte ventilatie tot verkeerd opladen: zorg dat je deze fouten voortaan vermijdt.

10x liever niet meer doen:
  1. Laptop veel op bed of schoot gebruiken
  2. Altijd aan de oplader laten hangen
  3. Updates telkens uitstellen
  4. Geen ruimte voor ventilatie laten
  5. Ventilatieopeningen niet schoonhouden
  6. Klikken op verdachte links of bestanden
  7. Geen back-ups maken van je bestanden
  8. Ruw omgaan met je laptop
  9. Alles opslaan op het bureaublad
  10. Geen wachtwoord of vergrendeling instellen

Lees ook: Zo zorg je dat je laptop zo lang mogelijk blijft werken op één acculading

1. Laptop veel op bed of schoot gebruiken

Een laptop heeft lucht nodig. Via kleine openingen aan de zijkant of onderkant voert hij warmte af, en die luchtstroom raakt geblokkeerd als je het apparaat op een zacht oppervlak gebruikt. Op bed, een dekentje of je schoot raakt hij die warmte moeilijk kwijt, waardoor onderdelen onnodig heet worden. Op de korte termijn merk je dat aan een luidruchtige ventilator, op de lange termijn aan snellere slijtage. Gebruik je je laptop vaak op schoot? Leg er dan iets hards onder, zoals een plankje of laptopstandaard. Zo voorkom je oververhitting. Bovendien werkt het vaak ook prettiger.

2. Altijd aan de oplader laten hangen

Veel mensen laten hun laptop de hele dag aan de stroom hangen. Dat lijkt handig – je zit nooit zonder stroom – maar voor de accu is het minder ideaal, vooral bij oudere laptops. Die kunnen sneller slijten als ze continu volgeladen blijven. Moderne laptops hebben gelukkig vaak slimme batterijmanagementsystemen die overladen voorkomen, maar zelfs dan is het beter om de batterij niet constant op 100% te houden. Je verlengt de levensduur door de accu regelmatig te gebruiken: haal de stekker er af en toe uit, laat de lading zakken tot zo’n 30 à 40 procent en laad dan weer op. Veel modellen bieden ook een instelling om het laden automatisch te beperken tot bijvoorbeeld 80%. Werk je veel op netstroom? Dan is het zeker de moeite waard om die functie in te schakelen. Zo houd je de accu langer gezond, zonder dat je er iets van merkt in het dagelijks gebruik.

3. Updates telkens uitstellen

Je krijgt een melding, maar klikt op 'nu niet'. En een dag later nog een keer. En nog een keer. Omdat je net lekker bezig bent en geen zin hebt om de laptop opnieuw op te starten, of omdat je denkt dat updates er alleen voor nieuwe functies zijn. Maar juist in die updates zitten vaak beveiligingsverbeteringen en foutoplossingen. Door lang te wachten blijf je kwetsbaar voor lekken of bugs die allang zijn verholpen. Laat updates daarom uitvoeren op een moment dat je je laptop niet nodig hebt – bijvoorbeeld tijdens de lunch of 's avonds. En stel automatische updates in als dat mogelijk is.

©Daniel CHETRONI - stock.adobe.com

4. Geen ruimte voor ventilatie laten

Wie foto's bewerkt, veel tabbladen open heeft of werkt met grote bestanden, vraagt meer van zijn laptop. De processor warmt op en de ventilator springt aan. Als je laptop dan in een afgesloten kastje, tegen een muur aan of tussen stapels papier staat, kan hij die warmte moeilijk kwijt. De temperatuur loopt verder op, wat invloed heeft op de prestaties en de levensduur. Zorg bij intensief gebruik voor voldoende ruimte rondom het apparaat. Zorg dat je hem op een plek neerzet waar niet allerlei spullen liggen en overweeg een laptopstandaard of -koeler als je merkt dat de temperatuur snel oploopt. 

5. Ventilatieopeningen niet schoonhouden

Een beetje in het verlengde van de fout hierboven: kan je laptop zijn warmte sowieso kwijt, ook als er genoeg ruimte omheen is? In de loop van de tijd verzamelt zich stof in je laptop, vooral rond de ventilator en de luchtkanalen. Zeker als je laptop in een stoffige kamer staat of je veel huisdieren hebt, kan dat snel gaan. Dat stof belemmert de luchtstroom, waardoor warmte blijft hangen en onderdelen sneller slijten. Je merkt het aan een ventilator die vaker aanslaat, of of doordat je laptop langzamer reageert dan je gewend bent. Gebruik af en toe een busje perslucht om de ventilatieopeningen voorzichtig schoon te blazen. 

©Studiomiracle

6. Klikken op verdachte links of bestanden

We weten allemaal dat je niet zomaar ergens op moet klikken. Maar het kan toch gebeuren dat je nieuwsgierig wordt naar die 'gratis update' of dat je denkt dat die mail echt van je bank afkomstig is (want cybercriminelen worden steeds slimmer in het nabootsen van bekende websites en bedrijven). Voordat je het weet heb je dan iets gedownload wat helemaal niet deugt. Malware kan van alles doen: meekijken wat je typt, je bestanden versleutelen, of persoonlijke gegevens stelen.

Een garantie dat je het helemaal kunt voorkomen kan niemand je geven. Wat je in ieder geval wél kunt doen is software altijd alleen via de officiële website downloaden, alleen bijlagen openen van afzenders die je vertrouwt en niet op meldingen klikken die je onder druk zetten. Een goede virusscanner helpt uiteraard ook, maar alert blijven is minstens zo belangrijk.

7. Geen back-ups maken van je bestanden

Je denkt er pas aan als het te laat is: een laptop die niet meer opstart, een harde schijf die crasht of een diefstal. Als je geen back-up hebt en er gebeurt iets met je laptop, dan ben je alles kwijt: je foto's, werk en documenten. Zorg daarom dat je regelmatig een back-up maakt. Dat kan automatisch via een clouddienst, of handmatig met een externe harde schijf. Het instellen kost je hooguit een kwartier. Doen, want de opluchting die je voelt wanneer je een back-up kunt gebruiken op het moment dat je die nodig hebt, is onbetaalbaar! 

8. Ruw omgaan met je laptop

We zijn allemaal wel eens haastig met onze laptop. Snel een usb-stick erin duwen, het scherm met één hand vanaf de zijkant openklappen, wrikken om de oplaadkabel in de poort te steken: het lijkt onschuldig, maar kan schade veroorzaken. Poorten zijn gevoelig, net als de scharnieren van je scherm. Open je laptop altijd met twee handen vanuit het midden en ga voorzichtig om met alle poorten en uitgangen. Doe je dat niet, dan kunnen ze los komen te zitten, waardoor ze uiteindelijk minder goed of helemaal niet meer hun werk kunnen doen.

©Dan74 - stock.adobe.com

9. Alles opslaan op het bureaublad

Voor het gemak bewaren veel mensen bestanden standaard op het bureaublad. Foto's, documenten, downloads – zo heb je ze meteen bij de hand. Omdat elk bureaubladpictogram apart geladen moet worden, kan dat bij oudere laptops voor merkbare vertraging zorgen tijdens het opstarten. Bij moderne laptops speelt dat probleem niet. Maar of je laptop nu oud of nieuw is: door alles maar op het bureaublad te bewaren, raak je wel het overzicht kwijt. Dus dan geldt dat 'alles bij de hand' niet meer. Integendeel: het risico dat je per ongeluk iets belangrijks weggooit, wordt groter naarmate je bureaublad voller raakt. Maak daarom mappen aan, gebruik de standaard 'Documenten'-map en archiveer wat je niet meer nodig hebt.

10. Geen wachtwoord of vergrendeling instellen

Veel mensen gebruiken hun laptop thuis of op werk, en denken daardoor geen wachtwoord nodig te hebben. Maar bij diefstal of verlies ligt je hele digitale leven open. Je mail, documenten, foto's, inloggegevens en opgeslagen wachtwoorden zijn vaak met één klik bereikbaar. Een sterk wachtwoord of pincode op je account, automatische vergrendeling na inactiviteit en versleuteling van je harde schijf maken je laptop veel veiliger. Het kost je nauwelijks extra tijd bij het opstarten, maar voorkomt grote problemen als je laptop ooit in verkeerde handen valt.