Een chatbot voor Antwerpen
Nadat ik zelf veel gelezen had over chatbots wou ik, als stagiair bij Edge.be, zelf ook graag een chatbot maken. Hiervoor werd overwogen welke processen binnen het bedrijf verbeterd kunnen worden met behulp van een chatbot. Edge.be is een B2B web development en e-marketing bedrijf. Een idee dat naar boven kwam was om het maken van offertes volledig te automatiseren en door een chatbot te laten afhandelen. Dit is echter een zeer complex proces waar vaak menselijke intelligentie en inschattingsvermogen voor nodig is, ook kan een goede dosis empathie en menselijk contact zeer voordelig zijn tijdens dit proces. We zijn dan ook afgestapt van dit idee en hebben verder gezocht naar een leuke toepassing voor de chatbot.
Een duidelijk afgebakend en gesloten domein was nodig om mijn eerste succesvolle implementatie te doen van een chatbot. Hiervoor kwamen we met het idee om een chatbot voor Antwerpen te maken in samenwerking met Apen.be. Apen.be is een website dat werd ontwikkeld en wordt onderhouden door Edge.be. Op de website kunnen bezoekers nieuws, events, horecazaken, en andere info terugvinden in verband met de stad Antwerpen. Apen.be heeft hierdoor een zeer grote aggregatie van data over de stad en werkt aan methodes om de populairste locaties in de stad te vinden. Als MVP (minimum viable product) werd besloten om een chatbot te implementeren die de populairste locaties van de dag weergeeft aan de gebruiker als hij hierom vraagt. De chatbot wordt dus ingezet als een information retrieval tool, met mogelijke uitbreidingen in de toekomst waaronder: het tonen van welke films in bioscopen in Antwerpen spelen, weergeven van nieuws over de stad en live updates sturen, het ophalen van events en reminders sturen indien een gebruiker interesse toont in deze events, gebruikers informeren over nieuwe zaken/winkels in de stad, exclusieve promoties sturen naar gebruikers, … In theorie zijn de mogelijke uitbreidingen van deze chatbot maar zo beperkt als de visie van de maker.
Eens er werd vastgelegd waarvoor de chatbot gebruikt zal worden kon de implementatie van de chatbot van start gaan, hiervoor gebruikte ik de verschillende richtinggevende principes die werden vastgelegd in de volgende blogpost:
1. Doelstellingen
- De chatbot moet zeer informeel zijn en chatten met een Antwerps accent om de conversatie interessanter en vooral extra entertainend te maken.
- De chatbot moet gebruikers doorverwijzen naar Apen.be indien ze meer info willen over een locatie of indien ze meer opties te zien willen krijgen.
- Gebruikers moeten makkelijk informatie kunnen ophalen met behulp van de chatbot.
De chatbot moest uitgaan van een AI-first aanpak, dit wil zeggen dat er geen menselijke interventie is en het systeem volledig draait op Artificiële Intelligentie. Dit komt omdat er geen fulltime support mogelijk is. Het is dus belangrijk om de juiste verwachtingen te stellen bij de gebruikers door duidelijk te maken waarvoor de chatbot werd ontwikkeld en wat hij kan. Daarom werd de chatbot worden opgesplitst in twee delen, enerzijds zorgt een rule based systeem ervoor dat de gebruikers volledig begeleid kunnen worden tijdens de conversationele flow en een idee krijgen van de capaciteiten van het systeem. Anderzijds krijgen gebruikers de optie krijgen een vraag te stellen aan de chatbot waarop ze direct een antwoord voorgeschoteld krijgen, hiervoor kon geopteerd worden om gebruik te maken van keywords of om gebruik te maken van artificiële intelligentie en NLP (natural language processing) technieken. De tweede optie krijgt hier de voorkeur omdat deze methode veel krachtiger is dan de eerste.
2. Gebruikersonderzoek
Gebruikers zullen vooral met de chatbot communiceren om informatie te krijgen over de populairste plekken in Antwerpen, daarom werd geopteerd voor een luchtige en informele conversationele flow.
Dankzij de expertise van Edge.be werd er eerder al een publiek opgebouwd op Facebook van meer dan 33000 gebruikers, dit doelpubliek moet met de chatbot bereikt worden. De chatbot werd dus gemaakt voor het Facebook Messenger platform.
3. Design van de conversationele flow
Voor de ontwikkeling van een chatbot voor Facebook Messenger werd er geopteerd om Chatfuel te gebruiken. Chatfuel is een chatbot platform dat werd ontwikkeld om snel volledig werkende en feature-rich chatbots te implementeren voor Facebook Messenger. Het gebruik van chatbot platformen is sterk aangeraden bij de ontwikkeling van een chatbot omdat deze platformen vaak al zeer ver staan in de ontwikkeling van AI en NLP-technologiën. Ook laten vele van deze platformen toe om een bestaande chatbot snel en gemakkelijk te activeren voor verschillende messaging platformen.
Chatfuel laat toe om gebruik te maken van alle chatelementen die Facebook Messenger ondersteund. Tijdens het ontwerp van de conversationele flow werd er dus rekening gehouden met elementen zoals tekstelementen, buttons, emojis, carousels en afbeeldingen. Video en audio fragmenten zaten niet in de bestaande knowledge base, van deze elementen wordt dus ook geen gebruik gemaakt.
Zoals al werd beschreven in de doelstellingen moeten gebruikers zowel begeleid worden in de conversationele flow zodat ze inzichten krijgen over de capaciteiten en functionaliteiten van de chatbot als vrijheid krijgen zodat de gebruikers vragen kunnen stellen aan de chatbot om zo heel snel de nodige informatie terug te krijgen. Hiervoor werd een onderscheid gemaakt in het design van de chatbot zelf omdat deze twee doelstellingen zeer verschillend zijn. Enerzijds wordt een rule based systeem geïmplementeerd, anderzijds wordt een conversationeel systeem geïmplementeerd.
3.1. Rule based systeem
In het rule based systeem wordt de gebruiker begeleidt door buttons en andere visuele elementen zodat hij de chatbot beter kan leren kennen. Dit deel van een chatbot is van groot belang omdat de gebruiker anders geen idee heeft waarvoor hij de chatbot zal kunnen gebruiken. Voor de ontwikkeling van dit systeem werd gebruik gemaakt van een bestaande grafische userinterface, deze werd omgezet naar een conversationele userinterface met buttons en tekstelementen.
In de CUI (conversational userinterface) kan de gebruiker hulp vragen om op deze manier meer informatie te krijgen in verband met de chatbot, er wordt uitgelegd waartoe de chatbot in staat is en hoe je hem kan gebruiken. Een gebruiker kan vervolgens naar het menu gaan waar hij 6 verschillende categorieën te zien krijgt waarvoor data beschikbaar is. Deze kunnen verder worden onderverdeeld in 47 verschillende subcategorieën. Eens de gebruiker één van deze subcategorieën selecteerde krijgt hij de populairste elementen te zien uit deze categorie. De gebruiker kan vervolgens naar de site gaan om meer informatie op te vragen over een specifieke zaak of kan worden doorverwezen naar de webapplicatie waarop de chatbot werd gebaseerd. In onderstaande figuur werd de flow geschetst in een boomstructuur.
Alle categorieën en subcategorieën worden weergegeven en opgebouwd met behulp van API-calls. De chatbot registreert wat de gebruiker wilt te zien krijgen en geeft vervolgens de nodige elementen weer. De populariteit van de zaken wordt bepaald met behulp van een algoritme dat rekening houdt met de populariteit van het element op Apen.be, Facebook en Foursquare.
3.2. Conversationeel systeem
Het conversationeel systeem zorgt ervoor dat gebruikers een vraag kunnen stellen aan de chatbot en een antwoord terugkrijgen indien de opgevraagde data in de knowledge base van de chatbot zit. Zo zal de gebruiker elk element in de boomstructuur kunnen aanroepen met behulp van natuurlijke taal. Zo kan hij extra hulp vragen, het menu openen, de verschillende categorieën aanroepen, en de populairste zaken op dit moment opvragen.
Om conversaties te ondersteunen werd geopteerd om te werken met Artificiële Intelligentie en NLP-technieken omdat deze zeer krachtig zijn. Hiervoor werd initieel gekozen om gebruik te maken van het ingebouwde AI-systeem van Chatfuel zelf. Al snel werd vastgesteld dat deze technologie op het platform van Chatfuel nog niet zo ver stond voor andere talen die niet Engels zijn. Zo gebeurde het vaak dat de chatbot informatie teruggaf van een foute categorie als het systeem niet getraind werd om een specifieke zin te interpreteren. Initieel werd de chatbot meer getraind, door meer mogelijke inputs in te geven, in de hoop dat de AI slimmer zou worden, deze aanpak werkte echter niet. Daarom moest op zoek worden gegaan naar een andere oplossing.
De eerste optie waaraan werd gedacht was om een volledig nieuw platform te gebruiken dat al verder stond in het verwerken van de Nederlandse taal. Hiervoor zouden de opgestelde doelstellingen, het gebruikersonderzoek en het initiële design van de chatbot verbruikt kunnen worden, maar zou de implementatie van nul moeten beginnen, hier zou dus veel tijd in kruipen.
Een tweede optie die slechts later werd ontdekt, maar waarvoor uiteindelijk werd gekozen was om het rule based gedeelte van de bot af te laten handelen door het Chatfuel platform en een integratie te maken met API.ai. API.ai is een chatbot platform, aangedreven door Google, dat veel meer controle geeft over de interpretatie van taal. Al snel werd vastgesteld dat deze AI-technologie ook nog niet ver staat voor de Nederlandse taal, maar dankzij het hoge niveau van controle kon rond de limiteringen van dit platform gewerkt worden. In plaats van te rekenen op de ingebouwde NLP-technologie van het platform werd het systeem geconfigureerd om te werken met keywords. Als het systeem een keyword detecteert wordt de juiste informatie weergegeven.