Menu

Einfache Chatbotfunktionalität

15. Mai 2018 - Chatbot

Wenn wir nur Intentionen (Intents) und Kontexte (Contexts) des Bots betrachten, so arbeitet er wie folgt:

  1. Bestimmung des aktuellen Kontexts anhand der Sitzung (Session)
  2. Aufruf des NLP (= natural language processor) mit dem aktuellen Kontext und dem eingegebenen Text
    • Für jede Intention kennt dem Bot mehrere Texte, welche vom Administrator des Bots definiert wurden. Er vergleicht ob der vom Benutzer eingegebene Text einem der vordefinierten Texten ähnelt.
  3. Wenn das NLP keine Intention gefunden hat, dann wird sie mit dem eingegebenen Text und dem Kontext ‚default‘ aufgerufen
  4. Sollte Punkt 3 auch keine Intention gefunden haben, so wird die Intention ’nicht gefunden‘ benutzt.
  5. Es wurde eine Intention gefunden, also wird der zugehörigen Antworttext ausgeliefert.
    • Eine Intention kann mehrere Antworttexte haben. Wenn nicht anders definiert wird ein zufälliger Text zurückgegeben. Dadurch wirken die Antworten des Bots etwas natürlicher.
  6. Die gefunde Intention kann nun den aktuellen Kontext in einen neuen Kontext überführen. Der neue Kontext ist nun der aktuelle Kontext.

Hier mal eine Beispiel eines Bots, welcher Einstein und Newton kennt. Der Bot kann die Vornamen der Physiker, sowie deren Geburtsdaten nennen. Dazu kann er auch ‚Hallo‘ sagen. Zur Vereinfachung besitzt hier jede Intention jeweils nur einen EIngabe- und Antwort-Text.

Bot-Definition:

# Intentionsname Eingabetext Antworttext Eingangskontext Ausgangskontext
1 Hallo Hallo Hallo, bitte frage mich Newton oder Einstein default
2 Einstein Wer ist Einstein Ein berühmeter Physiker, Begründer der Relativitätstheorie default EinsteinKontext
3 Einstein Vorname Was ist sein Vorname Sein Vorname ist ‚Albert‘ EinsteinKontext
4 Einstein Geburtstag Wenn wurde er geboren 14. März 1879 in Ulm EinsteinKontext
5 Newton Wer ist Newton Newton war ein Naturforscher, Begründer der Gravitationstheorie und vieles mehr. default NewtonKontext
6 Newton Vorname Wie ist sein Vorname Sein Vorname ist Isaak NewtonKontext
7 Newton Geburtstag Wenn wurde er geboren Er wurde am 4. Januar 1643 nach dem gregorianischem Kalender geboren. Da zu seiner Zeit aber der julianische Kalender noch galt war es für ihn der 25. Dezember 1642. NewtonKontext
8 Vergessen Vergiss worüber wir reden OK, alles vergessen. default default
9 fallback Das habe ich leider nicht verstanden

Hier ist zu beachten, dass nicht jeder Ausgangskontext definiert ist. fehlt der Ausgangskontext, so wird der Eingangskontext bei Aufruf des Intents nicht verändert. Die Intention ‚fallback‘ wird benutzt wenn keine intention gefunden wurde, von daher benötigt sie keine Eingabetexte.

Bot-Konversation mit Intentionen und Kontexten:

# EIngegebener Text Ausgegebener Text Aktueller Kontext Eingangskontext des Intents Ausgangskontext des Intents Neuer Kontext
1 Hallo Hallo, bitte frage mich Newton oder Einstein default default default
2 Wer ist Einstein Ein berühmeter Physiker, Begründer der Relativitätstheorie default default EinsteinKontext EinsteinKontext
3 Was ist sein Vorname Sein Vorname ist ‚Albert‘ EinsteinKontext EinsteinKontext EinsteinKontext
4 Wer ist Newton Wer ist Newton EinsteinKontext default NewtonKontext NewtonKontext
5 Wie ist sein Vorname Sein Vorname ist Isaak NewtonKontext NewtonKontext NewtonKontext
6 Vergiss worüber wir reden OK, alles vergessen. NewtonKontext default default default
7 Wie ist sein Vorname Das habe ich leider nicht verstanden default default default

Hier ist zu sehen, wie die gleiche Eingabe in Zeile 3 und 5 aufgrund des Kontexts zu verschiedenen Ausgaben führt. In Zeile 4 und 6 sieht man, wie  ein ‚Rückfall‘ auf den default Kontext stattfindet. Beide Eingaben werden im aktuellen Kontext nicht gefunden, aber im Kontext ‚default‘.

DIe Zeile 7 zeigt den Rückgriff auf die Intention mit dem Namen ‚fallback‘ wenn keine Intention zugeordnet werden konnte.