DevelopmentHaal het maximale uit LUIS

Zo haal je het maximale uit LUIS

Chatbots spelen een steeds grotere rol in de online dienstverlening van bedrijven. De technologische ontwikkelingen staan niet stil en stellen bots steeds beter in staat om echte gesprekken te voeren met website bezoekers.

Bots zijn steeds beter in staat om echte gesprekken te voeren met websitebezoekers. Dit is te danken aan de technologische ontwikkelingen die niet stil staan. Ook Microsoft heeft steeds nieuwere, uitgebreidere tools en frameworks ontwikkeld om zelf bots mee te bouwen.

Hiermee is de chatbot niet langer een duur en beperkt speeltje voor de grote partijen, maar ook iets wat in het handbereik ligt van de MKB-bedrijven. Daarom is nu het perfecte moment om erin te springen (zie vorige blog).

Het vermogen om gewoon taalgebruik te begrijpen bepaalt voor een groot deel of een chatbot slaagt of faalt. Omdat je als software developer niet steeds het wiel opnieuw wil uitvinden hebben de slimme koppen van Microsoft hier een perfecte service geschreven genaamd Language Understanding Intelligence Service (LUIS, uitgesproken als Louis). Het is een service die ik graag gebruik binnen onze chatbotprojecten, maar zoals met de meeste services, kost het even om door te hebben waar de valkuilen zitten. Om je de moeite te besparen doe ik de keukendeuren open en geef ik een aantal van mijn tips en ervaringen prijs, zodat jij niet tegen dezelfde problemen aanloopt als ik.

Zorgvuldig voorbeelden kiezen

LUIS draait op voorbeeldzinnen, zonder hen kan LUIS niet de intenties van bezoekers bepalen. De hamvraag is daarom ook niet of je voorbeeldzinnen moet geven, maar hoe je ze moet geven. De beste zijn zinnen die het minst op elkaar lijken maar nog steeds hetzelfde betekenen. Als wij bijvoorbeeld kijken naar de intentie parkeren dan zouden goede voorbeeldzinnen zijn:

  • Kan ik hier parkeren?
  • Is er een mogelijkheid om bij Delta-N te parkeren?
  • Bied jullie bedrijf ook plekken aan om mijn fiets te stallen.

Dit zijn goede zinnen omdat ze verschillen in lengte en woordkeuze. Door LUIS een breed scala aan voorbeelden te bieden, voorkom je dat het datamodel achter LUIS bevooroordeeld wordt en daarmee veel vaker een specifiek antwoord geeft.

Microsoft raadt aan om minimaal 15 voorbeeldzinnen te leveren per intentie. Om al die antwoorden zelf te bedenken, kan een lastige opgave zijn. Daarom is het handig om meerdere mensen hieraan te zitten. Daarnaast zal je zien dat iedereen toch weer met andere zinnen komt waar je zelf niet aan dacht.

Entiteiten gebruiken

De belangrijkste tools in je LUIS gereedschapskist zijn entiteiten. Een intentie is leuk op zichzelf maar biedt niet altijd genoeg informatie. Entiteiten zijn er om die extra informatie mee te kunnen geven, dan wel aan jouw systeem of aan LUIS.

Als wij kijken naar de zin “Bied jullie bedrijf ook plekken aan om mijn fiets te stallen?” dan kunnen wij los van de intentie om te parkeren ook zien dat de gebruiker met een fiets komt. Deze extra informatie kunnen wij markeren met entiteiten. Het zijn dus eigenlijk relevante elementen van een zin en deze entiteiten kunnen we voor verschillende dingen inzetten om LUIS te verbeteren.

LUIS entiteiten
Figuur 1: intentie parkeren met entiteiten parkeren en voertuig eraan gekoppeld

De makkelijkst mogelijke verbetering is simpelweg de entiteit koppelen aan de intentie. Door deze entiteit te koppelen aan een intentie, zeg tegen LUIS “hey, als jij iets ziet dat te maken heeft met A dan is dat intentie B”. In het voorbeeld van de intentie parkeren kunnen wij dus parkeerplek en voertuig als entiteiten toevoegen. Als iemand nu praat over auto’s of fietsen(voertuig) en parkeren of stallen (parkeerplek) dan vat LUIS de hint en kiest hij voor de intentie parkeren met een hoger percentage dan als hij dit zelf had moeten leren.

Sterk gelijkende intenties

Soms kom je in een situatie terecht waarin er twee intenties zijn die op elkaar lijken. Bijvoorbeeld, bereikbaarheid(digitaal) en bereikbaarheid(fysiek).  Als de digitale bereikbaarheid bedoeld wordt, zal het systeem een pagina moeten tonen met een e-mailadres en telefoonnummer. Gaat het om de fysieke bereikbaarheid, dan worden instructies over hoe je naar het kantoor zou kunnen komen verwacht. Voor LUIS zijn intenties die op elkaar lijken zeer verwarrend. In zo’n geval is het beter om deze twee intenties samen te voegen tot een intentie en een entiteit te gebruiken om in de code te bepalen wat exact de gebruiker wil. Of de gebruiker nu “Op welk nummer kan ik jullie bereiken” typt of “Wat is de makkelijkste manier om naar jullie toe te komen”, beide zinnen zouden voor LUIS onder de intentie bereikbaarheid vallen maar de woorden “bellen” of “nummer” die jij koppelt aan een entiteit telefoon zorgen dat jij weet dat de gebruiker het telefoonnummer wil weten.

Spelfouten als synoniemen

Het is belangrijk om op te letten dat je geen spelfouten maakt. Niemand is echter perfect en het kan best zijn dat de gebruiker spellingsfouten maakt in zijn zinnen. Dit kan opgelost worden met een spellingscheck zoals de Bing spell check api maar mocht je niet nog een service of api erbij willen betrekken dan kun je nog een trucje gebruiken. Het makkelijkste is om bijvoorbeeld voorbeeldzinnen met spellingsfouten toe voegen aan je intentie. Dit kan werken, maar een betere oplossing is om gebruik te maken van synoniemenlijsten. Synoniemen koppel je aan een entiteit en worden gebruikt door LUIS als een sleutelwoord lijst. Als LUIS een woord uit je lijst herkent, weet hij dat dit te maken heeft met de gekoppelde Intentie. Door spellingsfouten mee te nemen in je synoniemenlijst kan je zorgen dat LUIS niet het spoor bijster raakt als hij even geen ABN ontvangt.

LUIS synoniemenlijsten
Figuur 2 Een synoniemenlijst met veelvoorkomende spelfouten

LUIS bemeestert

In dit blog hebben wij een aantal tips met je gedeeld, over hoe wij het maximale halen uit LUIS. Wij hebben samen gekeken naar hoe wij entiteiten op verschillende manieren kunnen gebruiken. Met deze tips hopen wij dat jouw chatbot een stap dichter in de buurt gekomen is bij dat geweldige idee dat jij aan het verwezenlijken bent.

Mocht dit je geïnteresseerd hebben in chatbot technologie maar wil je liever dat de experts het voor je doen? Neem dan contact met ons op! Gezamenlijk kunnen wij uitzoeken een bot  de service van jouw bedrijf naar een hoger plan kan tillen.

Akash Aartsen – Software Developer

  • Wil jij ook dagelijks Mederne Applicaties bouwen? Bekijk vacatures!