Chatbot mit LUIS

20.09.2018

In einem Kundenprojekt haben wir einen Chatbot umgesetzt, der übliche Anfragen an ein Service Center per Chat oder Email beantworten kann. Da ein Chatbot für eine gute Antwort auf die IT-Systeme eines Unternehmens zurückgreifen muss, bot es sich an, uns als Integrationsexperten damit zu beauftragen.

In diesem Blogpost zeigen wir, wie man Microsofts Service LUIS („Language Understanding“) verwendet, um mittels maschinellem Lernen die Textanfragen des Service Center-Kunden zu interpretieren. Mittels dieser Interpretation ist es der Chatbot-Logik möglich, das Vorhaben eines Kunden zu erkennen und intelligente Entscheidungen zu treffen. Die für die Durchführung relevanten externen Systeme, wie z.B. ein CRM, werden angesprochen, Daten eingeholt oder Aktionen ausgeführt.
 

Als Beispiel zeigen wir einen Anwendungsfall, indem der Kunde des Service Centers den Bearbeitungsstatus seiner offenen Aufträge anfragt. Bei der Implementierung des Chatbots geht man wie folgt vor:
 

Nachdem man sich auf https://www.luis.ai mit seinem Microsoft-Konto eingeloggt hat, kann man für die jeweiligen Anwendungsfälle zugeschnittene LUIS-Applikationen erstellen.

Dafür ist es nötig, ein sogenanntes „domänenspezifisches Modell für natürliche Sprachen“ zu definieren. Konkret bedeutet dies:

1. Die Kategorisierung von generellen „Benutzerabsichten“ (Intents). 


Dies sind die Aktionen die der Kunde durchführen möchte, z.B. „AuftragStatus“ (der Kunde möchte den Status eines Auftrags wissen) oder „AuftragNeu“ (ein neuer Auftrag soll erstellt werden). Es ist auch möglich, vordefinierte Domänenmodelle zum Einstieg auszuwählen und diese mit eigenen, speziellen Absichten zu erweitern.


2. Für Absicht/Intent müssen Beispielsätze erstellt werden

Diese Beispielsätze müssen potentielle „Äußerungen“ (Utterances) der Kunden zu dieser Absicht widerspiegeln, z.B. „Welchen Status hat mein Auftrag 1234?“ oder einfach „Status Auftrag 1234“.
  An dieser Stelle setzt das maschinelle Lernen ein: Es reicht, fünf bis zehn Beispielsätze zu erstellen, jeder Satz mit einem leicht unterschiedlichen Satzbau und Vokabular, damit das LUIS-System trainiert wird und lernen kann.



3. Die Äußerungen/Utterances der Kunden können wichtige Daten enthalten

Diese müssen extrahiert werden, damit die Chatbot-Logik damit arbeiten kann. Dabei geht es z.B. um die ID des Auftrags, dessen Status abgefragt werden soll. Zu diesem Zweck können Wörter und Ausdrücke in den Beispielsätzen, als „Entität“ (Entity) markiert werden, z.B. „AuftragsID“. Entitäten können unterschiedlicher Natur sein: Orte, Dinge, Personen, Ereignisse oder Konzepte. Sie sind nicht an einen Ausdruck gebunden und können in den Ausdrücken anderer Absichten wiederwendet werden. LUIS extrahiert die Information an der markierten Stelle.



Nachdem das „domänenspezifische Modell“ definiert ist, muss LUIS nur noch trainiert werden. Hierfür reicht es, einfach auf den „Train“-Knopf oben rechts zu drücken.

 

Dann ist die Option zum Testen freigeschaltet: LUIS interpretiert den eingegeben Satz. Die generierten Daten können unter „Inspect“ eingesehen werden. Das System evaluiert, zu welcher Absicht der Satz mit größter Wahrscheinlichkeit zuzuordnen ist, z.B. wird „what is the status of my request 1234?“ mit 73 % Wahrscheinlichkeit zu „Request.Status.ById“ zugeordnet. Auch die Entitäten werden extrahiert, z.B. wurde „1234“ richtig als „RequestId“ erkannt.



 


Diese Daten werden als JSON an die Chatbot-Logik gesendet, die nun weiß, welches die Absicht des Kunden ist und kann nun mit den extrahierten Entitätsdaten weitere Systeme ansprechen, um die Anfrage erfolgreich zu bearbeiten.

Dies ist nur ein kleiner Einblick in die Welt der Chatbot-Entwicklung. Die Chatbot-Logik selbst wird z.B. mit Hilfe des „Microsoft Bot Frameworks“ entwickelt und kann auf „Azure“ gehostet werden.

Falls Sie weitergehendes Interesse haben, bieten sich folgende Seiten als tiefergehende Information an:

•        https://dev.botframework.com/

•        https://www.luis.ai/home

•        https://www.qnamaker.ai

•        https://github.com/Microsoft/AzureBotServices-scenarios

 

Marcel Köhler

QUIBIQ Hamburg

zurück