Je hebt een rapport van vijf pagina’s dat voor de lunch tot een alinea moet krimpen. Je kunt gaan lezen en strepen, of je laat een model het zware werk doen. Met Hugging Face bouw je in een paar regels Python een tekst-samenvatter die gratis is, open, en volledig op je eigen machine draait. Geen abonnement, geen API-sleutel, en je tekst verlaat je computer niet.
Hieronder zet je er in vijf stappen een op.
Stap 1 — Installeer de bibliotheek
De kern is de transformers-bibliotheek. Die heeft een reken-backend nodig; torch (PyTorch) is de meest gebruikte. Installeer beide in één keer:
pip install transformers torch
Stap 2 — Laad het samenvat-model
Hugging Face werkt met pipelines: kant-en-klare wrappers om een taak. Voor samenvatten kies je de taak "summarization" en een model dat daarop is getraind. De standaardkeuze is facebook/bart-large-cnn, een BART-model dat is fijngetraind op een grote verzameling nieuwsartikelen met hun samenvattingen.
from transformers import pipeline
samenvatter = pipeline("summarization", model="facebook/bart-large-cnn")
De eerste keer downloadt Hugging Face het model automatisch. Daarna staat het lokaal en gaat het sneller.
Stap 3 — Vat een tekst samen
Geef je tekst mee en stuur de lengte met twee parameters: max_length en min_length (in tokens). do_sample=False zorgt voor een voorspelbaar, herhaalbaar resultaat in plaats van een creatieve variatie.
tekst = """Plak hier je lange tekst..."""
resultaat = samenvatter(tekst, max_length=130, min_length=30, do_sample=False)
print(resultaat[0]["summary_text"])
Je krijgt een summary_text terug met de ingedikte versie. Speel met max_length om de samenvatting korter of langer te maken.
Stap 4 — Lees uit een bestand
In de praktijk zit je tekst meestal in een bestand. Lees het in en voer het door dezelfde pipeline:
with open("artikel.txt", "r", encoding="utf-8") as f:
tekst = f.read()
resultaat = samenvatter(tekst, max_length=150, min_length=40, do_sample=False)
print(resultaat[0]["summary_text"])
Stap 5 — Houd rekening met de grenzen
Twee dingen om te weten. Ten eerste verwerkt BART ongeveer 1.024 tokens per keer, grofweg 700 tot 800 woorden. Langere teksten worden afgekapt. De oplossing is het document in stukken knippen, elk stuk apart samenvatten en de deel-samenvattingen eventueel nog eens door de samenvatter halen.
Ten tweede kun je het model wisselen als snelheid telt. Wil je iets lichters, vervang dan de modelnaam door sshleifer/distilbart-cnn-12-6: een compactere variant die vlotter draait op bescheiden hardware, met een klein kwaliteitsverlies.
samenvatter = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6")
Voor wie is dit handig
Deze aanpak past bij iedereen die regelmatig lange teksten moet indikken en dat liever lokaal en privé doet dan via een online chatbot: onderzoekers, redacteuren, of ontwikkelaars die samenvatten in een eigen script of app willen inbouwen. Wie zonder code wil samenvatten en niet met gevoelige data werkt, is met een gewone chat-assistent sneller klaar. Maar zodra privacy, herhaalbaarheid of automatisering meespelen, geeft een eigen Hugging Face-pipeline je de controle die een online dienst niet biedt.
