Die Technologie hinter Sprachassistenten – Ein Überblick
Artikelübersicht
Was ist der Unterschied zwischen NLP, NLU und NLG?
Natural Language Processing (NLP) beschreibt verschiedene Sprachtechnologien. Dazu zählen Natural Language Understanding (NLU). Bei diesen Systemen wird "natürliche Sprache" in "maschinenverständliche Sprache" umgewandelt. Auch zu NLP zählen Natural Language Generation (NLG). Dabei handelt es sich um diverse Systeme, welche "maschinenverständliche Sprache" in "natürliche Sprache" umwandeln.
Aufbau Sprachassistenten
Bei einem Sprachassistenten muss zunächst der sprachliche Input in einen Text umgewandelt werden. Dazu verwendet man "Automatic Speech Recognition (ASR)". Dieser Text muss dann verstanden werden. Dazu verwendet man "Natural Language Understanding (NLU)." Das NLU-System wandelt den Text der "natürlichen Sprache" in formale Sprache um. Formale Sprache ist in Sprachsystemen immer maschinenverständliche Sprache.
Dazu hier einige Beispiele:
1 “I want to send some money” -> MAKE_TRANSFER
2 “I need to cancel a transfer” -> CANCEL_TRANSFER
3 “I need to remove a direct debit” -> CANCEL_DIRECT_DEBIT
4 “Can I modify a direct debit?” -> CHANGE_DIRECT_DEBIT
5 “I was trying to make a transfer but it doesn’t let me” -> MAKE_TRANSFER_NOT_WORKING
6 “I am unable to remove a direct debit” -> CANCEL_DIRECT_DEBIT_NOT_WORKING
Natürliche Sprache beschreibt hier also nicht-formale Sprache. Ob Menschen tatsächlich natürlicherweise so sprechen, ist dafür völlig irrelevant.
Diese formale Sprache ist eine klare Anweisung für den Dialog Manager, das Hirn des Sprachassistenten. Dieser nimmt die Anweisung entgegen und gibt möglicherweise direkt eine formale Antwort aus. Wenn Informationen fehlen, kann der Dialog Manager Datenbanken durchsuchen und Suchmaschinen verwenden. Wenn es nötig ist kann er auch eine Rückfrage an den Nutzer stellen.
Diese Formale Antwort oder Rückfrage wird dann in "Natural Language Generation (NLG)" in natürlichsprachlichen Text umgewandelt, der dann vom Text-to-Speech(TTS)-System in eine auditive Ausgabe umgewandelt wird.
Der Überblick den ich hier gegeben habe ist sehr grob, dies liegt daran, dass NLP-Systeme nicht alle gleich komplex sind. Zum einen ist es möglich die Eingabe vorzubereiten. Dazu gibt es verschiedene Möglichkeiten.
- Noise-Removal: Alle Zeichen die das Wort verändern, wie Anführungszeichen, Ausrufezeichen, Punkt, Aufzählungen, werden entfernt.
-
Lowercasing: zu deutsch Kleinbuchstabisierung. Löschen wird zu löschen, FEhlEr wird zu fehler und FESTSTELLTASTE wird zu feststelltaste.
Diese beiden Vorbereitungen werden immer durchgeführt.- Stemming: reduziert Wörter auf ihren Wortstamm. zB. löschen, löschte, löscht, lösch, gelöscht -> lösch.
- Lemmatization: bei dieser Technik wird die Eingabe mit Wörterlisten in einer Datenbank verglichen. Diese Datenbank muss selbstverständlich vorher angelegt werden. Und wenn Wörter nicht in der Datenbank sind, kann keine Ausgabe erfolgen. Diese Wörterlisten zeigen dann, dass schwamm, geschwommen und schwimmen, als Verb, die gleiche Bedeutung haben und gibt schwimmen zurück. Außerdem verwandelt ein Lemmatizer "bin", "bist", "ist", "sind" und "seid" in "sein".
Im Gegensatz zu Stemming muss hier der Wortstamm nicht identisch sein und die Ausgabe ist ein tatsächliches Wort. - Stop-Word-Removal: Alle Wörter die keine Bedeutung haben werden gelöscht. Zum Beispiel. Ein Eingabe-Satz beim Telefon-Banking enthält kaum wichtige Wörter, um die Absicht zu analysieren. "Ich möchte ein wenig Geld senden". "Ich" ist irrelevant, da ein anderer Akteur keine Zugriffsrechte hat, "möchte" zeigt an, dass eine Absicht geäußert wird… Aber in diesem Kontext suchen wir ohnehin nur nach einer Absicht. "Ein" enthält gar keine Information. "wenig" enthält eine Information über die Geldmenge… die wird aber später exakt definiert. Also bleibt als Eingabe nur "Geld senden". -> Funktion GELD_SENDEN
All die entfernten Informationen machen das System schneller, aber fehleranfälliger.
Anschließend kann man Informationen in den Text einarbeiten. "senden" ist ein Verb und bezieht sich auf "Geld" was ein Nomen ist. Und wenn man Stop-Word-Removal übersprungen hat: "ein" ist ein Artikel und bezieht sich auf "Geld", "wenig" ist ein Adjektiv (oder besser eine Mengenbeschreibung) und bezieht sich auf "Geld" und so weiter. Das nennt man text enrichment. Der Umfang dabei beschränkt sich auf ein oder zwei Sätze, mehr ist mit den kleinen Sprachmodellen nicht möglich.
LLM basierter Sprachassistent
Large Language Models verstehen keine Sprache – sie verstehen Zahlen, genauer Vektoren. Ein Sprachassistent der auf einem Large Language Model basiert, benötigt also weitere Systeme, die Sprache in Vektoren und Vektoren in Sprache umwandeln können.
Die sprachliche Eingabe muss auch hier zunächst in einen Text umgewandelt werden. Also ist der erste Bestandteil die "Automatic Speech Recognition". Zuerst wird auch hier "Noise-Removal" und "Lowercasing" durchgeführt, dann wird der Text in seine Einzelteile zerlegt. Dafür verwenden man einen "Tokenizer". Diese NLP-Technologie zerlegt den Text in kleinere Einheiten. Möglich sind Sätze, Wörter, Wort-Stücke oder Buchstaben. Wir nehmen jetzt Wörter an, weil diese Einheit für Menschen leicht nachzuvollziehen ist. Diese Tokens werden im "Embedding-Layer" zu einem Vektor zugeordnet, welcher die Bedeutung angibt.
Lebewesen | katzenartig | menschlich | Geschlecht | Adel | Verb | Plural | |
---|---|---|---|---|---|---|---|
Katze | 0,6 | 0,9 | 0,1 | 0,4 | -0,7 | -0,3 | -0,2 |
Kätzchen | 0,5 | 0,8 | -0,1 | 0,2 | -0,6 | -0,5 | -0,1 |
Hund | 0,7 | -0,1 | 0,4 | 0,3 | -0,4 | -0,1 | -0,3 |
Häuser | -0,8 | -0,4 | -0,5 | 0,1 | -0,9 | 0,3 | 0,8 |
Mann | 0,6 | -0,2 | 0,8 | 0,9 | -0,1 | -0,9 | -0,7 |
Frau | 0,7 | 0,3 | 0,9 | -0,7 | 0,1 | -0,5 | -0,4 |
König | 0,5 | -0,4 | 0,7 | 0,8 | 0,9 | -0,7 | -0,6 |
Königin | 0,8 | -0,1 | 0,8 | -0,9 | 0,8 | -0,5 | -0,9 |
Die Vektoren von LLMs, die man auch Embeddings nennt, haben deutlich mehr als die 7 Dimensionen bei dem Gezeigten. Googles Bert(Bidirectional Encoder Representation Transformer) hat 768 Dimensionen, OpenAIs GPT-2 (Generative Pre-Trained Transformer) hat 1600 Dimensionen und GPT-3 hat 12288 Dimensionen.
Diese Vektoren bilden die Bedeutnung von Wörtern ab. LLMs können so die Bedeutung von Wörtern "verstehen". Katze und Kätzchen haben ähnliche Zahlen in allen Dimensionen, also müssen sie sich stark ähneln.
Hund und Königin haben sehr ähnliche Werte in Lebewesen sowie katzenartig. Aber unterscheiden sich stark in Adel und Geschlecht.
Das verstehen von Wörtern ist allerdings nicht die Aufgabe, LLMs sollen Texte verstehen. Dafür sind die Attention-Layer da. Diese übernehmen bei einem LLM die Aufgabe des text enrichments. Anfangs wird ein Verb gefunden, dann Substantive, dann alle anderen Satzteile definiert, dann werden die Beziehungen zwischen den Satzteilen definiert und über die Satzgrenzen hinaus. All diese Informationen werden in den Wortvektoren gespeichert. Hierbei zeigt sich warum Large Language Model als Large (groß) bezeichnet werden. Die Eingabe für ChatGPT kann bis zu 1500 Wörter lang sein und die Analyse geht deutlich tiefer. ChatGPT hat 96 Attention-Layer, nach 60 Ebenen stehen in den 12288 Dimensionen einiges an Informationen. Ein Beispiel (Übersetzung durch den Autor) wenn wir eine Kurzgeschicte als Eingabe nehmen, könnte in der 60. Ebene ein Vektor für John stehen mit den Information: Substantiv, männlich, Name, Hauptperson, verheiratet mit Cheryl, Cousin von Donald, von Minnesota momentan in Boise, versucht seine verlorengegangene Geldbörse zu finden. Und das ganze als Liste von Zahlen codiert.
Allerdings ist das Verstehen von Wörtern gar nicht das Interessanteste an Wortvektoren. Man kann mit Vektoren rechnen. Und wenn die Vektoren Wörter darstellen, dann kann man logisch denken.
Die Wortvektoren von Google konnten Analogieaufgaben lösen. (Übersetzung durch den Autor)
Paris ist zu Frankreich wie Berlin zu Deutschland
Unethisch ist zu ethisch wie möglich zu unmöglich
Maus ist zu Mäuse wie Dollar zu Dollars
Mann ist zu König wie Frau zu Königin
Ein LLM weiß wie Texte funktionieren, allerdings muss es, um als Sprachassistent eingesetzt zu werden, Dialog verstehen. Ein generisches LLM, auch "RAW" genannt, wird dazu mit Dialogdaten versorgt. Mit diesen kann es seine Parameter justieren, sodass die Ausgabe Antwortblöcke auf Fragen sind, die Antwort "natürlich" klingt und falsche, widersprüchliche oder anders unerwünschte Angaben unterbleiben. Dieses justieren nennt man "fine-tuning" und dies funktioniert auch mit Expertenwissen, also kann man Systeme zur Auto-Reperatur, medizinischer Diagnose und Investementtipps justieren.
So gelangen wir zu Systemen wie ChatGPT. Diese geben häufig keine Antwort, weil die Informationen in den Trainingsdaten nicht vorhanden sind. Dies kann man mit dem Toolformer-"Add-On" ändern. (nicht wirklich ein Add-On, sonden In-Context-Learning) Damit können LLMs Api-Calls ausführen, um Taschenrechner, Suchmaschinen, Datenbanken oder Question-Answer-Systeme zu verwenden.
Was ist besser?
Naja, das kommt drauf an. Will man ein geschlossenes System bauen wie beim Telefonbanking, dann reicht ein simples System. Wenn man ohnehin ein Call-Center betreibt, muss das neue System nicht alle Fragen beantworten können.
Will man hingegen ein offenes System wie Siri, Alexa, ChatGPT oder Bert aufbauen, benötigt man komplexere Systeme, also im mindesten Text Enrichment oder aber ein Large Language Model.
Zu diesem Thema
Bildquellen
- Durchs Schlüsselloch: stokkete | All Rights Reserved