Von Alexander Kölmel

Estimated reading time: 6 Minuten

Techblog

Chatbots und die Trainingshölle

Spätestens seit Alexa, Siri und Cortana gelten „Conversational UI“ oder „Chatbots“ als das nächste große Ding. Trotz dieser gefühlten Allgegenwärtigkeit zeigen Chatbots immer mal wieder überaschendes, gerne auch mal amüsierendes Verhalten. Siri ruft beispielsweise den Notruf, wenn man ihr „100 Prozent“ mitteilt, schreibt spiegelonline.de. Den Grund dafür kann niemand so recht nachvollziehen.  Wie sind diese Aussetzer…

Techblog

Spätestens seit Alexa, Siri und Cortana gelten „Conversational UI“ oder „Chatbots“ als das nächste große Ding. Trotz dieser gefühlten Allgegenwärtigkeit zeigen Chatbots immer mal wieder überaschendes, gerne auch mal amüsierendes Verhalten. Siri ruft beispielsweise den Notruf, wenn man ihr „100 Prozent“ mitteilt, schreibt spiegelonline.de. Den Grund dafür kann niemand so recht nachvollziehen. 

Wie sind diese Aussetzer zu erklären? Warum versteht ein Chatbot Menschen falsch? Ich möchte die Grundlagen für dieses Problem an nachvollziehbaren Beispielen beschreiben.

Das Herzstück: Natural Language Processing

Um zu verstehen, was ein Nutzer mit einer Nachricht bezweckt, bedient sich der Chatbot des „Natural Language Processing“ (NLP). Man kann das als Herzstück eines Bots verstehen. Erkennt ein Bot nicht, was der Nutzer möchte, so ist er wertlos.

Wenn Sie mit einen Chatbot sprechen, können folgende Szenarien die Verständigung erschweren:

  • Der Chatbot erkennt die Absicht des Nutzers nicht.
  • Der Chatbot erkennt die Absicht, aber nicht die mitgelieferten Daten.
  • Der Chatbot versteht den gesprochenen Text nicht.

Beispiele gefällig?

Der Chatbot erkennt die Absicht des Nutzers nicht

Um eine Absicht (oder auch „Intent“) zu erkennen, benötigt der Chatbot Trainingsdaten. Man stelle sich vor, der Nutzer möchte den Wetterbericht erfragen. Dann trainiere ich den Bot zum Beispiel mit den Trainingssätzen „Wie ist das Wetter morgen?“ oder „Muss ich einen Schirm mitnehmen?“. Ein so trainierter Bot wird nicht nur diese Sätze, sondern auch Variationen davon erkennen: „Wie wird morgen das Wetter?“ oder „Brauche ich heute einen Schirm?“. Je weiter sich die Variation von den Trainingsdaten entfernt, desto unsicherer wird der Bot jedoch und versteht den Intent im Zweifel nicht mehr.

Unabhängig von der Anzahl und Auswahl der Trainingsfälle bleibt NLP ein statistisches Verfahren, das per Definition keine 100-Prozentige Korrektheit sichern kann. Ein Bot wird also mit ziemlicher Sicherheit Fehlverhalten zeigen. Wir unterscheiden zwischen

  • „false positives“ – ein Bot erkennt einen Intent, obwohl der Nutzer eigentlich etwas anderes wollte. Ein Beispiel wäre, wenn der Bot die Frage des Nutzers „Welche Banken brauchen den europäischen Schutzschirm?“ mit: „Nein, es scheint heute die Sonne“ beantwortet; 

und

  • „false negatives“ – ein Bot ist überfragt, obwohl es eigentlich einen Intent gibt, der gepasst hätte. Möglicherweise versteht der Bot die Frage „Wann hat dieser ~!#*-Regen endlich ein Ende?“ nicht – und fragt nach, statt zu antworten “Am Donnerstag scheint wahrscheinlich die Sonne“.

Der Chatbot erkennt die Absicht, aber nicht die mitgelieferten Daten

Die meisten Sätze, die an einen Chatbot übergeben werden, enthalten Parameter – sog. „Entities“ –, die das Verhalten des Chatbots entsprechend beeinflussen. Im Satz „Gib mir Zugverbindungen von München nach Berlin“ sind diese Entities „München“ als Start der Verbindung, und „Berlin“ als Ziel der Verbindung.

Für dieses Beispiel kann man bereits vermuten, was schief gehen kann: Der Bot erkennt womöglich, dass der Nutzer eine Zugverbindung haben möchte, aber nicht, dass er bereits Start und Ziel konkretisiert hat. Typischerweise fragt der Chatbot in diesem Fall nach, was denn Start und Ziel der Reise sein soll – ärgerlich für die User Experience, wenn die Information bereits mitgeteilt wurde.

Der Chatbot versteht gesprochenen Text nicht

Wird statt geschriebenen Chatnachrichten Sprache verwendet, stellt das für den Bot eine weitere Komplexitätsebene dar. Er muss nun anhand der Sprachnachricht des Nutzers den Text ermitteln, bevor er sich mit der Intent- oder Entity-Erkennung beschäftigen kann. Undeutliche Sprache, Dialekte oder auch Sprach-Elemente wie ausländische Namen sind für dem Bot meist hohe Herausforderungen.

Wenn Sie diese Effekte live sehen möchten, können Sie mit relativ wenig Aufwand Ihren eigenen Chatbot entwickeln. Eine kostenlose Library mit vielen Funktionen ist z.B. Dialogflow. Das Aufsetzen ist einfach. Doch Vorsicht: Anschließend betreten Sie die Trainingshölle. 

Willkommen in der Trainigshölle

Einen Chatbot gut zu trainieren ist eine schwierige Aufgabe. Schnell hat man zu viel oder zu spezifisch trainiert. Folgende Ratschläge habe ich aus meinen Projekten abgeleitet. 

  • Akzeptieren Sie, dass der Bot Fehler machen wird, egal welche Anstrengungen Sie unternehmen. Definieren Sie für Fehler eine sinnvolle Fallback-Lösung, zum Beispiel eine Nachfrage über ein Detail der Nachricht.
  • Gehen Sie nach dem „Trial and Error“-Prinzip vor. Füttern Sie Ihren Bot mit ein paar Trainingsdaten und testen Sie das Verhalten. Sie werden schnell ein Gefühl für ein für Ihr Anliegen angemessenes Training bekommen, wenn Sie eigenständig ein paar Intents trainiert haben und die Auswirkung spüren.
  • Trainieren Sie kontinuierlich weiter, auch wenn der Chatbot implementiert ist. Die meisten Bot Engines zeigen an, welche Sätze die Endnutzer wirklich an den Chatbot geben. Verbessern Sie das Training, in dem Sie die Trainingsdaten um nicht erkannte Sätze die erweitern.

Schon bereit für den Enterprise-Einsatz?

Einen Chatbot aufsetzen ist mittlerweile gar nicht mehr so schwer. Komplexer wird es beim Training: Gute Trainingsdaten sind eine knappe Ressource. Erschwerend kommt hinzu: Es gibt erst wenige Best Practices, wie man Missverständnisse zwischen Mensch und Maschine auflöst, oder welche Fehler man von vorneherein vermeiden könnte. Das Thema ist dafür noch zu neu. Sie brauchen also Geduld, Zeit und viel Fingerspitzengefühl für ein Trial-and-Error-Vorgehen. Ein bisschen Glück schadet auch nicht.

Wenn Sie einen Chatbot einsetzen möchten, planen Sie also am besten Zeit zum Experimentieren und für Lernkurven ein. Immerhin: Das Thema entwickelt sich im Moment schnell. Schon bald können Sie möglicherweise schon auf Best Practises zurückgreifen, die Sie dann, dank Ihrer Erfahrung, schnell umsetzen.

Wer weiß: Vielleicht wird aus der Trainingshölle schnell ein Traningslager.


Über den Autor

Von Alexander Kölmel

Agile Consulting and Engineering 

Alexander Kölmel hat mehr als 10 Jahre Erfahrung in komplexen Softwareentwicklungs- und Beratungsprojekten und ist seit 2016 als IT-Architect bei MaibornWolff im Bereich „Agile Consulting and Engineering“ tätig. Er ist auf Software-Entwicklung und -Architektur im agilen Projektumfeld spezialisiert. Neben seiner Rolle als Software-Entwickler fördert Herr Kölmel in seinen Projekten die Selbstorganisation und effiziente Arbeit agiler Scrum-Teams. Sein Hauptanliegen ist es in Kundenprojekten eine vertrauensvolle, ergebnisorientierte Zusammenarbeit zu sichern und mit der zu liefernden Software einen höchstmöglichen Nutzerwert zu generieren.