Een dialoog maken met slot filling

 

Inleiding: 

Het is handig om te werken met slot filling zodat jouw chatbot automatisch vraagt naar missende informatie bij de chatgebruiker. Maar hoe maak je eigenlijk zo'n dialoog? Lees hieronder hoe je een dialoog met slot filling aanmaakt in jouw chatbot. 

 


Hoe maak je een dialoog met slot filling?

Laten we samen een simpel dialoog maken met slot filling. We gebruiken de flow "pizza bestellen" als voorbeeld. De structuur van een slot filling dialoog is als volgt:

  • Stap 1: Start met een user turn om de algemene intent van de chatgebruiker op te vragen.
  • Stap 2: Voeg daarna een bot turn toe om naar de entity values te vragen.
  • Stap 3: Na de bot turn voeg je een user turn toe om een entity value te geven.
  • Stap 4: Belangrijk is om de utterances te trainen om de gegeven entity values te herkennen.
  • Stap 5: Uiteindelijk voeg je een bot reply toe om de gegeven entity value te herkennen en voeg ook een bot reply toe voor wanneer de gegeven entity value niet overeenkomt.

1.png


Stap 1: Maak een intent

Voeg een user turn toe met een intent "bestellen.pizza" waarmee de chatgebruiker een pizza kan bestellen. Selecteer geen entity. Vul een primary utterance in en ongeveer 10 andere utterances om jouw intent goed te trainen. Sla vervolgens jouw intent op.

2.png


Stap 2: Vraag naar de entity value

Voeg vervolgens een bot turn toe aan de intent die je net hebt gemaakt. In de turn editor selecteer je Question om een vraag te maken.

In Question text voeg je de vraag toe die je door de chatbot wil laten stellen. In dit geval voegen we een vraag toe die vraagt naar de pizza topping. Bij Entity selecteer je hier de entity die betrekking heeft op de vraag die je stelt: pizza.topping. Klik uiteindelijk op save om jouw bot turn op te slaan.

3.png


Stap 3: Leg het antwoord van de chatgebruiker vast

Voeg aan jouw bot turn een user turn toe. In het veld Enter intent maak je een nieuw intent aan met "toevoegen.topping" om de chatgebruiker te laten kiezen uit de verschillende pizza toppings.

Bij het veld add entity selecteer je de entity die je in je vorige turn hebt aangemaakt: pizza.topping. Dit doe je zodat de chatbot het antwoord van de chatgebruiker kan matchen met de values van pizza.topping.

Bij utterances voeg je 5 tot 10 utterances toe die de values van de entitypizza.topping bevatten (inclusief een paar synoniemen). Vervolgens klik je op "opslaan" om de user turn op te slaan. 

4.png


Stap 4: Markeer de entities in de utterances

Voordat we verder kunnen gaan naar de volgende stap, is het belangrijk om aan jouw chatbot te laten weten wat de entities zijn in de utterances van de chatbotgebruiker. Dit doen we door het markeren van de entities in de utterances.

  • Stap 1: Open nogmaals de intent toevoegen.topping
  • Stap 2: Voor elk utterance van de chatgebruiker markeer je in die utterance de entity value zodat het blauw gemarkeerd wordt. In ons voorbeeld markeren we de toppings die op een pizza kunnen.
  • Stap 3: In het veld enter value selecteer je uit de lijst bij welke entity value de topping bij hoort.
  • Stap 4: Sla de intent op door op de blauwe knop save te drukken.

    Je ziet nu dat de vraag van de bot gevolgd wordt door een user turn en een no.response turn:

6.png

5.png


Stap 5: Bevestig de keuze van de chatgebruiker

Wanneer de chatgebruiker een topping, entity value, kiest die de chatbot herkent als een van de toppings waar uit gekozen kan worden, dan is de volgende stap dat deze keuze wordt bevestigd.

  • Stap 1: Voeg een bot replytoe aan de intent toevoegen.topping
  • Stap 2: Voeg een tekst toe die de keuze van de chatgebruiker bevestigd.
    Om de entity value die de chatgebruiker herkent automatisch mee te laten nemen in het antwoord van de chatbot, voegen we in het antwoord de naam van de entity toe tussen {{ }} --> {{toevoegen.topping}}. In de live chatbot komt hier dan automatisch de ingevoerde entity values te staan die de chatgebruiker heeft gekozen. Vergeet de chatbot niet op te slaan!

7.png

8.png


Stap 6: Voeg een no.response turn toe 

Wanneer een chatgebruiker de topping kip kiest, dan zal de chatbot deze entity value niet herkennen omdat we die niet hebben opgenomen in de entity pizza.topping. We kunnen dit de chatgebruiker laten weten en diegene een andere suggesties aanbieden.

  • Stap 1: Voeg een bot reply toe aan de no.response turn.
  • Stap 2: Laat in de tekst weten dat de keuze van de chatgebruiker niet beschikbaar is en vraag diegene om iets anders te kiezen

9.png

Uiteindelijk komt de chatbot er als volgt uit te zien en vanaf hier kun je de chatbot verder bouwen:

10.png