Methoden aus den Sprachwissenschaften, Big-Data Techniken und Künstliche Intelligenz (KI) ermöglichen das Erkennen und Verarbeiten natürlicher Sprache.
In der Praxis ist Natural Language Processing eine Sammlung von Werkzeugen und Methoden, die es einem Computer ermöglicht, menschliche schriftliche oder gesprochene Sprache zu verarbeiten. Die Schritte in einem Projekt variieren nach Anwendungsfall, aber einige sind fast immer vorzufinden. Beispielsweise wollen wir die in einem Text verwendete Sprache erkennen und nach den Regeln der erkannten Sprache normalisieren. Jeder Verarbeitungsschritt kann vom Entwickler manuell definiert oder mit Hilfe von vortrainierten Machine Learning Modellen durchgeführt werden. Da immer mehr Trainingsdaten und Rechenleistung zur Verfügung stehen, sind handgefertigte Regeln zunehmend nicht mehr notwendig, aber oft noch hilfreich, um Sonderfälle abzudecken.
Eine typische Natural Language Processing (NLP)-Pipeline kann wie folgt aussehen:
Spracherkennung
Der einfachste Weg, die Sprache eines Textes zu ermitteln ist die Suche nach typischen Wörtern in dieser Sprache. Das Vorhandensein von "a", "and", "is", "are" und so weiter ist ein starker Indikator dafür, dass der Text Englisch ist.
Fortgeschrittenere Ansätze verwenden große Mengen an Text in verschiedenen Sprachen und trainieren einen Klassifikator um die Sprache zu bestimmen. Die führenden Modelle sind in der Lage eine Sprache mit sehr hoher Genauigkeit zu bestimmen und auch die Verwendung mehrerer Sprachen im gleichen Text zu erkennen.
Part-of-Speech Tagging
Das Wort "type" in " I can type 50 words a minute " ist ein Verb, während es in "He is not my type" ein Substantiv ist. Wir können also die grammatikalische Funktion für jedes Wort bestimmen und entsprechend mit Tags markieren. Diese Tags fügen dem Text einen Kontext hinzu und erleichtern es einem Computer, die "richtige" Bedeutung zu verstehen.
Modelle des Machine Learning können diese Tags automatisiert bestimmen und Abhängigkeiten zwischen ihnen analysieren, indem sie verschiedene algorithmische Ansätze wie Hidden-Markov-Modelle, Entscheidungsbäume oder neuronale Netze verwenden. Vortrainierte Modelle gibt es für viele Sprachen und Frameworks.
Stemming und Lemmatizing
Um einen Text zu normalisieren, können wir ihn in einzelne Wörter oder Token aufteilen und den Wortstamm der Token ableiten. Hier sind die Sprache selbst und Teilinformationen der Sprache nützlich. Zum Beispiel könnte die normalisierte Form von "Reading" "read" sein, wenn es sich um eine Verbform handelt, aber wenn wir über die englische Stadt sprechen, bleibt es "Reading". Dieser Prozess wird als Lemmatizing bezeichnet. Stemming ist ein einfacherer, aber auch effektiver Ansatz, der Regeln wie: " entferne jede Endung -s und -ity " verwendet. Dies transformiert z.B. "rises" in "rise" und "plurality " in "plural". Ein bekanntes Regel-Set ist der Porter-Stemmer.
Weitere Schritte in der Pipeline könnten die Erkennung von Entitäten sein – die Erkennung von Personennamen, Unternehmen, Produkten usw. – oder die Erstellung von Embeddings - die Zuordnung von Wörtern zu numerischen Vektoren – sein. Jeder Schritt transformiert und reichert den Text weiter an, was ihn für weitere Aufgaben besser geeignet macht. Beispielsweise ist es einfacher aus einem solchen angereicherten Text sinnvolle Features abzuleiten und an spezialisierte Algorithmen zu übergeben, um das Textthema zu klassifizieren, Schlüsselwörter zu extrahieren oder mit anderen Dokumenten zu vergleichen.
Immer öfter werden die Herausforderungen in Natural Language Processing mit Hilfe von Deep LearningTechniken angegangen und dabei bemerkenswerte Erfolge erzielt.
Deep Learning in der NLP-Forschung nutzt riesige Mengen an Trainingsdaten und Rechenleistung, um eine neuronale Netzwerkarchitektur zu trainieren, die mit den Komplexitäten und Herausforderungen der natürlichen Sprache umgehen soll, anstatt wie bisher kleinere, individuell zugeschnittene Schritte zu implementieren.
BERT und GPT-2 nehmen zum Beispiel (fast) unverarbeiteten Text, verstehen aber implizit, wie "rise" und "rises" zusammenhängen. Aus dem Kontext eines Satzes verstehen sie auch den Unterschied zwischen einem "shot of whiskey" und einem "shot in the dark" oder die Ähnlichkeit zwischen einem "colleague" und einem "co-worker". Diese Modelle werden trainiert, indem man versucht, das nächste Wort in einem Satz oder das fehlende Wort in einem Satz vorherzusagen. Die beeindruckenden Ergebnisse bei einigen NLP-Aufgaben, wie der Generierung von Embeddings und der Textklassifikation, gelten eher als ein Nebenprodukt des hohen allgemeinen Sprachverständnisses, das die Modelle aus diesem umfangreichen Training erzielen.
Viele Natural Language Processing (NLP)-Techniken, wie die Erkennung von Named Entities und Spracherkennung, oder die Anreicherung eines Textes mit syntaktischen oder semantischen Informationen, wie Lemmatizing und Part-of-Speech-Tagging, sind für sich alleine bereits nützlich.
Sie können helfen, ein besseres Bild von der Textstruktur und der beabsichtigten "Bedeutung" zu gewinnen. Je nach Aufgabenstellung können wir eine NLP-Pipeline maßschneidern oder einzelne Machine Learning Modelle nutzen, um sie zu lösen.