Programmeren in Python met ChatGPT – Deel 3

Programmeren in Python met ChatGPT – Deel 3

In deel 2 van deze serie artikelen hebt u geleerd hoe u notulen van vergaderingen kunt samenvatten met behulp van de OpenAI API in Python. Maar je kunt meer: ​​het taalmodel achter ChatGPT is in staat teksten te analyseren en daar besproken onderwerpen uit te halen. Zo kunt u documenten automatisch ordenen op onderwerp.

in Deel 2 We hebben al gezien dat ChatGPT meer kan dan alleen gesprekken voeren. Zo schuwt het taalmodel de taak van het samenvatten van teksten niet. We kunnen dit principe in een extremere vorm doorvoeren: vraag om in een paar woorden de onderwerpen te noemen die in de tekst worden besproken. Dit is perfect om automatisch tags aan teksten toe te kennen, zodat je ze sneller kunt vinden. In dit deel bereiken we dit met behulp van de OpenAI API in Python, waar je al enigszins bekend mee bent.

Doorloop alle bestanden

Kopieer het Python-script samenvatting_docx_files.py Buiten Deel 2. Wij gebruiken dit bestand als basis en passen het hier aan. Vervang eerst de systeemrouter:

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

We zullen de prompt later verder aanpassen, omdat, zoals we in eerdere delen van de serie zeiden, deze prompt zo specifiek mogelijk moet zijn. Maar we moeten ergens beginnen.

Om de rapporten samen te vatten, gingen we ervan uit dat alle Word-bestanden zich in dezelfde map bevonden. Nu willen we veel bestanden verwerken, zelfs als ze zich in submappen bevinden. Daarom zijn we van baan veranderd Process_docx_bestanden in:

naar rglob We krijgen een lijst met alle paden die eindigen op .docx. Vervolgens controleren we of dit een bestand is en niet een map waarvan de naam eindigt op .docx. Vervolgens lezen we de inhoud met de functie lees_docx Wij hebben het de vorige keer gemaakt.

READ  Nieuwe tunnel tussen A4 en A44 wordt Corbulotunnel genoemd

Opslaan in Visual Studio Code met behulp van Ctrl+S Script onder de naam extract_tags.py En open een opdrachtregelvenster met het menu Nieuw station/station. Voer het programma als volgt uit:

python extract_tags.py directorymetdocumenten

vervangen Directorymetdocumenten Via het fysieke pad dat al uw te analyseren documenten bevat.

Analyseer grote bestanden

Als u dit nu toepast op een map met grotere documenten, crasht uw Python-programma met een foutmelding als:

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.

Dit is een beperking van het gpt-3.5-turbomodel, dat iets meer dan 4.000 tekens aankan. Met een ander model kunnen we meer tokens aan, maar bovenal willen we dat het programma niet meer crasht en pas doorgaat naar de volgende scripts als een token te lang is. Vervang dus de lijn print(get_completion(tekst, SYSTEEM_PROMPT)) Tot het einde door:

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

Zoals gezegd kunnen we ook het formulier aan het begin van het programma vervangen:

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

Dit 16KB-model ondersteunt vier keer zoveel tokens, maar je betaalt twee keer zoveel per token.

Van onderwerpen tot tags

Als u de bovenstaande code uitvoert, krijgt u volledige zinnen of korte trefwoorden met beschrijvingen van de onderwerpen. Dit is niet onze bedoeling. We moeten dus in het systeem duidelijk maken wat we willen: korte tags bestaande uit éé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 wat we verwachten, al gaat de grens van drie woorden af ​​en toe voorbij. Maar als dit zoiets is als ‘Raspberry Pi Pico’, zien we het over het hoofd. Als we deze tags verder willen verwerken, moeten we ze consistent maken. Daar schrijven we een extra functie voor.

READ  Nieuwkomer Google Chrome in iOS (en zo ziet het eruit)

Nabewerking

Een voorbeeld illustreert dit. Stel dat ons programma de volgende tags uit tekst haalt: ZigBee, Z-golfBluetooth-netwerk, draad, Protocollen voor huisautomatisering. Vervolgens willen we er een lijst van maken met tags zigbee, z-wave, Bluetooth Mesh, thread en domotica-protocollen. Dit doen we via de volgende functie:

Docent Labels Het is gewoon een string zoals “Home Automation Controller, Home Assistant, Raspberry Pi, Home Automation Devices, Installation” die we krijgen van de OpenAI API. We hebben dat bij elke komma uitgesplitst, waardoor we een lijst met tags hebben gekregen. Voor elke tag in die lijst extraheren we deze strip() Eerst verwijderen we alle spaties aan het begin en einde die we hebben geplaatst minimum() Converteer alle letters naar kleine letters en vervang elke middelste spatie door een koppelteken ().

Om de tags te normaliseren, vervangen we de regel print(get_completion(tekst, SYSTEEM_PROMPT)) Aan het einde van het script door:

Je ziet nu de tags van elk document als een lijst in Python:

[‘zigbee’, ‘z-wave’, ‘bluetooth-mesh’, ’thread’, ‘domoticaprotocollen’]

Artikelen voor elke tag

Tot nu toe hebben we tags alleen gebruikt als een zeer korte samenvatting van documenten. Maar we kunnen dit ook omkeren: nadat we alle tags hebben geëxtraheerd, kunnen we de documenten die door die tag worden beschreven aan elke tag koppelen. Zo kunnen wij later gemakkelijk documenten opvragen die bij een bepaalde tag horen.

hoe doe je dat? Daarom vervangen wij de hele naarLoop aan het einde van het programma met de volgende code:

We maken dus eerst een leeg woordenboek documenten op mij. Vervolgens beoordelen we alle bestanden opnieuw met de bijbehorende tekst. We vragen de OpenAI API om tags uit de tekst te extraheren en te normaliseren. Voor elke tag controleren we of deze al in het woordenboek voorkomt. Als dit niet het geval is, voegen we deze toe met een lege lijst als bijbehorende waarde. Vervolgens voegen we het pad van het geparseerde document aan die tag toe.

READ  5 apps die iedereen nodig zou moeten hebben

Als we uiteindelijk alle bestanden op deze manier hebben geparseerd, bevat het woordenboek documenten Tags met een lijst met bijbehorende bestanden. We laten ze nu teken voor teken zien. Zo weet je direct welke documenten je nodig hebt als je meer wilt weten over een onderwerp!

Aanstaande maandag deel vier van deze serie! Hier hebben we ChatGPT die teksten in Python vertaalt en geschreven opdrachten omzet in computertaal.

Lees ook:

0

Aangedreven door

Een reactie achterlaten

Je e-mailadres zal niet getoond worden. Vereiste velden zijn gemarkeerd met *