Onder de motorkapUnder the hood
Bronnen, kennisbases en logica achter de classificatie.Sources, knowledge bases and logic behind the classification.
Waar komt de kennis vandaan?Where does the knowledge come from?
CLASS combineert vijf soorten bronnen:
EU EBTI-database
EU DDS extractFull bulk-download (~391 MB ZIP, 23 CSV's). Ruim 21.000 BTI-records uit lidstaten, 22.000 keywords gemined uit BTI-omschrijvingen, plus 46.000 vertaalde varianten. Wekelijkse sync (dinsdag 04:00 UTC).
EU Classification Regulations
Class Regs + CJEU-arresten worden gemirrord van EUR-Lex (CELLAR API). Weekelijkse walker (maandag 03:00 UTC). Elke uitkomst toont CELEX-links naar EUR-Lex.
Nederlands woordenboek (Wiktionary)
145.000 lemma-entries uit kaikki.org (NL Wiktionary). Bevat Engelse glosses, synoniemen, hypernyms, etymology. Wekelijkse sync (woensdag 05:00 UTC).
Open Dutch WordNet
91.000 lemma-entries met NL-definities uit ODWN (VU Amsterdam). Vult kaikki aan met NL-native semantic definities voor prefix-analyse van samengestelde woorden.
Curated BTI-synoniemen
Handmatig gevalideerde mapping van klant-termen naar CN-codes. Overrulet alle andere bronnen bij een match. Betrouwbaarheid=3 (hoogste).
CLASS combines five types of sources: EU EBTI database (21k BTI records), EU Classification Regulations + CJEU (mirrored from EUR-Lex), Dutch Wiktionary via kaikki.org (145k entries), Open Dutch WordNet (91k with NL definitions), and curated BTI synonyms.
Woordenboek-integratie voor samengestelde woordenDictionary integration for compound words
Bij onbekende compound-woorden (bijvoorbeeld een technische term die niet in de standaard nomenclatuur voorkomt), gebruikt de engine het woordenboek voor semantische analyse:
- Compound-suffix mapping — de suffix (rechterdeel) wordt opgezocht in een corpus van BTI-omschrijvingen. Nederlands is right-headed: het laatste deel is meestal het product-type.
- Prefix-woordenboek-lookup — de prefix (linkerdeel) wordt opgezocht in kaikki (EN glosses) én ODWN (NL definities). Bijvoorbeeld voor het compound "scherfvest": prefix "scherf" → ODWN "brok v.e. bom" → semantic domain bescherming/wapens.
- Chapter-conflict detectie — als het prefix in het woordenboek een ander EU-hoofdstuk suggereert dan waar de suffix wees, presenteert de engine een verduidelijkingsvraag met beide hoofdstukken als opties. Zo wordt silent-picking bij semantische inconsistentie vermeden.
Voorbeeld: voor "motorpotloden" zegt de suffix-mapping hoofdstuk 96 (schrijfwaren), maar het prefix "motor" heeft woordenboek-glosses die naar hoofdstuk 84 (machines) wijzen. De engine stelt dan de vraag "Welk hoofdstuk klopt: 84 of 96?" i.p.v. blind te classificeren.
For unknown compound words, the engine uses the dictionary for semantic analysis: suffix mapping (BTI corpus), prefix lookup (kaikki EN + ODWN NL), and chapter-conflict detection. When prefix and suffix point to different chapters, the engine prompts instead of guessing.
Pre-validation: TWIJFEL bij zwakke bronnenPre-validation: UNCERTAIN on weak sources
Elke classificatie wordt na uitkomst nog een keer gevalideerd. De engine kijkt:
- Komt de bron uit een curated set (handmatig / BTI / EBTI-keyword / gebruiker / product-map / attributes)? → STERK of MATIG
- Komt de bron uit AI-mining zonder curated support (product-map-auto / gemini-nl / semantic)? → TWIJFEL
- Is er GEEN BTI-precedent en de bron is probabilistisch? → automatische downgrade naar ONBEPAALD + vraag met broer-CN's
Bij een MATIG-classificatie zoekt de engine bovendien of ≥ 3 unieke curated bronnen deze exacte code ondersteunen — zo ja, dan wordt de sterkte STERK.
After outcome, every classification is re-validated: curated source → STRONG/MODERATE, probabilistic without BTI support → UNCERTAIN, no BTI precedent + probabilistic → auto-downgrade to INDETERMINATE with sibling choice.
Semantic-decompound in praktijkSemantic decompound in practice
Twee mechanismen die semantic-decompound gebruiken:
Compound-verduidelijking
Als de suffix van een compound naar meerdere headings kan mappen (bijv. "vest" komt voor in kleding, bescherming, redding), stelt de engine een keuzevraag met alle mogelijke headings. Voorbeelden uit de bekende curated set worden per heading getoond.
Data-driven keyword-matching
Voor elke suffix wordt uit de curated BTI-set een keyword-vocabulaire opgebouwd per heading (via kaikki-glosses van bekende prefix-varianten). Bij een nieuwe compound wordt de prefix opgezocht in kaikki en gescoord tegen de heading-vocabularia. Bij duidelijke winnaar (≥ 1 keyword overlap én strikt boven runner-up) volgt silent-pick, anders vraag.
Two decompound mechanisms: (1) Compound clarification — when suffix maps to multiple headings, prompt with all options + curated examples per heading. (2) Data-driven keyword matching — per suffix, build keyword vocabulary per heading from kaikki glosses of known prefixes; score new prefix against them.
Wat zit NIET in de engineWhat's NOT in the engine
Voor transparantie:
- Geen cloud-LLM tijdens uw query — Gemini/Claude worden alleen offline gebruikt voor het minen van synoniemen en het bouwen van embeddings. Uw omschrijving wordt niet doorgestuurd naar een externe AI.
- Geen "hallucinatie" — elke uitkomst moet in de nomenclatuur bestaan; niet-bestaande CN's worden gestript naar de langste bestaande parent.
- Geen silent-wrong bij zwakke bronnen — pre-validation downgradet automatisch als er geen curated BTI-precedent is.
- No cloud-LLM during your query — Gemini/Claude are only used offline for mining synonyms and building embeddings.
- No hallucination — every outcome must exist in the nomenclature; nonexistent CN's are stripped to the longest existing parent.
- No silent-wrong on weak sources — pre-validation auto-downgrades without BTI precedent.