Entities machen Intents flexibel

Wie der Beitrag Intents zeigt, bilden Entities als Container oder Rahmen das „Faktengerüst“ im Chatbot. Entities nehmen Daten auf und stellen sie zur weiteren Verarbeitung bereit. Deshalb legen Sie beispielsweise in Dialogflow zunächst Entities und dann Intents fest. Sie nutzen die Entities bei der Erstellung der Intents, um die Daten in den Beispielen zu annotieren. Der Teil des Beispiels, der aus dem Entity stammt, wird markiert und der Name des Entitys angegeben. Auf diese Weise „entnehmen“ Entities der „Hülle“ die wesentlichen Daten. Deshalb können verschiedene Beispiele in einem Intent zusammengefasst werden – wichtige Informationen stecken in den Entities.

Entities nehmen Daten auf
Entities definieren

In der Utterance geben Sie exemplarisch Daten an, diese Angabe verknüpfen Sie mit dem jeweiligen Entity (Annotierung). Damit die Angabe als Wert aus dem Entity erkannt werden kann, speichert das Entity die relevanten Werte. Bei Flughäfen oder Datumsangaben kann man sich das gut vorstellen. Bei der Äußerung, „Ich möchte nach Heathrow fliegen“, erkennt der Chatbot durch Abgleich den Zielflughafen. Entities nehmen Daten auf, wenn sie in den Utterances erscheinen und annotiert sind. Entities gibt es oft bereits „vorgefertigt“ im Chatbot-Framework. Soll Ihr Chatbot die verschiedenen Modellreihen eines Autoherstellers erkennen, müssen Sie diese in das Entity eingeben oder importieren.

In den meisten Frameworks können Sie die Inhalte einer Entity auch mit Synonymen angeben. Auf diese Weise erkennt der Chatbot „New York“ auch, wenn der Nutzer nur „NY“ eingibt. Dann können Sie sowohl Lang- als auch Kurzform verwenden. Evtl. müssen Sie die Namen der Flughäfen gezielt eingeben. Falls jemand dann „Franz-Josef-Strauß-Flughafen“ eintippt, erkennt der Chatbot „München“. Auf diesem Weg nehmen Entities auch Daten auf, wenn die Schreibweise abweicht.

Viele Frameworks erlauben außerdem die genaue Steuerung der in einem Entity abgelegten Information bzw. deren Auslesen. Dialogflow beispielsweise kann auf diese Weise zwischen der Eingabe und dem Haupteintrag im Entity differenzieren. Würde jemand als Zielflughafen DUS eingeben, könnte der Chatbot das aus dem Entity mit der Bezeichnung „Düsseldorf Airport“ wiedergeben oder eben als „DUS“. Damit haben Sie die Freiheit, die Originaleingabe oder die Hauptbezeichnung zu verwenden.

Einige Chatbot-Plattformen können Einträge in Entities automatisch ergänzen: Wenn der Flughafen Hahn fehlt, aber als Eingabe auftaucht, „Ich möchte nach Hahn fliegen“, würde anhand der Übereinstimmung mit der Zielflughafenangabe („nach“) die Zugehörigkeit von „Hahn“ zum Entity „Zielflughafen“ erkannt. Gleiches gilt für die Modellreihen bei Autos (Ist dort aber vermutlich nicht ganz so einfach, denn wie ordnet man die Angabe „ein Zwo-Dreier-BMW“ zu?).

Entities erleichtern die Erkennung

Bei der Erkennung von Intents verwendet der Chatbot typischerweise auch die Inhalte von Entities. Stimmt die Eingabe des Nutzers mit einem im Entity gespeicherten Wert überein, ist das ein wichtiges Indiz. Mit unterschiedlichen Entities können Sie daher gezielt die Intenterkennung verbessern. Um beim Kaffeebeispiel zu bleiben: In manchen Regionen heißt das Mixgetränk aus Cola und Limo „Kalter Kaffee“. Sollte der Chatbot das Mixgetränk von Kaffee unterscheiden müssen, wäre eine Aufteilung in zwei Entities (Heißgetränke und Kaltgetränke) nützlich. Dann kann der Chatbot über das Entity den Intent sicher erkennen und die Daten entnehmen. Mehr dazu finden Sie im Beitrag Training.

Datentypen nach Bedarf

Intern unterscheidet das Chatbot-Framework bei Entities verschiedene Datentypen, um Daten zu erkennen und zu entnehmen. Das sind beispielsweise Text-, Zahlen- oder Datumsangaben mit bestimmten Formaten. Auf diese Weise kann der Chatbot bei der Eingabe „nächsten Mittwoch“ das gewünschte Datum errechnen oder eine E-Mail-Adresse erkennen. Mit Zahlenangaben können Sie rechnen, mit Textangaben nicht.

Die sogenannten System-Entities stellen oft eine Menge fertiger Einträge bereit. Allerdings können sie auch in die Irre führen. Dialogflow liefert beispielsweise deutsche Ortsnamen mit. Das klappt prima für Düsseldorf, München oder Berlin. Bewohner kleinerer Orte haben allerdings Pech gehabt. Diese Orte werden nicht erkannt und dann fragt der Chatbot ggf. nach. In einem solchen Fall kann der Import einer Ortsdatenbank sinnvoll sein, um Unverständnis zu vermeiden. Erkennt der Chatbot den Ort, kann er diese Daten dem Dialog entnehmen und weiternutzen (z. B. für eine Adresse).

Viele Entities sind bereits im Chatbot-Framework vordefiniert, andere kann die Entwicklung mit Datentyp und Format festlegen. Auf diese Weise kann Ihr Chatbot beispielsweise einen hausinternen Nummernkreis erkennen und die Produktnummer entnehmen. Dazu können Sie die selbst definierten Entities von außen über eine Datenbank mit den Produktdaten füllen. Eine pfiffige Entwicklungsabteilung kann mit diesen Möglichkeiten eine Menge „zaubern“.

Kurzlebig – Session-Entities

Häufig ist es möglich, sogenannte „Session-Entities“ zu definieren. Diese Entities nehmen Daten im laufenden Dialog auf und speichern sie bis zum Session-Ende. Mit den Session-Entities können Sie beispielsweise ein Cookie auslesen und innerhalb der Session vorhalten. Wichtig ist, dass Sie damit dem Chatbot Merkfähigkeiten für die laufende Benutzer-Session verleihen. Und die Inhalte, die er sich merkt, können bei jedem Benutzer andere sein. Das unterscheidet Session-Entities von den gespeicherten.