Wenn wir nur Intentionen (Intents) und Kontexte (Contexts) des Bots betrachten, so arbeitet er wie folgt:
- Bestimmung des aktuellen Kontexts anhand der Sitzung (Session)
- 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.
- Wenn das NLP keine Intention gefunden hat, dann wird sie mit dem eingegebenen Text und dem Kontext ‚default‘ aufgerufen
- Sollte Punkt 3 auch keine Intention gefunden haben, so wird die Intention ’nicht gefunden‘ benutzt.
- 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.
- 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.