KI - Technik und Anwendungen

12 Chat-Bots und Sprachassistenten

Was ist das?

Auf immer mehr Websites und in vielen Messengerkanälen finden wir sogenannte ChatBots, das sind autonome Computerprogramme, die auf sprachliche Eingaben reagieren, z.B. indem diese Fragen beantworten oder Vorschläge machen. Die neueste Entwicklung in diesem Bereich sind Sprachassistenten wie Amazon Echo mit Alexa, oder Google Home, die diese Funktion losgelöst von einem Computer oder Smartphone als eigenes Gerät in die Wohnzimmer bringen. Aber auch in Smartphones sind Sprachassistenten mittlerweile Standard: Siri bei Apple und Google Assistant bei Android Geräten. Wir können einfach in normaler Alltagssprache Fragen und Aufgaben formulieren, wie z.B.:

„Wie spät ist es?“
„Wie wird das Wetter morgen in Berlin?“
„Bestelle mir eine Pizza!“

Wie funktioniert das?

Sprachbots funktionieren alle sehr ähnlich. Sie nutzen Sie eine ganze Reihe von KI-Techniken, um alle Stufen von der Auftragserteilung bis zur Rückmeldung des Ergebnisses auszuführen.

Spracherkennung Analysiert gesprochene oder geschriebene Sprache
Intentionserkennung Findet heraus, was der Auftrag ist
Auftragsausführung Führt die Aufgabe aus und wertet das Ergebnis aus
Sprachgenerierung Erzeugung einer Sprachantwort

  

Beispiel:

Gehen wir das mal schrittweise durch.

1 Von der Sprache zu Intention

Der Einfachheit halber schauen wir uns mal einen geschriebenen Auftrag an. Wie gesprochene Sprache erkannt wird, schauen wir uns im Anschluss an. Ich tippe also in das Eingabefeld des Sprachbots ein: 

„Wie spät ist es?“

Zunächst wird aus der Text mit den Methoden der Maschinellen Sprachverarbeitung (engl. Natural Language Processing) herausdestilliert, WAS der Nutzer eigentlich will. Dieses Verfahren nennt man Intentionserkennung. Dabei kann man mit regelbasierten Ansätzen vorgehen. Hierbei werden bestimmte Kombinationen von Wörtern und Satzzeichen oder sogar ganze Sätze abgespeichert und mit einer bestimmten Intention verknüpft:

WENN die Nutzer*in eingibt:

„Wie spät ist es?“
„Wie ist die Uhrzeit?“
„Wieviel Uhr haben wir?“   

DANN schau in der eingebauten Uhr nach der Zeit

Das Problem bei der Sprachverarbeitung ist es, dass es sehr viele Arten gibt, dasselbe zu sagen oder zu fragen. Natürlich könnte man versuchen, ALLE Möglichkeiten abzuspeichern, das wäre aber sehr ineffizient und funktioniert dann am Ende vielleicht doch nicht, weil es immer noch eine neue Art gibt, dasselbe zu fragen. Z.B: 

„Hey du blöder Bot, glotz mal auf dein Zeiteisen und sag an, was die Stunde geschlagen hat!“ 

Daher versucht man die Regeln flexibler zu gestalten. Etwa so: 

WENN der Nutzer etwas fragt oder fordert und diese Frage/Forderung mit der Uhrzeit zu tun hat,
DANN schau die Uhrzeit nach

Oder etwas Bot-gerechter: 

Wenn Wörter, die mit Uhrzeit zutun haben: „zeit, uhrzeit, uhr, spät, stunde, minute“
zusammen mit Fragemarkern: „wie, welche, was, wieviel, weißt du,?“
oder Forderungen wie: sag, zeig,!  auftreten,
dann such die Uhrzeit raus.

Diese Art von Sprachverarbeitung ist schon intelligenter als einfach zu versuchen, alle Möglichkeiten nach der Zeit zu fragen abzuspeichern und dann zu durchsuchen. Diese zweite, regelbasierte Methode ermöglicht es unter anderen folgende Anfragen zu verarbeiten: 

Wie spät ist es? – Sag die Zeit! – Was ist die aktuelle Uhrzeit? – Ey du Flachpfeife, weißt du die Zeit? – Zeig uns mal, dass du die Zeit ansagen kannst! – Uhrzeit bitte!  – Was sagt die Uhr? Und natürlich auch: Hey du blöder Bot, glotz mal auf dein Zeiteisen und sag an, was die Stunde geschlagen hat! 

2 Von der Intention zur Auftragsausführung

Es gibt ganz einfache Aufträge, wie die Zeitansage oder sehr komplexe Aufgaben, wie zum Beispiel das Buchen eines Fluges oder die Bestellung eines Abendessens.  In den meisten Fällen ist das eine Informationsabfrage. D.h. der Bot soll aus einer Datenquelle, z.B. einer Wettterdatenbank bestimmte Daten heraussuchen. Es können aber auch Ereignisse in der Welt außerhalb der Maschinen ausgelöst werden. Z.B. eine Waren-Bestellung oder eine Terminvereinbarung. Für diese Fälle ist es wichtig, dass die Maschine genau das macht, was man beauftragt, sonst könnte es zu kostspieligen Fehlern kommen. („Wollen Sie wirklich 10 Plätze im Flug LH 229 von Frankfurt nach Johannesburg buchen?“)

Das heißt, bevor ein Auftrag ausgeführt werden kann, muss die Maschine prüfen, ob alle Bedingungen erfüllt sind, um den Auftrag sinnvoll ausführen zu können. Bei der Zeitanfrage braucht man keine weitere Bedingungen mehr, die Zeit ist (zumindest für die aktuelle Zeitzone) eindeutig. Häufig kommt es aber vor, dass noch weitere Bedingungen erfüllt werden müssen, damit ein Auftrag sinnvoll ausgeführt werden kann. Zum Beispiel bei der Frage nach dem Wetter an einem bestimmten Ort oder zu einer bestimmten Zeit. Dann muss die Maschine entweder Standardannahmen machen oder eventuell zurückfragen, bevor sie die erwünschten Wetterdaten raussuchen kann. Hier funktioniert der Sprachbot wie ein kleines regelbasiertes Expertensystem. Es gibt eine Wissensbasis mit den Informationen und eine Inferenzmaschine, die die Regeln ausführt. Die Regeln sind hier oft etwas komplizierter, da sie unterschiedliche Aufgaben erledigen sollen.

Ein weit verbreiteter Ansatz dafür die Verwendung von Frames, oder mehrwertigen Intentionen. Der Wetter-Frame sieht z.B. so aus:

Regel 1: 

Wenn es keine Angaben zu WO oder WANN gibt, dann setze WO auf den aktuellen Ort und WANN auf HEUTE

Regel 2:

 Wetter (WO, WANN) -> Schaue in der Wetterdatenbank nach für den Ort WO und die Zeit WANN.

Wetter(WO, WANN)  ist der Wetterframe. Frames sind immer nach dem Schema: AKTION(Bedingung1, Bedingung2, usw) aufgebaut, und werden erst dann ausgeführt, wenn alle Bedingungen erfüllt sind. 

Die dazugehörige Wissensbasis sieht genauso wie in einem Expertensystem aus. Meistens ins das eine riesige Tabelle: 

WO WANN WETTER TEMPERATUR NIEDERSCHLAG
Hamburg 22.05.2020 Heiter bis wolkig 20 Grad Schauer am Abend
23.05.2020 Heiter 22 Grad Keinen Niederschlag
Berlin 22.05.2020 Heiter bis wolkig 18 Grad Keinen Niederschlag
23.05.2020 Wolkig 18 Grad Keinen Niederschlag

Die Frage: „Wie wird das Wetter?“  führt nach der Regel 1 dazu, dass WO auf den aktuellen Ort, z.B. Hamburg gesetzt wird (Unser Smartphone weiß ja, wo wir sind.) und WANN wird auf HEUTE also z.B. „22.05.2020“ gesetzt.

Nun kann Regel 2 in Kraft treten: 

Wetter(Hamburg, 22.05.2020)  führt dazu dass der Bot in der Wetterdatenbank, das Wetter für den 22.5.2020 in Hamburg heraussucht. z.b. 

  Allgemein: „heiter bis wolkig,
Temperatur: „20 Grad“
  Niederschlag: “Schauer am Abend“

Das Intelligente an dieser Zerlegung der Aufgabe in Regeln ist, dass man dadurch einen sehr flexiblen Mechanismus erhält. Denn falls man morgen nach Berlin reisen wollte, kann der Bot auch das Reisewetter heraussuchen.   

„Wie wird das Wetter morgen in Berlin?“ 

Wird nach denselben Regeln:

Wetter(23.5.2020, Berlin) ->
  Allgemein: „wolkig,
Temperatur: „18 Grad“
Niederschlag: “Keinen Niederschlag“

3 Von der Auftragsausführung zur Antwortgenerierung

Genauso wie die Maschine die menschliche Sprache bei der Eingabe in ausführbare Aufträge übersetzen muss, sollte am Ende der Auftragsausführung eine Rückmeldung in menschlicher Sprache erfolgen, um mitzuteilen, was das Ergebnis des Auftrags ist.

Nach der Ausführung des Wetterframe

Wetter(23.5.2020, Berlin) ->   

Hat die Maschine folgende Daten vorliegen:

  WANN: „23.05.2020“
WO: „Berlin“
WETTER: „wolkig,
  TEMPERATUR: „18 Grad“
  NIEDERSCHLAG: “keinen Niederschlag“

Das einfach so als Tabelle auszugeben, wäre aber sehr roboterhaft und wenig menschlich. Also müssen diese Tabellendaten noch in menschliche Sprache übersetzt werden.

Auch hier kann man wieder mit Frames arbeiten. Bei der Sprachgenerierung kann man sich diese Frames wie einen Lückentext vorstellen, in den der Bot die Lücken mit den aktuellen Werten füllt. 

Die Antwort auf eine Wetteranfrage lautet also immer ähnlich, etwa:

„WANN ist das Wetter in WO: WETTER. Die Temperatur beträgt TEMPERATUR. Es gibt NIEDERSCHLAG“

Dieser Frame funktioniert wie ein Serienbrief in Word. Der Bot setzt in die Leerstellen (hier die großgeschriebenen VARIABLEN) die aktuellen Werte ein und erzeugt dann die ‚humane’ Sprachantwort:

„Am 23.05.2020 ist das Wetter in Berlin wolkig. Die Temperatur beträgt 18 Grad. Es gibt keinen Niederschlag.“

Typische Bot-Aufgaben bestehen also prinzipiell aus drei Schritten:

1 – Übersetzung der Sprachanfrage in Maschinenauftrag mithilfe von Frames
2 – Ausführung des Maschinenauftrags
3 – Rückübersetzung des Ergebnisse des Maschinenauftrags in menschliche Sprache. 

Komplexe Aufträge und Dialoge

Bei so einfachen Aufträgen wie den oben beschriebenen kann der Prozess in den beschriebenen drei Schritten in einem Rutsch durchlaufen. Wirklich interessant (und intelligent)  wird es erst, wenn ein komplexer Auftrag durch eine Abfolge von Dialogschritten interaktiv mit der Maschine zusammengestellt wird. Wie funktioniert das?

Der Trick ist, dass der Frame für eine komplexe Aufgabe wesentlich komplexer ist und die Maschine zusammen mit dem Nutzer daran arbeitet, alle Leerstellen auszufüllen. D.h. die Bestellung ist erst vollständig, wenn für alle variablen Elemente der zugehörige Wert entschieden ist. Bis dahin ist die Maschine so programmiert, dass das, was oben in Stufe 1 sofort beantwortet wird durch einen Dialog gefüllt wird. Das heißt die Maschine fragt solange nach, bis alle Leerstellen gefüllt sind.  (Der Einfachheit halber lassen wir mal weg, wohin der Burger geliefert werden soll, sondern konzentrieren uns auf den Bestellvorgang des Burgers). Der Burger-Frame sieht so aus: 

Burger (
  PATTY(Veggy, Rind, Hühnchen),
  GEBRATEN(medium,durch),
  BRÖTCHEN[kein, Brioche, Vollkorn],
  EXTRAS[ Käse, Bacon, Spiegelei, Chili],
  BEILAGEN[Pommes, Süßkartoffeln],
  SAUCE[Mayo, Ketchup, Chilli]
)

Jede Burgerbestellung wird erst dann ausgefüllt wird, wenn für jede Variable ein Wert angegeben wurde. 

User: „Hallo, ich möchte einen Burger bestellen.“
Bot: – „Gerne, welches Patty hätten Sie gerne, wir haben Veggy, Rind und Hühnchen“
User: „Rind bitte“
Bot:  OK, was für ein Brötchen möchten Sie? Sie können wählen zwischen Brioche und Vollkorn, oder kein Brötchen“
User: „Brioche“

usw. 

Wenn der Frame gefüllt ist, dann wiederholt der Bot noch einmal zur Sicherheit alle Elemente und den daraus errechneten Preis.

Bot:„Sie haben einen Burger mit Rinderpatty und Brioche-Brötchen bestellt, das Ganze mit Extra-Zwiebeln und Extra-Speck. Dazu Pommes mit Ketchup, ist das richtig?“
User: „Ja“
Bot: „Das macht dann 12,40 inklusive Lieferung durch unseren Lieferbot, wollen Sie verbindlich bestellen?“
User: „Ja“

Und ab gehts.

Der Trick bei diesen komplexen Frames besteht darin, dass nur sehr wenige Antwortmöglichkeiten auf jeder Stufe bestehen. Dadurch wird es für den Bot einfacher zu erkennen, was der Nutzer eingegeben hat. Kleine Schreibfehler oder undeutliche Aussprache sind dann nicht so schlimm, weil der Bot die Möglichkeit auswählen kann, die der Äußerung des Nutzers am nächsten kommt. 

Gesprochene Sprache

Aber wie funktioniert das denn nun mit gesprochener Sprache? Auch das ist nicht schwer. Die gesprochenen Wörter werden mit einem Mikrofon aufgenommen und in digitale Daten verwandelt.  

Am Ende dieses Prozesses steht eine Abfolge von Zahlen, die der Lautstärke und Tonhöhe des Gesprochenen entsprechen. Ein Sprach-Modell wandelt diese Zahlenfolgen in die entsprechenden Wörter um und diese werden dann an den Bot weitergegeben, so als ob wir diese eingetippt hätten. Dabei kommen heutzutage vielfach Neuronale Netze zur Anwendung, denn die sind besonders gut, darin auch Abweichungen in der Intonation, Lautstärke und Sprechgeschwindigkeit zuzulassen und trotzdem noch gute Leistungen bei der Erkennung zu bringen.

(Schaubild erstellen!!!)

Vorteile/Nachteile

Vorteile:

  • Bots können komplexe Aufgaben sprachgesteuert erledigen,
  • Fehlende Informationellen können im Dialog geklärt werden

– Bei klaren Aufgaben können Bots immer ein Ergebnis abliefern 

Nachteile: 

– Ähnlich wie ein Expertensystem müssen alle Regel von Hand in den Bot einprogrammiert werden.

Wirtschaftliche Bedeutung

Bei Bestell-Hotlines und in Callcentern kann Personal eingespart werden, wenn man die simplen Aufgaben von Bots erledigen lässt und Menschen nur in kritischen Fällen zuschaltet, z.B. wenn der Bot nicht mehr weiter weiß. Dadurch können Menschen auch von den immer gleichen öden Anfragen entlastet werden und sich auf die interessanteren Aufgaben konzentrieren.  Durch schnellere Bearbeitung  und bessere Ergebnisse können höhere Kundenzufriedenheit und vielleicht sogar mehr Umsatz erreicht werden. 

Gesellschaftliche Wirkung

Die mechanische Natur von Bots zwingt die Nutzer*innen sich an das Skript zu halten. Abweichungen oder Small-Talk sind nicht möglich, weil der Bot dann eventuell nicht mehr weiß, was er machen soll. Die Kommunikation von Firmen und Kunden kann dadurch qualitativ leiden. Aber auch auf der Nutzerseite könnte sich eine gewisse Müdigkeit einstellen. Bei Infobots wie Siri und Alexa könnten die Nutzer auf Dauer zu träge werden, schwierige Sachverhalte selber nachzurecherchieren, stattdessen verlassen sie sich auf die Antwort der Maschinen. Da Bots auch in der Freizeit und als Problemlöser eingesetzt werden, kann sich ein gewisse emotionale Abhängigkeit von den Bots einstellen. Vergleiche hierzu den Film „HER“.  Es könnte auch sein, dass sich durch Monopolisierung von Bot-Diensten durch ein paar wenige große Anbieter auf Dauer eine Abhängigkeit und Ausgeliefertheit an diese Anbieter einstellt, weil man keine Alternativen mehr findet, an die Informationen oder Services zu kommen. Heute beherrschen Amazon mit Alexa ,Google mit Assistant und Apple mit Siri den Markt der Sprachassistenten. D.h. egal welche Dienstleistung ich anfrage, alle meine Daten laufen über diese drei Firmen. Diese können daraus ein Persönlichkeitsprofil erstellen, das ich weder einsehen noch löschen kann. Dann wissen diese Firmen, dass ich z.B. sehr viel Fastfood esse. Mehr dazu im nächsten Kapitel. 

Weiterführende Medien:

Zum Ausprobieren: Installier dir mal einen Bot wie Replika (Smartphone App) und spiele damit ein wenig herum. Beobachte, wie der Bot auf deine Eingaben reagiert, und versuche die Muster dahinter zu ergründen. 

Ausprobieren mit Teachable Machine

https://teachablemachine.withgoogle.com/train/audio