#
Was ist NLU?
NLU (Natural Language Understanding) ist ein Teilgebiet der künstlichen Intelligenz, das sich mit der Entwicklung von Software beschäftigt, durch die Computer menschliche Sprache verstehen können. Sprachverständnis ist die Voraussetzung dafür, dass ein Computer z. B. Fragen zu einem Text beantworten kann oder einen Text in eine andere Sprache übersetzen kann.
#
Wofür braucht ein Chatbot NLU?
Ein Chatbot ergibt nur Sinn, wenn der Bot in der Lage ist, konkrete Eingaben durch Analyse so zu verallgemeinern, dass bedeutungsgleiche Eingaben auf dieselbe Antwort abgebildet werden. Das heißt, das Ziel der künstlichen Intelligenz, die einem Chatbot zu Grunde liegt, ist es, zu erkennen, auf welches Muster eine Eingabe abgebildet werden soll. "Muster" meint hier, dass die gleiche oder verwandte Bedeutung durch eine andere grammatische Form ausgedrückt wird. Für einen Satz wie "Ich möchte Geld an meine Familie überweisen." soll ein Chatbot dasselbe allgemeine Muster erkennen wie z. B. für die folgenden Sätze (und diese Liste lässt sich beliebig erweitern).
- "Ich möchte Geld an meine Familie transferieren."
- "Ich will 100 Euro an meine Familie überweisen."
- "Ich muss an meine Familie 100 Euro überweisen."
- "Ich habe eine Überweisung an meine Familie durchzuführen"
- "Ich soll einen Geldtransfer an meine Familie durchführen."
- "Geld an Familie senden."
- "100 Euro an Familie schicken."
- "Familie 100 Euro zukommen lassen"
- "Wie kann ich Geld an meine Familie überweisen?"
- "Meine Familie braucht 100 Euro von mir."
- ...
#
Was macht die Kauz-NLU besonders?
Es gibt technisch gesehen zwei Methoden - Deep-Learning-Verfahren und grammatikbasierte Verfahren - um NLU zu realisieren. Weil die Frage danach, was die Kauz-NLU besonders macht, etwas Hintergrundwissen erfordert, holt diese Einführung etwas weiter aus.
#
Statistische Ähnlichkeit als Grundlage von NLU
Die im Moment wohl bekannteste Methode für NLU verwendet maschinelles Lernen (Schlagwort "Deep Learning") und modelliert Sprachverständnis durch statistische Ähnlichkeit einer Aussage zu Beispielen, deren Bedeutung dem System bereits bekannt ist. Diese statistische Ähnlichkeit wird aus der Häufigkeit abgeleitet, mit der bestimmte Wörter zusammen verwendet werden. Die Häufigkeit wird wiederum aus großen Textmengen geschätzt (z. B. allen im Internet verfügbaren englischen Webseiten).
Auf Deep Learning basierende Verfahren funktionieren aufgrund ihrer Machart, also dem Lernen aus großen Mengen von frei verfügbarem Text (wie z. B. Wikipedia) besonders gut für allgemeine Fragestellungen wie z. B. "Wer ist Albert Einstein?" (In der Kauz-NLU durch den Wikipedia-Service realisiert: Wikipedia oder die Generierung von Text, der statistisch ähnlich zu einer Eingabe ist (siehe OpenAI ).
Kein existierendes Deep-Learning-System kann ohne weiteres Zutun konkrete Fragen zu Produkten und Diensten zu beantworten, die Kunden*Kundinnen von Kauz anbieten. Um einen Deep-Learning-Chatbot in die Lage zu versetzen, Fragen zu konkreten Produkten und Diensten anzubieten, muss der Deep-Learning-Chatbot manuell auf die Erkennung von kundenspezifischen "Intents" (also der einem Input zugrundliegenden Absicht des*der Chatbotnutzer*in) angelernt werden.
#
Intenterkennung mit Deep-Learning-NLU
Im Kontext von maschinellem Lernen von Sprachbedeutung bedeutet "Intenterkennung", zu verstehen was der*die Chatbotnutzer*in mit seiner Eingabe bezweckt. Bezogen auf maschinell gelernte Sprachbedeutung heißt das wiederum nichts anderes als die Suche nach dem "Intent" (z. B. Hausversicherung abschließen), der der Eingabe am "ähnlichsten" ist.
Für generelle Intents wie "Hilfe" kann ein auf großen Datenmengen vortrainiertes System oft schon die Ähnlichkeit zu Eingaben wie "Kannst du mir helfen?" ohne weitere Hilfe herstellen. Für speziellere Intents muss die Intent- bzw. Ähnlichkeitserkennung des Systems aber erst mit durch die Chatbotentwickler*innen manuell erstellten Beispielen "angeleitet" werden.
#
Ein Beispiel für das Anlernen von Intents mit Deep-Learning-NLU
Nehmen wir an, ein Chatbot soll auf der Anwendungsdomäne "Überweisung" operieren. Dann könnte das Domänenmodell für "Überweisung" z. B. folgende "Intents" beinhalten:
ueberweisung
("Ich will Geld überweisen.")ueberweisung.kosten
("Was kostet eine Überweisung?")ueberweisung.ausland.kosten
("Was kostet eine Überweisung ins Ausland?")
Für jeden dieser Intents sind nun erstens genügend Trainingsfragen nötig, um das System auf die Erkennung und Unterscheidung der Eingaben zu trainieren. Wenn pro Intent 20 Fragen notwendig sind, wären also schon für das kleine Beispiel hier eine Menge gut ausgedachter (einen Intent breit abdeckenden, aber von anderen Intents abgrenzenden) Trainingsfragen nötig.
Zweitens ist die in die Definition von Intents und ihrem Training investierte Arbeit nicht nachhaltig, denn die "Struktur" von Intents lässt sich wegen der Themenabhängigkeit des Trainings für die Erkennung von Intents nicht auf verwandte Fälle übertragen oder wiederverwenden. Was bedeutet das konkret?
Zum Beispiel kann die Definition und das Training von überweisung.kosten
nicht auf den Intent konto.kosten
("Was
kostet ein Konto?") übertragen werden, obwohl die Struktur der Eingabe ("Was kostet X?") und wahrscheinlich auch
die Trainingsfragen bis auf das Thema gleich sind. Es besteht also keine "abstrakte" - themenunabhängige - Beziehung
zwischen sprachlicher Struktur einer Eingabe und ihrer Bedeutung (also der Struktur des Intents), sondern nur eine ganz
konkrete Eins-zu-eins-Beziehung zwischen Eingaben zu einem Thema und einem Thema. Eine solche Strukturierung von Sprache
anhand von Themen über die man spricht, ist genau das, was man erwarten würde, wenn man Sprachbedeutung anhand von
"Ähnlichkeit" lernt, sie hat aber gravierende Nachteile.
Sprachbedeutung selbst und Sprache im Allgemeinen ist nicht anhand von "Themen" strukturiert, sondern auf der Basis abstrakter Prinzipien für die Kombination und Interpretation von Worten: der Grammatik. Für Anwendungsfälle, in denen der Chatbot Auskunft zu komplexeren Sachverhalten geben soll, ist deswegen eine auf Ähnlichkeit basierende themenfixierte Herangehensweise wenig sinnvoll.
Die Ausdrucksmächtigkeit natürlicher Sprache resultiert nicht einfach nur daraus, dass man eine gigantisch große Menge von Textähnlichkeiten memoriert hat. Die Ausdrucksmächtigkeit von Sprache entsteht durch die regelgeleitete Kombination und Interpretation von Worten. Was genau ist damit gemeint?
#
Struktur und Bedeutung von Sprache als Grundlage von NLU
In einen Satz wie "Was kostet X?" kann man anstelle des X jedes Nomen einsetzen, das die Eigenschaft hat, etwas zu kosten, ohne dass sich an der abstrakten Struktur des Satzes etwas ändert (der Satz bleibt eine Frage nach den Kosten von etwas). Ein Deep-Learning-System kann mit einer solchen abstrakten Struktur nichts anfangen, denn es gibt keine statistische Regularität des Sprachgebrauchs, die "etwas" charakterisiert. Stattdessen ist das System darauf angewiesen, vordefinierte "Schlüsselwörter" (z. B. "Überweisung") zu erkennen, anhand derer es Ähnlichkeiten beurteilen kann.
Nun ist ein "Schlüsselwortansatz" für kleine Chatbotprojekte sicher machbar und der Aufwand für die Definition der
grammatischen Struktur (ueberweisung.kosten
) einer Eingabe ("Was kostet eine Überweisung") fällt vielleicht nicht ins
Gewicht, aber solch ein Ansatz skaliert aus Prinzip nicht. Kunden von Kauz betreiben Chatbots mit mehreren Tausend
Intents und Sie können sich vorstellen, dass händische Einzelfalldefinitionen der grammatischen Struktur von Eingaben
für solche realistischen Anwendungen schnell an ihre Grenzen kommen. Genau an diesem Punkt setzt die Kauz-NLU an.
Die Aufgabe der Kauz-NLU ist es, die sprachliche Form einer Eingabe ("Was kostet eine Überweisung?") mit ihrer
Bedeutungsstruktur (ueberweisung.kosten
) so zu verbinden, dass auf der Basis dieser Bedeutungsstruktur die
"richtige" (im Editor hinterlegte) Antwort in der Anwendungsdomäne gefunden wird.
Die Kauz-NLU macht damit die Entwicklung komplexer Chatbots einfach, weil sie die Last der grammatischen Zerlegung von Intents übernimmt und für Ersteller*innen eines Chatbots mit Kauz-NLU nur bleibt, das spezifische Domänenmodell zu definieren, in dem die Bedeutungsstruktur einer Eingabe interpretiert werden soll.