Was ich erreichen will, ist, einen Bot zu erstellen, der auf ein festes Set an vordefinierten Fragen mit sinnvollen Antworten reagieren kann. Und dabei – zumindest ansatzweise – menschlich wirkt.
Gestartet habe ich diesen Selbstversuch mit API.ai. Der Chatbot Technologie, die letzten Herbst von Google aufgekauft wurde, um im technologischen Rüstkampf mit facebook und deren Konkurrenzprodukt Wit.ai gleichzuziehen. Die beiden Plattformen sind vom Reifegrad recht vergleichbar, sind beide noch in der Beta-Phase – und das merkt man auch. Aber dazu später mehr!
Überraschenderweise ist der Einstieg mit API.ai wirklich extrem einfach. Innerhalb von Minuten kann ich einen Bot erstellen und mit ihm Konversation führen, ohne eine einzige Zeile Code zu schreiben. Das Web Interface ist sehr intuitiv und ich kann damit die Bot Engine füttern. Auch die Lernkurve beim Trainieren des Bots isst sehr kurz. Das ist ein sehr großer Vorteil!
Apropos: Trainieren
Grob gesagt gibt es zwei Wege, der AI das Denken beizubringen:
Die Methode aus dem Lehrbuch ist, eine AI Engine mit Millionen an Beispielen zu füttern und darauf zu warten, dass sie Muster findet und daraus lernt. Auf diese Weise kann man einer AI Schach beibringen oder lernen, Gesichter in Bildern zu erkennen. Das Problem dabei: wenn ich von Millionen Beispielen spreche, meine ich eigentlich Millarden. Es dauert EXTREM lange, einer AI auch nur einen bisschen Sprachverständnis beizubringen. Im Grunde ist es, wie jemandem Deutsch nur über Zuhören von Unterhaltungen beizubringen. Nach einiger Zeit wird er einfache Konversationen verstehen können. Aber bis er selbst korrekte Sätze konstruieren kann, dauert es verdammt lange.
Die zweite Methode ist, dem Bot Regeln beizubringen. Zum Beispiel kann ich ihm lernen, auf die Frage „Wie ist das Wetter?“ zu antworten. So kommt man schnell zu den ersten Resultaten. Und für eine einfach AI Anwendung ist das vielleicht auch in Ordnung. Aber Sprache ist so komplex, dass es nie möglich sein wird, alle Variationen einer Frage abzubilden. Zum Beispiel wird einen einfachen Bot schon die Frage „Wie ist das Wetter in München?“ ins Schleudern bringen.
Um schneller zu besseren Resultaten zu kommen, gibt es bei API.ai das sogenannte „Training“. Hier bekommt man eine Historie aus allen Anfragen, die dem Bot jemals gestellt wurden. Und kann daraus auf sehr einfache Weise Regeln erstellen, um dem Bot mehr beizubringen. Eine smarte Kombination der ersten und zweiten Methode also. Gut gemacht!
Wie Dialoge funktionieren
Trotzdem gelangt man sehr bald zu der Einsicht, dass eine Kommunikation, die auf Frage und Antwort basiert, nicht den Regeln menschlicher Kommunikation entspricht.
- 1. Frage: „Wie ist das Wetter heute?“
- Antwort: „Das Wetter ist sonnig!“
- 2. Frage: „Wie ist das Wetter morgen?“
- Antwort: „Das Wetter ist sonnig!“
-
Um Konversationen mehr Tiefe zu verleihen und mit Aktionen zu verknüpfen setzt API.ai auf „Entities“.
„Entities“ sind sozusagen Variablen, die der Bot vom Nutzer erfahren möchte. So kann man dem Bot zum Beispiel beibringen, nach dem Ort und dem Zeitpunkt zu fragen, wenn der Nutzer diese Informationen noch nicht bereitgestellt hat.
Im besten Fall fragt ein Nutzer „Wie ist das Wetter morgen in München?“. Fragt er nur „Wie ist das Wetter morgen?“ kontert der Bot mit einer Gegenfrage: „An welchem Ort?„. So ist es möglich, Konversationen zu schreiben, die aus Fragen und Gegenfragen bestehen. Hat der Bot dann alle Informationen erfahren, die er benötigt, kann er eine Aktion ausführen. In unserem Fall meldet er die Wettervorhersage für den entsprechenden Ort und Zeitpunkt zurück.
Das ist schonmal ein großer Pluspunkt. Trotzdem: ein menschlicher Dialog hat irgendwie mehr Tiefe und Variation. Schon die einfachsten, menschlich wirkenden Dialoge abzubilden, stellt ein fast unüberwindliches Hindernis dar. Ich habe diesen Selbstversuch mit der Idee gestartet, von mir vorgeschriebene Dialoge über die Software abzubilden. Irgendwann resigniere ich und entwickle einen Dialog auf den Möglichkeiten, die mir der Bot bietet. Das habe ich mir anders vorgestellt!
Ein wichtiges Feature für mich ist Zeit
Wie ich oben schon erwähnt habe, ist die Lernkurve der Bot Engine sehr kurz. Es ist sehr unkomplizert, mit dem Bot zu starten und ihm etwas beizubringen. Aber um ihm einen höheren Level beizubringen, gehört schon Einiges dazu.
Und was kann der Bot?
Der größte Zeitfresser ist meiner Meinung nach die Reichweite des Bots zu erhöhen. Hier liegt auch ein echtes Problem: Ich weiß nicht, was ein möglicher Nutzer meinen Bot fragen wird. Also muss ich ihm verschiedene Dialoge beibringen – sehr viele verschiedene. In API.ai geht das über sogenannte „Intents“.
„Intents“ sind grobe Cluster, die den Typ der Anfrage definieren. In unserem Fall oben wäre der „Intent“ das Wetter. Was aber, wenn ein Nutzer den Bot nach einer Wegbeschreibung fragt. Oder nach einem Rezept…. Hier sind wir auch schon beim grundlegenden Problem angelangt: man wird dem Bot NIEMALS alles beibringen können, was ein Mensch kann. Bestenfalls kann man ihn trainieren, dass er Frage und Antwort zu einem bestimmten Thema stehen kann. Und bei Fragen, die er nicht kennt oder zuordnen kann, höflich antwortet: „Das habe ich leider nicht verstanden„. Moment mal, das kennen wir doch irgendwoher: Siri
Spracherkennung: 1 mit *
Ich konzentriere mich bei meinen Ausführungen sehr auf die frustrierenden Erfahrungen und es scheint, als hätte das Tool nichts Geniales. Aber versteht mich nicht falsch: es ist wahnsinnig faszinierend! Nach einer kurzen Zeit vergesse ich, dass ich mit einem Bot spreche, einem Bot, dem ich gerade beibringe, wie der sich zu verhalten hat.
Was die Bot Engine an Wissen fehlt, macht sie mit Spracherkennung wett!
Die Spracherkennung ist weit genug fortgeschritten, um die Bedeutung von Sätzen wie „Wie ist das Wetter in München“ oder „Ich bin in München und will wissen, wie das Wetter ist“ oder die weit unhöflichere Variante „Verdammt!! Mich interessiert das Wetter! Sonst nichts!!“ Es funktioniert einfach!
Und jetzt das Killer-Features schlechthin: die Spracherkennung
Keine Ahnung, wie ich dieses Features bis zum Ende zurückhalten konnte: die API.ai Bot Engine versteht Spracheingaben! Alles, was ich dem Bot während immer wiederkehrenden Konversationen beigebracht habe, kann auch über Sprache ausgelöst werden. Keine zusätzlichen Hooks oder Drittanbieter Plugins. Ich war beeindruckt! Sprachgesteuerter Bot (momentan zwar noch mit einem etwas eigenartigem Englischen Akzent) – Out of the box: eine glatte 1 mit Stern!
Kommen wir zum Fazit
Alles in Allem ist API.ai eine zukunftsweisende Bot Engine. De facto gibt es – abgesehen von Wit.ai – momentan keine Out-of-the Box Lösung für Chatbots. Die beiden sind sozusagen konkurrenzlos. Mit Google im Rücken hat das Produkt ein finanzstarkes Rückgrat. Und man darf davon ausgehen, dass gerade in Hinblick auf die oben genannte Methode 1 der Algorithmus zukünftig mit jeder Menge Daten gefüttert werden wird. Soviel zur Zukunft!
Die Realität hingegen ist ernüchternd: Ich kann mir ehrlich gesagt keinen einzigen Use Case vorstellen, bei dem die Technologie bei einem realen Projekt eingesetzt werden würde. Zu limitiert sind die Möglichkeiten, zu flach sind die Dialoge. Zu wenig anpassbar ist der Algorithmus und zu unwissend ist der Bot: Heute – aber das wird sich sehr wahrscheinlich bald ändern!