BOTfriends Preview

Follow-Up Intents

--> zum BOTwiki - Das Chatbot Wiki

Follow-Up Intents sind Intents die an einen vorgestellten Intent angeknüpft werden und somit einen Konversationsfluss bilden. Der Output Context des übergeordneten Intents wird automatisch als Input Context in den Follow-Up Intent angelegt. Der Begriff kommt von dem NLP Service Dialogflow, welche die Funktion haben sehr einfach Konversationsflüsse anzulegen, ohne Kontexte manuell zu erstellen und verwalten zu müssen.

In Dialogflow hat man die Möglichkeit zwischen Predefined und Custom Follow-up Intents zu wählen.

Predefined Follow-Up Intents

Dialogflow gibt diese Intents vor, welche bereits beim Anlegen Trainingsphrasen beinhalten. Das hat den Vorteil, dass man keine Utterances mehr einpflegen muss und somit schneller Konversationen aufbauen kann. Gibt es zum Beispiel nach einer Frage die Möglichkeit mit Ja oder Nein zu antworten, werden diese jeweils als ein Predefined Follow-Up Intent angelegt. Dort befinden sich dann schon Trainingsphrasen wie "Ja", "Klar", "Auf jeden Fall", "Ja bitte" oder "Nein", "Nee", "Ne, danke". Neben gängigen Intents wie "Ja" oder "Nein" gibt es auch welche für "Abbruch", "Mehr" oder auch "Später". Außerdem gibt es noch einen Fallback Follow-up Intent, welcher dazu dient nicht passende Antworten vom User abzufangen und zur eigentlichen Frage zurückzuführen. Ein Beispiel:

Chatbot: "Möchtest du eine Bestellbestätigung zu deiner Pizza?" (Chatbot erwartet "Ja" bzw. "Nein" als Antwort vom User)

User: "Ich würde gerne eine weitere Pizza bestellen?"

Hier würde der Chatbot in den Fallback Follow-Up Intent springen, da dies keiner Ja/Nein Antwort entspricht. So könnte der Chatbot erneut nach einer Bestellbestätigung fragen, um zum Thema zurückzuführen.

Custom Follow-Up Intents

Bei dieser Art von Intens, müssen vom User manuell die Trainingsphrasen eingepflegt werden. Die Kontexte werden weiterhin automatisch angelegt.

Beispiel in Dialogflow:

Follow-up Intents in Dialgoflow

> Zurück zum BOTwiki - Das Chatbot Wiki


Insult Rate

--> zum BOTwiki - Das Chatbot Wiki

Unter der der Insult Rate (dt. Beleidigungsrate) versteht man eine KPI (Key-Performance-Indicator) in der Chatbot Analytics, die aussagt wie oft der Chatbot vom User beleidigt wird. Gab es beispielsweise zwei von ingesamt 20 Konversationen, bei denen eine Beleidigung vom User oder der Userin kam, ergibt sich daraus eine Insult Rate von 10 %. Oftmals stoßen Chatbots noch an ihre Grenzen, indem sie keine Antworten auf die Fragen der Nutzenden haben oder falsche Informationen liefern. Dies resultiert meistens in Frustration beim User, wodurch Beleidigungen hervorgebracht werden. Manchmal treten Beschimpfungen auch ohne jegliche Gründe von der Nutzerin auf. Denn die Hemmschwelle zur Beschimpfung im Internet ist aufgrund von Anonymität gering. Vor allem bei Chatbots, wo es sich um keine menschlichen Gesprächspartner handelt. Chatbots werden dementsprechend Opfer von sogenannten Trollen. Trolle kennt man aus den sozialen Netzwerken, die durch gegebene Kommentarfunktionen zu Postings ihre Meinungen auf provokante Weise kundtun.

Generell gilt die Insult Rate als eine wichtige Metrik, die Aufschluss über User Acceptance oder die Effizienz des Chatbots geben kann. Bei Beobachtung der Insult Rate sollte man jedoch auch im Hinterkopf behalten, um welche Zielgruppe es sich handelt und welche Auswirkungen auch der spezielle Use Case haben kann.

> Zurück zum BOTwiki - Das Chatbot Wiki


BOTfriends Preview

Agents in Dialogflow

--> zum BOTwiki - Das Chatbot Wiki

“Agents” lassen sich am besten als Natural Language Understanding (NLU)-Module beschreiben. Diese Module können in einer App, Website, Produkt oder Dienstleistung integriert werden und transferieren Text- oder gesprochene Benutzeranfragen in aussagekräftige Daten. Diese Transformation tritt auf, wenn die Äußerung eines Benutzers mit einer Absicht (Intent) in dem “Agent” übereinstimmt.

Der übereinstimmende Intent liefert dann eine Antwort an den Benutzer.

Diese Antwort kann ein einfacher Text oder eine gesprochene Bestätigung oder eine Webhook-Antwort sein. Zur Erstellung der Antwort können typbezogene Parameter (wie z.B. Temperatur, Datum, Orte) aus der Anfrage erkannt werden. Zur Befüllung der Parameter mit tatsächlichen Werten kommen sogenannte “Actions” zum Tragen. Dabei können Anfragen des Benutzers an externe Dienste weitergeleitet werden um die gewünschten Parameter mit Werten zu befüllen.

Ein Agent ist der zentrale Einstiegspunkt einer Dialogflow Anwendung. Sämtliche Intents mit den dazugehörigen Utterances, Responses und Actions werden über den Agent gepflegt.

Erstellen eines Agents

Das Anlegen eines Agents muss auf der Startseite von Dialogflow durchgeführt werden. Die Erstellung über eine REST-API Schnittstelle ist nicht vorgesehen.

 

Beispiel wie Agents in Dialogflow erstellt werden

 

> Zurück zum BOTwiki - Das Chatbot Wiki

 


BOTfriends Preview

Quick Reply / Schnellantworten / Chips

Quick Replies sind eine Interaktionsform in Messaging Plattformen und erscheinen als Buttons unter einer Nachricht. Im Gegensatz zu Cards verschwinden die Quick Replies, nachdem sie betätigt wurden. Mit Hilfe der Quick Replies haben User die Möglichkeit sich durch Inhalte im Chatbot durchzuklicken anstatt ihre Anfrage im Eingabefeld einzutippen. Wird zum Beispiel vom Chatbot ein Button mit der Bezeichnung "Hilfe" angeboten ist es am Ende nichts anderes wie wenn der User "Hilfe" eintippt und abschickt. Die Kommunikation wird damit beschleunigt und die Nutzer bekommen eine Orientierung über die Themenfelder, die der Chatbot anbietet.

Je nach Output Kanal bzw. Messaging Plattform werden unterschiedliche Namensgebungen für Quick Replies verwendet.

 

Messaging Plattform Bezeichnung
Facebook Messenger Schnellantworten, Quick Reply
Google Assistant Suggestion Chips
Microsoft Botframework Suggested Actions
Slack Slack interactive buttons
Skype HeroCard
Telegram Keyboard Buttons
Viber Keyboards

 

Hier ein Beispiel Bild für Quick Replies im Facebook Messenger: 

Quick Replies

Anwendung in Dialogflow

Wenn man in Dialogflow Intents erstellt oder bearbeitet findet man unter der Rubrik Response mehrere Möglichkeiten als Chatbot zu antworten. Unter anderem hat man die Möglichkeit das Format Quick Reply auszuwählen und in Form einer Liste die Buttons zu benennen.

Eine Quick Reply Response wird in den Messaging Plattformen als vordefinierte User Antwort dargestellt, die durch das Anklicken an Dialogflow zurückgesendet wird.

 

> Zurück zum BOTwiki - Das Chatbot Wiki

 


BOTfriends Preview

Granularität von Intents

--> zum BOTwiki - Das Chatbot Wiki

Die Granularität von Intents stellt die Detail- und Inhaltstiefe der Intents eines Chatbots dar. Das bedeutet, je granularer ein Chatbot aufgebaut wird, desto individueller kann dieser auf bestimmte Anfragen antworten. Dies wird im folgenden Abschnitt an einem einem Beispiel dargestellt:

  • Fein granularer Intent:

Frage: "Bietet der Bundestag Gruppenführungen an?"

Antwort: "Im Bundestag können auch Gruppenführungen gebucht wurden. Mehr Informationen und zur Buchung finden sie hier: www.bundestag.de/gruppenführungen"

  • Grob granularer Intent:

Frage: "Ist die Gruppenführung im Bundestag barrierefrei?"

Antwort: "Alle Informationen zu Gruppenführungen finden sie hier: www.bundestag.de/gruppenführungen"

Wie granular sollten Intents aufgebaut sein?

Die Granularität hängt sehr stark vom Use Case und der Komplexität ab. Häufig ist es zu Beginn sinnvoll, die Inhalte eines Chatbots nicht zu fein granular aufzuplanen. Man sollte während der Entwicklungs- und vor allem während der Testphase auf die Interaktion des Nutzers mit dem Chatbot achten, um dann noch entscheiden zu können, wie tief Nutzer in das Detail gehen wollen. Natürlich ist es möglich während und nach der Einführung des Chatbots noch an der Granularität zu justieren und neue Intents anzulegen, um die Detailstärke zu gewährleisten.

Welche Probleme auftreten können bei zu granularen Intents

Je tiefer man die Intents detailliert, desto schwieriger wird die Pflege des Contents eines Chatbots. Dabei hilft natürlich eine sprechende Benennung der angelegten Intents, um sicherzustellen, dass mehrere Entwickler an einem Chatbot arbeiten können. Allerdings gibt es noch eine weitere Herausforderung, die auftritt, wenn die Intents zu granular aufgebaut werden. Bei sich stark ähnelnden und sehr nah beieinander liegenden Anfragen ist es für den NLP-Service schwierig die richtige Absicht hinter der Anfrage eines Nutzers zu erkennen. Der NLP-Service muss durch das Erstellen von verschiedenen Fragemöglichkeiten (Utterances) entscheiden, wie sicher er sich ist, dass diese Anfrage zu dieser Absicht gehört. Wenn sich diese Fragemöglichkeiten zu sehr ähneln, sinkt der Confidence Score und die Maschine ist sich nicht mehr sicher welche Absicht sich hinter dieser Anfrage verbirgt.

Insgesamt ist zu sagen, dass ein Mittelweg gewählt werden sollte, der sich durch das Testen mit echten Nutzern herauskristallisieren wird.

 

> Zurück zum BOTwiki - Das Chatbot Wiki

 


BOTfriends Preview

Chatbot Training

--> zum BOTwiki - Das Chatbot Wiki

Beim Chatbot Training spricht man von einer Verbesserung des Sprachverständnisses und einer Optimierung der Absichtserkennung hinter einer Nutzereingabe. Für das Chatbot Training ist es zum einen wichtig bestehende Nutzerabsichten mit weiteren Fragemöglichkeiten (Utterances) anzureichern und somit sicherzustellen, dass die Erkennungsrate (Confidence Score) ansteigt und somit die Absichten noch besser erkannt werden. Zum anderen ist es wichtig während des Betriebs die eingegangenen Fragen zu überprüfen und herauszufinden, ob Anfragen eingehen, für die kein Intent bzw. Absicht hinterlegt ist. In diesem Fall spielt der Chatbot die Fallback Message aus und kann auf die Frage keine Antwort geben. Um dies zu verbessern sollte der Chatbot trainiert werden und für die Anfragen, für die noch kein Inhalt vorliegt, Intents anzulegen.

Wann trainiert man den Chatbot? 

Das Chatbot Training sollte schon während der Entwicklungsphase stattfinden, um von Beginn an sicherzustellen, dass die passenden Inhalte auf die Anfragen ausgespielt werden. Trotzalledem ist das Training während des Chatbot Betriebs am Wichtigsten, weil dort “echte” Nutzer mit dem Chatbot interagieren und meist erst im Livebetrieb die Schwachstellen bzw. Inhaltslücken zum Vorschein kommen. Im Training ist sehr gut zu erkennen, mit welcher inhaltlichen Erwartungshaltung Nutzer auf den Chatbot zugehen und im Falle, dass Nutzer andere/weitere Inhalte erwarten, sollte zügig eingegriffen werden und der Chatbot weiter antrainiert werden.

Wie kann man den Chatbot trainieren? 

Dieses Training findet in den meisten Fällen direkt in den NLP-Services, wie beispielsweise Dialogflow statt. Hier findet man in einer extra dafür vorgesehenen Sektion Nutzerinterkationen vor, in der man erkennen kann, wie die NLP-Engine Intents zu Nutzeranfragen matched. Hierbei gibt es 3 mögliche Szenarien:

  1. der NLP-Service trifft mit der Nutzeranfrage den richtigen Intent
  2. der NLP-Service weist einer Nutzeranfrage einem falschen, bestehenden Intent zu
  3. der NLP-Service kann für die eingegebene Anfrage keinen Intent finden und spielt den Fallback-Intent aus

Beispiel Bild für die Trainingssektion in Dialogflow:

Trainingssektion in Dialogflow

 

> Zurück zum BOTwiki - Das Chatbot Wiki

 


BOTfriends Preview

Edge Case

--> zum BOTwiki - Das Chatbot Wiki

Unter Edge Cases versteht man nicht erwartungsgemäße Ausgänge einer Konversation, die selten auftreten und somit Ausnahmen in der Konversation darstellen. Diese Edge Cases erstellt man unter anderem innerhalb der Conversational Map bzw. den Conversation Flows. Das Gegenstück zu Edge Cases stellen der Happy Paths dar. Hierbei beschreibt man die erwartungsgemäßen Ausgänge einer Konversation, die am häufigsten vom Nutzer genommen werden.

Beispiel für den Happy Path am Use Case "Pizza bestellen"

An diesem Beispiel wird dargestellt wie eine "glückliche" Konversation zwischen User und Chatbot aussehen kann bei einer Pizza Bestellung. Alle Informationen, welche der Nutzer dem Chatbot mitgibt können verarbeitet werden und es entstehen keine Missverständnisse.

Beispiel für den Happy Path

Beispiel für den Edge Case am Use Case "Pizza bestellen"

An diesem Beispiel erkennt man, dass es allerdings auch großes Fehlerpotenzial geben kann, wenn der User Antworten sendet, welche der Chatbot nicht verarbeiten kann. In der unteren Grafik wird gezeigt, dass der User eine Adresse eingibt, die außerhalb von Deutschland ist. In diesem Fall kann keine Lieferung stattfinden. Solche Edge Cases sollte man im Vorhinein bedenken und in der Conversational Map abbilden. Man sollte sich fragen, wie in solchen Situationen mit dem User umgegangen wird. Zum Beispiel informiert man den Nutzer, dass man nur innerhalb von Deutschland liefert oder man gibt ihm die Möglichkeit die Adresse erneut einzugeben im Falle eines Missverständnisses.

Beispiel für Edge Cases in Konversationen

> Zurück zum BOTwiki - Das Chatbot Wiki


BOTfriends Preview

Rasa Core

--> zum BOTwiki - Das Chatbot Wiki

Rasa Core bildet zusammen mit Rasa NLU den Rasa Stack. Er ist dafür zuständig, eine möglichst natürliche Konversation mit dem Benutzer zu führen. [1]

Aufgaben

Rasa Core ist verantwortlich für den Conversation Flow, Context-Handling, Bot-Responses und Session Management. Dabei kann auf der Rasa NLU oder anderen Services aufgebaut werden, die die Intent Recognition und Entity Extraction übernehmen und die Ergebnisse dem Rasa Core zur Verfügung stellen. [1]

Aufbau

Der Rasa Core hält für jede Session, also für jeden User, einen Tracker. Dieser enthält den momentanen Zustand der Konversationen, der jeweiligen User. Bekommt der Bot nun eine Nachricht, wird zuerst der Interpreter durchlaufen, welcher den Originaltext als Eingabe bekommt, und die Eingabe, den Intent und die extrahierten Entities zurückgibt. Zusammen mit dem aktuellen Zustand des Trackers entscheidet die Policy Komponente nun, welche Action (Bot Response) als nächstes ausgeführt werden soll. Diese Entscheidung wird nicht durch einfache Regeln getroffen, sondern genauso wie Intents oder Entities, auf der Grundlage von einem, mit Machine Learning, trainierten Modell.

Einfluss auf diese Abläufe hat man an mehrer Punkten. Zunächst einmal ist das die Konfiguration des Interpreter, beziehungsweise der Rasa NLU. Diese sollte zuverlässig die richtigen Intents erkennen und alle benötigten Entities extrahieren. Die Policy Komponente, lässt sich auch Use Case spezifisch in einer dafür vorgesehen Datei konfigurieren (policy.yml).

Dabei kann man sich zwischen mehreren Policies entscheiden, bei denen man dann jeweils noch genauere Anpassungen vornehmen kann. Die Action sind die Bot Responses. Dabei können das einfache Text Antworten, Quick Replies, Bilder oder Action Webhooks sein. Letztere senden einen POST-Request an eine vorher definierte Schnittstelle und von wo die Antworten verschickt werden. Dadurch können zum Beispiel API calls oder Datenbanken-Zugriffe realisiert werden. [2] [3]

> Zurück zum BOTwiki - Das Chatbot Wiki

Quellen

[1] https://rasa.com/docs/
[2] https://rasa.com/docs/core/policies/
[3] https://rasa.com/docs/core/architecture/


BOTfriends Preview

System Entities

--> zum BOTwiki - Das Chatbot Wiki

Entities dienen dazu, Nutzerinformationen aus natürlicher Sprache zu extrahieren.

Dabei wird meist zwischen System Entities und Custom Entities unterschieden. System Entities sind bereits im System enthaltene Entities für beispielsweise Adressen, Uhrzeiten und Zahlen. Eine vollständige Liste der Systementitäten von Dialogflow gibt es unter Systementitäten. Es folgen einige Beispiele für die verschiedenen Arten von Systemeinheiten.

System Mapping

Diese Systemeinheiten haben Referenzwerte. Beispielsweise stimmt @sys.date mit allgemeinen Datumsreferenzen wie "Januar 1, 2015" oder "Erster Tag im January 2015" überein und gibt einen Referenzwert im ISO-8601-Format zurück: 2015-01-01T12:00:00-03:00

System Enum 

>Diese Entitäten haben keinen Referenzwert. Beispielsweise stimmt @sys.color mit den gängigsten Farben überein und gibt die übereinstimmende Farbe so zurück, wie sie ist, ohne sie einem Referenzwert zuzuordnen. Beispielsweise werden Rottöne wie "Scharlach" oder "Purpur" nicht auf "Rot" abgebildet, sondern geben ihre ursprünglichen Werte "Scharlach" und "Purpur" zurück.

System Composite 

Diese Entitäten können andere Entitäten mit Aliasen enthalten und Objekttypwerte zurückgeben. Beispiel: @sys.unit-currency dient zum Abgleichen von Geldbeträgen mit einem Währungsnamen wie "50 Euro" oder "20 Dollar und 5 Cent". Es wird ein Objekttypwert zurückgegeben, der aus zwei Attribut-Wert-Paaren besteht: {"amount":50,"currency":"EUR"}

> Zurück zum BOTwiki - Das Chatbot Wiki

Quelle:


BOTfriends Preview

Sentiment Analyse

--> zum BOTwiki - Das Chatbot Wiki

Die Sentimentanalyse, auch „Stimmungserkennung“ genannt, ist ein Untergebiet des Text Mining und bezeichnet die automatische Auswertung von Texten mit dem Ziel, eine geäußerte Haltung als positiv oder negativ zu erkennen. [1]

Funktionsweise

Die Aufgabenstellung der Sentiment Detection wird durch statistische Methoden angegangen. Darüber hinaus kann man die Grammatik der untersuchten Äußerungen einbeziehen. Zur statistischen Analyse geht man von einer Grundmenge von Begriffen (oder N-Grammen) aus, mit denen positive oder negative Tendenzen verbunden werden. Die Häufigkeiten positiver und negativer Begriffe im analysierten Text werden einander gegenübergestellt und bestimmen die vermutete Haltung. Darauf aufbauend lassen sich Algorithmen des maschinellen Lernens anwenden. Auf Grundlage von vorverarbeiteten Texten, zu denen die Haltungen bekannt sind, können solche Algorithmen auch für weitere Begriffe lernen, welcher Tendenz sie zuzuordnen sind. Mit Hilfe von Techniken des Natural Language Processings kann Wissen über die natürliche Sprache in die Entscheidung einfließen. Wird beispielsweise die Grammatik der Texte analysiert, können maschinell erlernte Muster auf die Struktur angewendet werden. [1]

Anbieter von Sentiment Analysen

Viele Cloudanbieter verfügen über eine Sentimentanalyse. Die Dienste werden in der folgenden Tabelle aufgelistet:

 

Anbieter Sentiment Analyse
Google Cloud Plattform Natural Language API
IBM Natural Language Understanding
Microsoft Text Analytics
Amazon Amazon Comprehend

Bei vielen NLP Services wie Google Dialogflow wird eine Sentimentanalyse bereits mitgeliefert. [2]

> Zurück zum BOTwiki - Das Chatbot Wiki

Quellen

[1] https://de.wikipedia.org/wiki/Sentiment_Detection
[2] https://cloud.google.com/dialogflow-enterprise/docs/sentiment?hl=de