Een NER-model kiezen: spaCy, GLiNER, Transformers of LLMs?
Automatische vertaling
Dit artikel is automatisch vertaald vanuit de oorspronkelijke Engelse versie.
Named entity recognition (NER) vindt en labelt tekstspans, zoals personen, bedrijven en productcodes. Deze pagina is bedoeld voor engineers die een extractieaanpak kiezen voor een productieomgeving. Je krijgt een startpunt dat je kunt testen met je schema, documenten en operationele randvoorwaarden.
Gebruik spaCy voor stabiele labels en snelle pipelines. Kies GLiNER wanneer labels vaak veranderen. Test een bi-encoder wanneer veel labels gecachte embeddings kunnen hergebruiken, of een fine-tuned Transformer tokenclassifier wanneer je gelabelde voorbeelden hebt. Test GLiNER2 voor gestructureerde records met velden die expliciet in de tekst staan. Gebruik regels voor vaste omzettingen en test een LLM wanneer een veld afleiding of contextafhankelijke normalisatie vereist.
Kies op basis van de vereiste labels, de taal, de vorm van de uitvoer, de gelabelde data en het latencybudget.
Beslissingstabel
| Behoefte | Startpunt | Waarom |
|---|---|---|
| Bekende labels en deployment op CPU | spaCy-baseline | Voorgetrainde pipelines en regels bieden een baseline; controleer de nauwkeurigheid voor de taal en het domein. |
| Nieuwe labels zonder volledige training | GLiNER | Extractie op basis van labels werkt goed wanneer de labelset verandert. Begin met duidelijke typebeschrijvingen, niet met kale namen. |
| Grote, herbruikbare labelinventaris | GLiNER bi-encoder | Kan labelembeddings vooraf berekenen en cachen in plaats van labels voor elk document opnieuw te encoden. |
| Entiteiten en relaties in één doorgang | GLiNER-Relex als kandidaat | Extraheert entiteits- en relatietypen gezamenlijk. Vergelijk dit met afzonderlijke stappen op het beoogde relatieschema. |
| Entiteiten en documentvelden of classificatie | GLiNER2 | De schema-interface kan recordvelden extraheren naast entiteiten en classificaties. Test dit met het vereiste schema. |
| Geneste of overlappende entiteiten | Decoder met ondersteuning voor geneste entiteiten, waaronder GLiNER met flat_ner=False | Vlakke decodering onderdrukt overlap. Test geneste spans op annotaties met de overlapspatronen die je verwacht. |
| Meertalige extractie of extractie met meerdere schriftsoorten | GLiNER-X of XLM-R-baseline | Test elke doeltaal, elk domein en de formulering van de typebeschrijvingen. |
| Stabiele domeinlabels met representatieve gelabelde spans | Fine-tuned tokenclassifier of spaCy-pipeline | Stel een supervised baseline op en vergelijk daarna exact-span F1, latency en kosten op je domeinset. |
| Velden die afleiding of contextafhankelijke normalisatie vereisen | LLM of hybride kandidaat | Toets afgeleide waarden aan domeinannotaties. Structured outputs beperken de vorm van het antwoord, niet de juistheid. |
| PII met hoge impact of gereguleerde workflow | Presidio plus GLiNER2-PII als kandidaat | Combineer modeluitvoer met deterministische controles, controles op het onleesbaar maken van gegevens en beoordeling. |
| Exacte ID’s, bekende termen of vaste normalisatietoewijzingen | Regels en woordenboeken | Gebruik matching voor vaste patronen en opzoektabellen voor bekende aliassen; test gemiste varianten en onjuiste overeenkomsten. |
Zo kies je
Beschrijf de entiteitstypen en enkele gelabelde voorbeelden voordat je een model kiest. Neem dubbelzinnige termen en spans binnen andere spans op als de taak die nodig heeft.
Als labels stabiel zijn, test dan eerst een bestaande pipeline. Pas fine-tuning toe op een tokenclassifier wanneer fouten binnen het domein training rechtvaardigen en representatieve gelabelde voorbeelden beschikbaar zijn. Vergelijk de classifier op een apart gehouden domeinset. Hij voorspelt tokenlabels zonder het antwoord token voor token te genereren.
Als labels vaak veranderen, test dan GLiNER of een LLM-extractor. Schrijf een korte beschrijving voor elk dubbelzinnig type. ZeroNER evalueert typebeschrijvingen met entiteitstypen die tijdens de training niet voorkwamen. Beschrijvingen verduidelijken het label; een test van onbekende typen moet die typen ook buiten de training houden.
Test bij geneste entiteiten of het checkpoint beide spans vindt. In het voorbeeld van geneste entiteiten in de gids gaf urchade/gliner_medium-v2.1 New York University terug als organisatie, maar miste de ingesloten locatie New York, zelfs met flat_ner=False en een drempel van 0,05. Die waarneming geldt voor dit checkpoint en deze zin. Overlappende voorspellingen toestaan garandeert niet dat het model beide entiteiten detecteert.
Als je een grote labelinventaris hergebruikt, evalueer dan een bi-encoder voordat je een gezamenlijke label-tekstencoder gebruikt. Het artikel over de GLiNER-bi-encoder rapporteert ongeveer 130 keer hogere throughput voor gliner-bi-edge-v2.0 met gecachte labelembeddings dan voor gliner_small-v2.5 bij 1.024 labels. Die vergelijking gebruikte één H100 GPU en batchgrootte 1; de snelheidstests omvatten invoer van 64, 256 en 512 tokens. Dit laat zien waarom labelhergebruik het testen waard is, niet welke versnelling je bij een andere belasting mag verwachten.
Als documenten meerdere talen omvatten, benchmark dan elke doeltaal en elk schrift. OpenNER 1.0 vond geen enkel model dat het beste presteerde over de volledige verzameling van 52 talen. Test zowel Engelse als gelokaliseerde typebeschrijvingen, omdat de labeltekst deel uitmaakt van de modelinput.
Test GLiNER2 voor gestructureerde records met velden die expliciet in de tekst staan. Gebruik regels of opzoektabellen voor vaste normalisatie, zoals het koppelen van een bekende productalias aan de product-ID. Test een LLM of een hybride aanpak wanneer een waarde uit de context moet worden afgeleid of een dubbelzinnige vermelding moet worden opgehelderd. Evalueer de geëxtraheerde waarden en de onderbouwing ervan in de bron; een geldig schema alleen toont niet aan dat de waarden juist zijn.
LangExtract is nuttig wanneer LLM-extracties aan bronlocaties moeten worden gekoppeld. NuExtract is een zelf gehoste optie voor multimodale documentextractie. Beide hebben nog steeds evaluatie per veld op de beoogde documenten nodig.
Veel zakelijke extractietaken zijn geen pure NER. “Vind de partijen, verplichtingen, ingangsdatum, beëindigingsclausule en toepasselijk recht” is documentbegrip met entiteitsvelden.
Gebruik voor PII een PII-framework zoals Presidio als integratielaag en laag voor het onleesbaar maken van gegevens. Behandel GLiNER2-PII als een modelkandidaat, niet als een compliancebeslissing. Meet recall op de gevoelige formaten, talen en documenten die het systeem zal verwerken.
Productiepipeline
Een extractiepipeline voor productie voegt vaak stappen rond het model toe:
- Kandidaatextractie: spaCy, GLiNER, Transformer-model, LLM, regels of een combinatie.
- Optionele normalisatie of entiteitskoppeling: koppel spans aan canonieke ID’s, productcodes, gebruikers, bedrijven of termen in je domeinwoordenboek.
- Validatie en beoordeling: wijs onmogelijke labels af, dwing schemabeperkingen af, dedupliceer spans en stuur onzekere gevallen ter beoordeling door.
Normalisatie koppelt geëxtraheerde tekst aan een stabiele ID in je data. Bepaal bij de span “Apple” eerst of deze het bedrijf, de vrucht, een productfamilie of een beurssymbool aanduidt. Koppel die betekenis vervolgens aan de bijbehorende ID.
Evaluatiechecklist
Meet meer dan F1 op entiteitsniveau:
Exact-span F1 telt een voorspelling alleen als correct wanneer zowel de span als het label overeenkomen met de annotatie. Een minder strikte score kan overlappende spans accepteren; leg daarom de matchingregel vast. Geen van beide scores controleert of de geëxtraheerde naam aan de juiste database-ID is gekoppeld.
- exact span F1
- relaxed span F1
- labelverwarringsmatrix
- omgang met geneste entiteiten
- nauwkeurigheid van entiteitsnormalisatie
- gevoeligheid voor typebeschrijving en labeltaal
- uitsplitsingen naar taal, schrift en documentformaat
- foutpositieven per label
- kalibratie van betrouwbaarheid
- latency en kosten per document
- percentage correcties door mensen
Houd de testset gescheiden van schema-ontwerp en drempelafstelling. Rapporteer het aantal documenten en entiteitsvermeldingen per label. Gebruik betrouwbaarheidsintervallen op documentniveau wanneer herhaalde vermeldingen in één document anders de zekerheid zouden vergroten.
Verder lezen
- NER-gids 2026 behandelt encoders, LLMs en de productiearchitectuur met drie niveaus.
- Schemageleid redeneren is relevant wanneer NER overgaat in gestructureerde extractie.
Referenties
- GLiNER-documentatie
- Artikel over de GLiNER-bi-encoder - gecachte labelembeddings voor grote inventarissen.
- GLiNER2-documentatie
- Artikel over GLiNER-Relex - gezamenlijke entiteits- en relatie-extractie.
- Artikel over ZeroNER - strenge zero-shot-evaluatie met typebeschrijvingen.
- Artikel over OpenNER 1.0 - meertalige NER-evaluatie met meerdere ontologieën.
- LangExtract - LLM-extractie met bronverwijzingen.
- NuExtract - zelf gehoste multimodale extractie.
- Presidio - framework voor PII-detectie en anonimisering.
- Artikel over GLiNER2-PII - meertalige PII-modelkandidaat.
- spaCy-documentatie over benoemde entiteiten
- Hugging Face-gids voor tokenclassificatie
- OpenAI-gids voor structured outputs