dennis croon
werk

NLP-matching motivatiebrieven ↔ vacature (J&V)

Cosine-similarity tool die recruiters helpt prioriteren tussen tientallen sollicitaties — uitlegbaar dankzij TF-IDF, met expliciete bias-mitigaties wegens AI Act hoog-risico.

rol
Data Scientist
periode
2021/01 → 2023/05
"Werving valt onder AI Act Bijlage III hoog-risico — dus dit model is een hulpmiddel, nooit een autonome beslisser."

Het probleem

Een vacature trekt typisch tientallen tot honderden sollicitaties aan. Recruiters lezen die allemaal door voor een eerste schifting. Tegelijkertijd:

  • EU AI Act Bijlage III zet werving expliciet op de lijst hoog-risico — wat scherpe eisen stelt aan verklaarbaarheid en bias-controle.
  • AVG: motivatiebrieven zijn persoonsgegevens, bijzondere categorieën zijn niet uit te sluiten (religie, gezondheid kunnen in tekst voorkomen).
  • Historische bias in trainingsdata reproduceert zich gretig (zie het Amazon-recruiter-debacle uit 2018).

Volledig automatiseren is dus geen optie. Maar recruiters ondersteunen met een relevantiescore per brief om aandacht te richten — dat kan wél verantwoord.

De aanpak

Pipeline draait op Azure Databricks (managed Spark, geschikt voor notebook-gebaseerde ML én voor batchverwerking van sollicitaties):

  1. Tekst preprocessing met spaCy (nl_core_news_lg): lowercasing, interpunctie, stopwoorden, lemmatisering — Nederlandse-talige tekst vergt dit volledig.
  2. Vectorisatie met TF-IDF — bewust gekozen boven sentence embeddings. Waarom: verklaarbaarheid. Recruiters kunnen zien welke woorden bijdragen aan een score. BERT-achtige modellen zijn black boxes.
  3. Cosine similarity tussen vacature-vector en elke brief-vector — lengte-invariant, robuust voor wisselende brieflengtes. Euclidische afstand zou vertekend raken: een langere brief heeft een grotere vector-magnitude.
  4. Ranking + visualisatie in staafdiagram per vacature.

Wiskundige onderbouwing

De cosine similarity wordt berekend als:

similarity(A, B) = (A · B) / (‖A‖ · ‖B‖)

Wat alleen naar de richting van de vectoren kijkt, niet hun lengte. Twee documenten die over hetzelfde gaan krijgen een hoge score, ongeacht of het ene 200 woorden is en het andere 800.

Bias-mitigaties

Dit is geen voetnoot — dit is de kern:

  • Geen demografische input in de vector (naam, leeftijd, geslacht, herkomst worden expliciet uitgesloten of geanonimiseerd vóór vectorisatie)
  • Periodieke disparate impact audit over groepen
  • Recruiter blijft eindverantwoordelijk — het model rankt, de mens beslist
  • Transparantie naar de sollicitant: bekend mag zijn dat dit hulpmiddel gebruikt wordt

Waarom TF-IDF en niet BERT?

Een terechte vraag — modernere modellen vangen synoniemen op die TF-IDF mist. Concrete redenen om hier toch TF-IDF te kiezen:

  • Uitlegbaarheid voor recruiters en sollicitanten (cruciaal onder AI Act)
  • Snelheid + geen GPU op Databricks — een vacature met 200 brieven in seconden i.p.v. minuten
  • Cold-start: bij een nieuwe of zeldzame vacature heeft een supervised classifier geen historische voorbeelden. Cosine similarity is unsupervised en daar minder kwetsbaar voor
  • Verklaarbare-AI eisen die de overheid aan zichzelf stelt — een trade-off die in de private sector minder snel gemaakt wordt

In het slide-voorbeeld zie je scores tussen 0.04 en 0.10 — typische lage absolute waardes voor TF-IDF op korte teksten. Bij dense sentence embeddings zou je 0.5–0.9 zien. De ranking tussen brieven is wat telt, niet de absolute getallen.

Wat het opleverde

TODO — adoptie door recruiter-teams, doorlooptijd-reductie per vacature.

Wat ik specifiek deed

Ontwikkeling van de matching-pipeline op Databricks, modelkeuze (de TF-IDF vs BERT afweging) en de framing rondom verklaarbaarheid + AI Act compliance.

Wat ik ervan heb meegenomen

Onder de AI Act is "het beste model" niet automatisch het meest sofistieke. Een correct gevalideerd TF-IDF model dat een recruiter kan begrijpen en betwisten, slaat een ondoorzichtige BERT-classifier — zelfs als die laatste 5% beter scoort op een offline metriek.

Gerelateerd

Skills, topics & tech

Gerelateerd werk