Auf ein Wort: Wie funktionieren Chatbots

titelbild-chatbots-teil-1

In dieser Artikelreihe soll ein Überblick über die grundlegende Funktionsweise von Chatbots gegeben und eine mögliche Implementation gezeigt werden. Mit diesem einführenden Artikel werden zunächst die Begrifflichkeiten geklärt und die modularen Bausteine eines Chatbots näher beleuchtet. Zudem werden mögliche Anwendungsszenarien genannt und anhand von Beispielen mögliche Interaktionen zwischen Endnutzer und Chatbot exemplarisch dargestellt. Weiterhin werden einige proprietäre und Open-Source Frameworks und Plattformen zur Erstellung von Chatbots kurz vorgestellt.

Was ist ein Chatbot?

Ein Chatbot ist eine Software, welche die Möglichkeit bietet, eine Konversation in natürlicher menschlicher Sprache zu simulieren. Das heißt, bisherige User Interfaces (UI) können mit einer weiteren Schnittstelle ergänzt werden. Insbesondere für nicht-technikaffine Nutzer bedeutet dies ein enormes Potential zur Komplexitätsreduktion in der Bedienbarkeit von Anwendungen, da Sprache eine der zentralen Schnittstellen zwischenmenschlicher Kommunikation und somit jedem vertraut ist.

Zudem öffnen sich gänzlich neue Möglichkeiten zur Nutzerinteraktion. Zum Beispiel erhalten Question-Answering-Systeme (Q&A) oder Suchmaschinen hiermit die Möglichkeit, viel spezifischer auf die Anfrage zu reagieren und dem Nutzer sogar kontextuelle Fragen zur eindeutigen Bestimmung der Nutzeranfrage (Disambiguierung) zu stellen. So können fehlende Informationen aktiv erfragt und eine präzise Antwort gegeben werden. Das heißt, es wird eine bidirektionale Kommunikation zwischen Menschen und Maschine möglich, die einer zwischenmenschlichen Konversation sehr nahe kommt.

Turing-Test

Das ultimative Gütemaß eines Chatbots stellt der sogenannte Turing-Test dar. Der Versuchsaufbau sieht dabei ein digitales Gespräch mit einem Probanden und einem Menschen sowie dem Chatbot vor. Kann der Proband nach seinen Gesprächen nicht sagen, bei welchem Gesprächspartner es sich um eine Maschine handelt, gilt der Test als bestanden. Da das Gespräch in jede Richtung gelenkt werden könnte, spricht man hier auch von einem „offenen Kompetenzbereich" des Chatbots. Demgegenüber steht ein „geschlossener Kompetenzbereich", also eine spezifische Domäne, welche dem Chatbot bekannt ist. Zur Erstellung der Antworten (Responses) stehen zwei grundsätzliche Mechanismen zur Verfügung. Zum einen werden erkannte Schlüsselwörter zuvor hinterlegten Informationen zugeordnet. Dieser Ansatz wird Response Retrieval genannt und erfolgt meist mit regelbasierten Systemen. Zum anderen kommen generative Mechanismen zum Einsatz, welche in die Kategorie Response Generation fallen. Hierzu werden Methoden des Machine Learning verwendet. Die daraus entstehenden Modelle sind jedoch ebenfalls an eine Domäne gebunden. Das bedeutet, die Verhaltensweise der Modelle bei einer Anwendung außerhalb dieser Domäne ist nicht vorhersehbar und damit unzuverlässig. Eine theoretische Möglichkeit zur Generalisierung in jedwede Domäne stellt eine „artifical general intelligence", kurz AGI, dar. Trotz großer Fortschritte in den letzten Jahren auf diesem Gebiet scheint diese allwissende KI jedoch noch weit außerhalb der jetzigen Möglichkeiten zu liegen.
Abbildung 1: Komplexität eines allwissenden Chatbots

Arten von Chatbots

Die Arten von Chatbots können je nach Betrachtungsweise in unterschiedlicher Weise aufgeteilt werden. Häufig findet man eine sehr grobe Aufteilung in Transactional und Conversational Chatbots.

Der Transactional Chatbot besitzt vordefinierte Routinen, die der Nutzer durch Anfragen auslösen kann und durch die ihn der Chatbot führt. Bei Anfragen, die der Chatbot keiner vordefinierten Routine zuweisen kann, ist der Chatbot somit nicht in der Lage, eine sinnvolle Antwort zu geben.

Ein Conversational Chatbot hingegen hat das Ziel, für jeden beliebigen Nutzerinput, auch Utterance genannt, eine sinnvolle Antwort generieren zu können. Jedoch fehlt diesem Chatbot das Wissen über geschäftsrelevante Abläufe und er kann über die Konversation hinaus keine Transaktionen durchführen.

Um einen praxisrelevanten Chatbot zu implementieren, ist folglich meist eine Kombination aus diesen beiden Typen nötig.

Eine sinnvollere Art der Aufteilung ergibt sich aus dem Ziel der konkreten Anwendungsfälle. Diese lassen sich ebenfalls in zwei grobe Kategorien unterteilen. Zum einen Information-Retrieval, also das Abfragen von Fakten und Informationen aus verschiedenen Quellen. Ein Beispiel hierfür wäre das bereits erwähnte Q&A-System, welches Zugang zu unternehmensinternen Informationen hat und diese dem Nutzer zugänglich macht. Solche Systeme finden häufig Anwendung als vorgeschaltete Methode für Support-Anfragen, um Kosten für menschliche Support-Mitarbeiter einzusparen.

Die zweite Kategorie ist das Ausführen vordefinierter Transactions und Skills. Dieser Typ Chatbot dient häufig als Personal Assistant oder als Natural-language user interface (LUI/NLUI) für bestehende Applikationen. Ein bekanntes Beispiel ist Amazons Alexa. Hier können mittels Sprachbefehlen parametrisierte Routinen gestartet und ausgeführt werden, wobei diese auch komplexe Mehrfachdurchläufe (Multi-Turn) mit kontextuellen Folgeaufforderungen enthalten können. Ein Beispiel hierfür wäre das Bestellen bei einem Online-Lieferservice und der genauen Zusammenstellung der gewünschten Mahlzeit, welche durch den Chatbot in mehreren Schritten erfragt wird.

Eine weitere Möglichkeit zur Aufteilung von Chatbot-Typen ergibt sich aus der technischen Implementation. Hier wird meist zwischen linguistischen beziehungsweise regelbasierten Chatbots und AI-basierten Chatbots unterschieden. In der Praxis wird jedoch häufig ein hybrider Ansatz gewählt, je nachdem welche Ressourcen zur Verfügung stehen und wie hoch die Anforderungen sind. Im Abschnitt zur Chatbot-Architektur soll hier ein grober Überblick über die Architektur eines Chatbots gegeben werden und an welchen Stellen Wahlmöglichkeiten zwischen den modularen Baublöcken bestehen.

Beispielanwendung

Abbildung 2: Vereinfachte Chatbot-Interaktion

Zum besseren Verständnis zur Funktionsweise eines Chatbots soll folgendes Beispiel anhand von Alexa dienen:
Der Nutzer möchte ein Musikstück abspielen und verwendet dazu den Sprachaufruf: „Alexa – Spiele Yellow Submarine von den Beatles".

Dabei werden der Utterance die nötigen Informationen entnommen. Zum einen die daraus erkannte Funktion, auch Intent genannt, und die nötigen Parameter, auch Entities genannt. Wird Alexa also mit dem obigen Sprachaufruf aktiviert, wird intern der Intent „Musik abspielen" und die Entities „Yellow Submarine" – Musiktitel und „Beatles" – Interpret erkannt. Dies geschieht mithilfe von Natural Language Processing (NLP), beziehungsweise einer Teildisziplin, dem Natural Language Understanding (NLU).

Die erkannten Entities und der Intent werden nun an den sogenannten Dialogue Manager weitergeleitet, welcher anhand dieser und eventuell vorangegangener Interaktionen (Context) eine Zuordnung zu bekannten Funktionen vornimmt. Wenn beispielsweise beim Sprachaufruf nicht deutlich gesprochen wurde oder mehrere Musiktitel vorliegen, müsste aus mehreren Responses gewählt werden. Der Dialogue Manager entscheidet an dieser Stelle, welche Response ausgewählt werden soll, beziehungsweise ob Nachfragen zur Disambiguierung nötig sind.

Die gewählte Response liegt zunächst nur in strukturierter Form vor und muss nun in natürliche Sprache überführt werden. Hierzu wird ein weiteres Teilgebiet des NLP, namens Natural Language Generation (NLG) verwendet. Die natürlichsprachliche Response wird nun an den Nutzer zurückgegeben, hier beispielsweise die Meldung: „Spiele nun Yellow Submarine von den Beatles", gefolgt vom Abspielen des Musikstücks.

Architektur

In der folgenden interaktiven Graphik ist eine generelle Chatbot-Architektur in unterschiedlichen Granularitäten abgebildet. Auf der untersten Ebene werden zudem einige der möglichen Methoden in Implementations- und Datenaufwand aufgeschlüsselt.

Abbildung 3: Interaktives Architektur-Diagramm

Frameworks

Mit den Durchbrüchen in der NLP-Community der letzten Jahre ist auch eine rasant anwachsende Anzahl an Anbietern für Chatbot-Frameworks und -Plattformen zu verzeichnen. So hat zumindest jede der großen Tech-Firmen, wie Google, Amazon, Microsoft und Co., eine eigene Plattform zur Erstellung von Chatbots. Besonders interessant: Microsofts Bot Framework setzt sich aus vielen akquirierten Open-Source-Frameworks zusammen, welche durch weitere proprietäre Services und Modelle von Microsoft ergänzt wurden. Die Open-Source-Frameworks sind jedoch weiterhin als solche verfügbar und können unabhängig von den Microsoft-Diensten verwendet werden. Grundsätzlich bieten alle großen Anbieter auch recht umfangreiche „Free Tiers" an. Hier muss jedoch klar sein, dass in diesen Fällen mit den eigenen Daten bezahlt wird. Insbesondere bei Frameworks wie Facebooks Wit.ai oder dem von Google akquirierten DialogFlowl (ehemals API.ai), welche komplett kostenlos sind. Allerdings ist deren Quellcode nicht einsehbar. Für Fälle in denen mit sensiblen Daten gearbeitet wird, ist dies sicherlich keine Option.

Allerdings existieren auch einige Open-Source-Alternativen, die sich in ihrem Funktionsumfang durchaus mit den Giganten messen können. Dabei büßt man jedoch etwas an Komfort bei der Erstellung des Bots ein und muss selbst Hand anlegen, anstatt sich bequem über eine graphische Nutzeroberfläche den Chatbot zusammenklicken zu können. Besonders zu erwähnen sind hier Frameworks wie Rasa, DeepPavlov und Botpress. Diese verfügen über State-of-the-Art Modelle und große Communities, die die Entwicklung stetig vorantreiben. Zudem bieten diese Frameworks auch zusätzliche Funktionen in bezahlten Varianten, welche für mehr Komfort sorgen und so die Lücke zu proprietären Enterprise-Anbietern schließen.

Der Markt ist insgesamt bereits sehr saturiert und es existieren noch viele weitere Chatbot-Anbieter, welche teilweise auch domänenspezifische Lösungen anbieten. Deshalb können an dieser Stelle nicht alle genannt werden. Eine genauere Recherche für den jeweils eigenen Anwendungsfall lohnt sich auf jeden Fall.

Zusammenfassung

In diesem Blogartikel wurde die grundlegende Funktionsweise von Chatbots näher beleuchtet und gängige Begrifflichkeiten im Chatbot-Umfeld erklärt. Die vereinfachten Beispiele zeigen mögliche Interaktionen zwischen Endnutzer und Chatbot. Die modularen Baublöcke der Chatbot-Architektur wurden näher beleuchtet und einige Frameworks vorgestellt.

Im nächsten Blogartikel wird ein genauerer Blick auf eine mögliche Implementation eines Chatbots mithilfe des Rasa-Frameworks geworfen.

Quellen

By accepting you will be accessing a service provided by a third-party external to https://blog.ordix.de/