Chatbot zum Mitnehmen, mit extra smart

Chatbots gibt es mittlerweile wie Sand am Meer. Neben Alexa, Siri und Co. sind viele von ihnen aber dumm wie Bohnenstroh und reagieren nur auf einfache Schlüsselwörter um eine vorgegebene Antwort auszuspucken. Eine hervorragende Möglichkeit, den aktuellen Hype rund um Machine Learning (ML) und NLP/NLU (Natural Language Processing/Understanding) zu nutzen und seinen starren Chatbot – mit Hilfe von Microsoft Bot Framework, Botkit, Botmaster, API.AI, Wit.ai, Watson, LUIS und wie sie alle heißen – in die Moderne zu bringen.

Chatbot/Robot by Alex Knight

Bot-Frameworks statt Handarbeit

Einen eigenen Chatbot zu entwickeln, ist heutzutage einfach wie noch nie. Frameworks wie Microsofts Bot Framework, Botkit oder Botmaster erlauben es, schnell erste Erfolge erzielen zu können. Ihre Stärke liegt vor allem darin, unterschiedliche Chat-Dienste ohne großen Aufwand anbinden zu können und so den eigenen Bot einer breiten Masse verfügbar zu machen. Facebook Messenger und Slack sind hierbei prominentere Beispiele für solche Plattformen, die von jedem der genannten Frameworks unterstützt werden. Neben simplen Textnachrichten gibt es auch die Möglichkeit, strukturierten Inhalt und Medien-Dateien zu versenden.
Weiters ermöglichen sie Dialoge nach dem Schema Bot hört „XY“, Bot antwortet „ABC“. Ihr Funktionsumfang ist aber damit nicht erschöpft, da es meist unzählige Möglichkeiten der Erweiterung gibt.

Ein Bot wird smart

Die zuvor genannten Frameworks eignen sich hervorragend zum Erstellen eines Chatbots, allerdings fehlt es ihnen an Intelligenz, was das Analysieren von Text und Sprache angeht, da sie meist nur auf bestimmte Wörter oder Muster reagieren können.
Einen Schritt weiter gehen Natural Language Processing / Natural Language Understanding (NLP / NLU) Dienste wie API.AI (Google), Wit.ai (Facebook), LUIS (Microsoft) und Watson Conversation (IBM). Diese bieten neben einer REST-Schnittstelle auch meist SDKs für z.B. Node.js an, oder wurden von den Bot-Framework Herstellern beziehungsweise deren Community bereits in diese integriert.

In erster Linie dienen sie dazu, Text in natürlicher Sprache in eine zu verarbeitbare Form zu bringen. Dazu werden Sinn/Intention und Parameter herausgefiltert. Damit diese „Maschinen“ die erforderlichen Informationen liefern können, werden sie mit Beispieldaten gefüttert. Für einen simplen Pizzadienst genügt es zum Beispiel, der entsprechenden Plattform mitzuteilen, dass „Ich nehme eine Pizza Tonno“ die Intention „pizza-bestellung“ beinhaltet und „Pizza Tonno“ die ausgewählte Pizza darstellt. Mittels weiterer Beispiele à la „Eine Pizza Tonno, bitte“ kann man diesen Vorgang weiter verfeinern und so das maschinelle Lernen vorantreiben.

NLP / NLU für Chatbots in Wit.ai

NLP / NLU für Chatbots in Wit.ai © Wit.ai

Der Vorteil solcher Dienste liegt klar auf der Hand: Benutzer können natürlicher mit Bots kommunizieren, da diese die übliche Sprache besser verstehen.

Das schweizer Taschenmesser

Während LUIS und Wit.ai rein für die Erkennung der Absichten und Parameter im Text zuständig sind, bieten API.AI und Watson Conversation die Möglichkeit, Antworten zu formulieren und Dialoge zu basteln. Wit.ai hat mit „Stories“ auch ein solches Feature im Angebot, dieses wird jedoch mit Februar 2018 deaktiviert, da es meist für FAQ-Bots genutzt wurde und deren Content besser außerhalb von Wit.ai gelagert werden solle.

Für kleine Bots und Anfänger hat dieses Feature auf API.AI aber einen weiteren Vorteil, denn Google hat hier direkt Integrationen für mehrere Chat-Plattformen implementiert, die man per Mausklick aktivieren kann – die Programmierung eines eigenen Bots und Wartung eines Servers entfallen so ganz. Mittels so genannter Webhooks hat man dennoch die Möglichkeit, dynamische Inhalte relativ einfach einzubinden, ohne dafür gleich einen ganzen Bot per Hand schreiben zu müssen.

Ein Konzept muss her…

Wie man sieht, gibt es genügend Tools und Möglichkeiten, wie man sich seinen eigenen intelligenten Chatbot auf einfache Weise zusammenbauen kann. Zuallererst muss man allerdings die Anforderungen an den Bot abstecken. Soll er ohne großartige Programmierkenntnisse erstellbar sein? Welche Chat-Plattformen will ich unterstützen? Auf welche Anfragen soll der Bot reagieren? In welcher Form soll geantwortet werden? Muss ich mir Sessions und den Context eines Gesprächs merken? Will ich weitere Schnittstellen (z.B. API eines Shopsystems) einbinden?

Erst wenn man die Konzeption hinter sich hat, macht es Sinn, die Technologien auszuwählen. Ansonsten läuft man in Gefahr, von ihnen limitiert, oder von ihrer Komplexität erschlagen zu werden. Also, an die Arbeit und gutes Gelingen! 😉

Photo © by Alex Knight