HomeAI & Machine LearningSupport Chatbot Intentkaart — Nearest-Neighbour Routering

💬 Support Chatbot Intentkaart — Nearest-Neighbour Routering

Interactieve supportchatbot-simulator: typ een bericht, bekijk hoe het wordt ingebed in 2D-ruimte en gerouteerd naar het dichtstbijzijnde intentiecluster met echte nearest-centroid-classificatie.

AI & Machine Learning3DGemiddeld60 FPS
ai-customer-service ↗ Los openen

Over de Support Chatbot Intentkaart

Voordat een klantenservicechatbot iets kan beantwoorden, moet die uitzoeken wat je eigenlijk vraagt. Deze eerste stap heet intentieclassificatie: het systeem leest je bericht en wijst het toe aan een van een vaste set categorieën — "volg mijn bestelling", "ik wil een terugbetaling", "reset mijn wachtwoord" — elk waarvan een andere vervolgworkflow activeert. Moderne systemen doen dit door tekst in te bedden in een hoogdimensionale vectorruimte met een transformermodel en afstanden te vergelijken, maar het onderliggende geometrische idee is hetzelfde als wat deze simulatie in twee dimensies toont: elke intentie beslaat een gebied in de ruimte, en een nieuw bericht wordt gerouteerd naar welk gebied het het dichtst nadert.

Deze simulatie definieert zes vaste supportintenties, elk met een klein handgebouwd trefwoordenwoordenboek en een vooraf berekende 2D-centroïdepositie. Het typen van een bericht tokeniseert het, scoort trefwoordoverlap tegen elke intentie, en plaatst je bericht op het gelijkenis-gewogen gemiddelde van de zes centroïden — een echte, werkende nearest-centroid-classifier, alleen samengeperst tot een woordenschat klein genoeg om te zien. Bekijk hoe het punt naar zijn positie vliegt, verbind het met een lijn naar de winnende intentie, en controleer de live gelijkenisstaafdiagram en het routeringslog. Zet "dubbelzinnige modus" aan om te zien wat er gebeurt als een bericht niet duidelijk bij één categorie hoort.

Veelgestelde vragen

Wat is een intentieclassifier en waarom gebruiken supportchatbots er een?

Een intentieclassifier is een model dat een stuk vrije tekst leest en toewijst aan een van een vaste set categorieën — "intenties" — zoals het volgen van een bestelling of het resetten van een wachtwoord. Supportchatbots gebruiken er een als allereerste stap in een gesprek: voordat er enig antwoord kan worden gegenereerd, moet het systeem beslissen welke van een paar dozijn mogelijke workflows de klant eigenlijk wil. Routeren naar de verkeerde intentie betekent dat de bot volledig de verkeerde vraag beantwoordt, dus deze classificatiestap wordt behandeld als een harde poort vóór elk antwoord.

Hoe zet deze simulatie tekst om in een 2D-positie?

Elke intentie heeft een klein handgebouwd woordenboek met trefwoorden en gewichten, bijvoorbeeld "volg" en "pakket" scoren hoog voor de intentie "Bestelling volgen". Je bericht wordt getokeniseerd in woorden, en elk token wordt vergeleken met het woordenboek van elke intentie (inclusief eenvoudige voorvoegselmatching zodat "belast" nog steeds matcht met "belasting"). Dit levert een ruwe gelijkenisscore per intentie op, die wordt genormaliseerd tot een kansachtige verdeling. De 2D-positie van het punt is dan het gewogen gemiddelde van de zes vaste intentiecentroïden, gewogen met die genormaliseerde scores — zo landt een bericht dat hoog scoort op één intentie precies boven op dat cluster, terwijl een dubbelzinnig bericht ergens ertussenin landt.

Hoe zou een echt systeem tekst inbedden in plaats van trefwoordmatching?

Productiesystemen coderen zelden handmatig trefwoordlijsten. Klassieke aanpakken gebruiken TF-IDF-vectoren over een grote woordenschat gecombineerd met een lineaire classifier of nearest-centroid-regel, in wezen een hoogdimensionale versie van wat deze simulatie doet. Moderne systemen gebruiken transformer-zinsinbeddingen (modellen zoals BERT of sentence-transformers) die een hele zin afbeelden op een dichte vector van 384–1536 getallen, getraind zodat semantisch vergelijkbare zinnen dicht bij elkaar landen, zelfs zonder gedeelde woorden — zo komen "mijn pakket is niet aangekomen" en "waar is mijn bestelling" dicht bij elkaar terecht ondanks bijna geen gedeelde woordenschat. Deze simulatie perst dat idee samen tot 2 dimensies en een piepkleine trefwoordlijst zodat de geometrie zichtbaar blijft.

Wat betekent "confidence" hier en wat gebeurt er als die laag is?

Confidence is de genormaliseerde gelijkenisscore van de winnende intentie — als "Bestelling volgen" 0,72 scoort en elke andere intentie de resterende 0,28 deelt, is de router redelijk zeker. Als de hoogste score laag is (ruwweg onder 0,4 in deze simulatie) betekent dit meestal dat het bericht trefwoorden van twee of meer intenties bevat, of van geen van de bekende intenties. Echte systemen gaan om met lage confidence door terug te vallen op een verduidelijkende vraag ("Bedoelde u het volgen van een bestelling, of een retour?") of door direct te routeren naar een menselijke medewerker in plaats van te gokken en een verkeerd antwoord te geven.

Waarom levert dubbelzinnige modus routering met lage confidence op?

Dubbelzinnige modus bouwt voorbeeldberichten die bewust trefwoorden van twee verschillende intenties mengen, bijvoorbeeld door volg- en factureringstaal in één zin te combineren. Omdat de gelijkenisscore ongeveer gelijk verdeeld wordt tussen de twee matchende intenties, daalt de genormaliseerde confidence van de "winnaar" sterk en wordt het punt naar een positie tussen de twee clusters getrokken in plaats van bovenop een van beide te landen. Dit weerspiegelt echte supporttickets, waarin klanten vaak een probleem beschrijven dat twee categorieën overspant, zoals "mijn terugbetaling werd teruggeboekt naar de verkeerde kaart".

Waarom onthoudt deze simulatie geen eerdere berichten?

Elk bericht wordt hier onafhankelijk geclassificeerd, zonder geheugen van wat eerder gezegd is — precies zoals een single-turn-intentieclassifier. Echte conversatiesystemen houden dialoogstatus bij over meerdere beurten: als een gebruiker "volg mijn bestelling" zegt en daarna "annuleer het toch maar", kan een toestandsloze classifier het tweede bericht verkeerd routeren omdat "annuleer het" op zichzelf dubbelzinnig is. Productiechatbots lossen dit op door recente gespreksbeurten in de inbeddingstap te voeren of door een expliciete slot-filling-dialoogstatus bij te houden, wat aanzienlijk complexer is dan de single-message-lookup die hier getoond wordt.

Wat is nearest-centroid-classificatie en hoe verschilt het van k-NN?

Nearest-centroid-classificatie vertegenwoordigt elke klasse door één samenvattend punt (de centroïde, of het gemiddelde, van de voorbeelden van die klasse) en wijst een nieuw punt toe aan welke centroïde het dichtst is. k-Nearest Neighbours vergelijkt in plaats daarvan een nieuw punt met elk individueel trainingsvoorbeeld en neemt een meerderheidsstem onder de k dichtstbijzijnde. Nearest-centroid is sneller en eenvoudiger — precies één afstandsvergelijking per klasse — maar gaat ervan uit dat elke klasse één compacte, min of meer convexe klont vormt; k-NN kan klassen met onregelmatige of multimodale vormen aan, ten koste van het opslaan en doorzoeken van de hele trainingsset.

Kunnen twee intenties in een echte implementatie ooit overlappende trefwoordenschat hebben?

Ja, en het is een van de moeilijkste onderdelen van het ontwerpen van een intentietaxonomie. Woorden zoals "kaart" of "account" komen zowel voor bij facturering, wachtwoordreset als fraudegerelateerde intenties. Echte systemen verminderen deze overlap door te trainen op duizenden gelabelde echte klantberichten in plaats van handgeschreven trefwoordlijsten, waardoor het model leert welke combinaties van woorden — niet losse woorden — daadwerkelijk diagnostisch zijn. Teams bekijken ook regelmatig "verwarringsparen" (intenties die het model vaak door elkaar haalt) en voegen ze samen, voegen meer contrasterende trainingsvoorbeelden toe, of splitsen ze in fijnere subintenties.

⚙ Onder de motorkap

Typ een supportbericht en bekijk hoe het in real time wordt ingebed in 2D-ruimte en gerouteerd naar het dichtstbijzijnde intentiecluster.

Three.jsWebGLAIMachine Learning

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)