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 sie Fragen beantworten oder Vorschläge machen. Die neueste Entwicklung in diesem Bereich sind Sprachassistenten wie Amazon Echo mit Alexa oder Google Home; sie bringen diese Funktion losgelöst von einem Computer oder Smartphone mit einem eigenen Gerät in unsere Wohnzimmer.

Aber auch in Smartphones sind Sprachassistenten mittlerweile Standard: Siri bei Apple und Google Assistant bei Android-Geräten. Wir können 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 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

Gehen wir das mal schrittweise durch.

Beispiel: Wir fragen den Bot etwas.

Schritt 1 – Von der Sprache zu Intention

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

„Wie spät ist es?“

Zunächst wird aus dem 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?“ „Wie viel Uhr haben wir?“,

DANN schaue in der eingebauten Uhr nach der Zeit.

 Das Problem bei der Sprachverarbeitung besteht darin, dass es sehr viele verschiedene 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 weitere 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!“ 

Also 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 schaue die Uhrzeit nach.

 Oder etwas maschinengerechter formuliert:

WENN Wörter, die mit Uhrzeit zu tun haben: „zeit, uhrzeit, uhr, spät, stunde, minute“, zusammen mit Fragewörtern: „wie, welche, was, wie viel, weißt du“ oder Forderungen wie „sag, zeig“ auftreten,

DANN suche die Uhrzeit heraus.

Diese Art von Sprachverarbeitung ist schon intelligenter, als einfach zu versuchen, alle Möglichkeiten, nach der Zeit zu fragen, abzuspeichern und sie dann zu durchsuchen. Diese zweite, regelbasierte Methode ermöglicht es unter anderem, 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!

Schritt 2 – Von der Intention zur Auftragsausführung

Es gibt einfache Aufträge wie die Zeitansage oder 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 Wetterdatenbank, bestimmte Daten heraussuchen. Es können aber auch Aktivitäten in der Welt außerhalb der Maschinen in Gang gesetzt werden, z.B. eine Warenbestellung 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 weiteren Bedingungen, 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 heraussuchen 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 weitverbreiteter Ansatz dafür ist 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 ist das eine riesige Tabelle oder Datenbank.

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.

 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?“

 Die Frage wird nach denselben Regeln zum Wetterframe: Wetter(Berlin, 23.05.2020)

Ergebnis:

Allgemein: „wolkig, Temperatur: 18 Grad“
Niederschlag: „Kein Niederschlag“

Schritt 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(Berlin, 23.05.2020) hat die Maschine folgende Daten vorliegen:

WANN: „23.05.2020“
WO: „Berlin“
WETTER: „wolkig
TEMPERATUR: „18 Grad“
NIEDERSCHLAG: „Kein 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-Jobs 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 soeben beschriebenen kann der Prozess in den geschilderten drei Schritten in einem Rutsch durchlaufen. Wirklich interessant (und intelligent) wird es erst, wenn ein komplexer Auftrag in einer Abfolge von Dialogschritten interaktiv mit der Maschine ausgeführt wird.

 Wie funktioniert das?
Der Trick besteht darin, 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. ein Auftrag ist erst vollständig, wenn für alle variablen Elemente der zugehörige Wert klar ist. Bis dahin ist die Maschine so programmiert, dass das, was oben in Stufe 1 sofort beantwortet wird, durch einen Dialog ausgefüllt wird. Das heißt, die Maschine fragt so lange nach, bis alle Leerstellen gefüllt sind. 

 Also, diese komplizierten Prozesse in einem Bot haben mich aber jetzt richtig hungrig gemacht! Ich glaube, ich bestelle mir jetzt mal einen Burger. 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 Burger-Bestellung wird erst dann ausgeführt, wenn für jede Variable ein Wert angegeben wurde.

Mensch: „Hallo, ich möchte einen Burger bestellen.“

Bot: „Gerne, welches Patty hätten Sie gerne, wir haben Veggy, Rind und Hühnchen.“

Mensch: „Rind, bitte.“

Bot: „Gerne, wollen sie den Burger medium oder durchgebraten?

Mensch: Durchgebraten!

Bot: „OK, was für ein Brötchen möchten Sie? Sie können wählen zwischen Brioche und Vollkorn, oder kein Brötchen.“

Mensch: „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 durchgebraten und Brioche-Brötchen bestellt, das Ganze mit Extra-Zwiebeln und Extra-Speck. Dazu Pommes mit Ketchup, ist das richtig?“

Mensch: „Ja.“

Bot: „Das macht dann 12,40 Euro inklusive Lieferung durch unseren Lieferbot, wollen Sie verbindlich bestellen?“

Mensch: „Ja.“

Und ab geht’s. 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 liefern.

Nachteile:
Ähnlich wie bei einem Expertensystem müssen alle Regeln von Hand in den Bot einprogrammiert werden.

Wirtschaftliche Bedeutung
Bei Bestell-Hotlines und in Callcentern kann Personal eingespart werden, wenn man die einfachen 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 Smalltalk 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 zu recherchieren, stattdessen verlassen sie sich auf die Antwort der Maschinen. Da Bots auch in der Freizeit und als Problemlöser eingesetzt werden, kann sich eine gewisse emotionale Abhängigkeit von den Bots einstellen. Schau dir dazu den Film „HER“ an.

Es könnte auch sein, dass sich durch Monopolisierung von Bot-Diensten durch ein paar wenige große Anbieter auf Dauer eine Abhängigkeit von diesen Anbietern einstellt, weil man keine Alternativen mehr findet, um an die Informationen oder Services zu kommen. Heute beherrschen Amazon mit Alexa, Google mit Assistant und Apple mit Siri den Markt der Sprachassistenten. Das heißt, 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. Damit wissen diese Firmen, dass ich z.B. sehr viel Fastfood esse.

Mehr dazu im nächsten Kapitel.

Weiterführende Medien:

Zum Ausprobieren: Installiere dir 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  

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