Natural Language Processing ist ein Teilbereich von Computer Science, der sich damit beschäftigt natürliche Sprache, also beispielsweise Texte oder Sprachaufnahmen, verstehen und verarbeiten zu können. Das Ziel ist es, dass eine Maschine in der gleichen Weise mit Menschen kommunizieren kann, wie es Menschen untereinander bereits seit Jahrhunderten tun.
Was sind die Bereiche von NLP?
Eine neue Sprache zu erlernen ist auch für uns Menschen nicht einfach und erfordert viel Zeit und Durchhaltevermögen. Wenn eine Maschine natürliche Sprache erlernen will, ist es nicht anders. Deshalb haben sich einige Teilbereiche innerhalb des Natural Language Processings herausgebildet, die notwendig sind, damit Sprache komplett verstanden werden kann.
Diese Unterteilungen können auch unabhängig voneinander genutzt werden, um einzelne Aufgaben zu lösen:
- Speech Recognition versucht aufgezeichnete Sprache zu verstehen und in textuelle Informationen umzuwandeln. Das macht es für nachgeschaltete Algorithmen einfacher die Sprache zu verarbeiten. Speech Recognition kann jedoch auch alleinstehend genutzt werden, beispielsweise um Diktate oder Vorlesungen in Text zu verwandeln.
- Part of Speech Tagging wird genutzt um die grammatikalische Zusammensetzung eines Satzes zu erkennen und die einzelnen Satzbestandteile zu markieren.
- Named Entity Recognition versucht innerhalb eines Textes Wörter und Satzbausteine zu finden, die einer vordefinierten Klasse zugeordnet werden können. So können dann zum Beispiel alle Phrasen in einem Textabschnitt markiert werden, die einen Personennamen enthalten oder eine Zeit ausdrücken.
- Sentiment Analysis klassifiziert das Sentiment, also die Gefühlslage, eines Textes in verschiedene Stufen. Dadurch kann beispielsweise automatisiert erkannt werden, ob eine Produktbewertung eher positiv oder eher negativ ist.
- Natural Language Generation ist eine allgemeine Gruppe von Anwendungen mithilfe derer automatisiert neue Texte generiert werden sollen, die möglichst natürlich klingen. Zum Beispiel können mithilfe von kurzen Produkttexten ganze Marketingbeschreibungen dieses Produkts erstellt werden.
Welche Algorithmen nutzt man für NLP?
Die meisten, grundlegenden Anwendungen von NLP können mit den Python Modulen spaCy und NLTK umgesetzt werden. Diese Bibliotheken bieten weitreichende Modelle zur direkten Anwendung auf einen Text, ohne vorheriges Trainieren eines eigenen Algorithmus. Mit diesen Modulen ist ohne weiteres ein Part of Speech Tagging oder Named Entity Recognition in verschiedenen Sprachen möglich.
Der Hauptunterschied zwischen diesen beiden Bibliotheken ist die Ausrichtung. NLTK ist vor allem für Entwickler gedacht, die eine funktionierende Applikation mit Natural Language Processing Modulen erstellen wollen und dabei auf Performance und Interkompatibilität angewiesen sind. SpaCy hingegen versucht immer Funktionen bereitzustellen, die auf dem neuesten Stand der Literatur sind und macht dabei möglicherweise Einbußen bei der Performance.
Für umfangreichere und komplexere Anwendungen reichen jedoch diese Optionen nicht mehr aus, beispielsweise wenn man eine eigene Sentiment Analyse erstellen will. Je nach Anwendungsfall sind dafür noch allgemeine Machine Learning Modelle ausreichend, wie beispielsweise ein Convolutional Neural Network (CNN). Mithilfe von Tokenizern von spaCy oder NLTK können die einzelnen in Wörter in Zahlen umgewandelt werden, mit denen wiederum das CNN als Input arbeiten kann. Auf heutigen Computern sind solche Modelle mit kleinen Neuronalen Netzwerken noch relativ schnell trainierbar und deren Einsatz sollte deshalb immer erst geprüft und möglicherweise auch getestet werden.
Jedoch gibt es auch Fälle in denen sogenannte Transformer Modelle benötigt werden, die im Bereich des Natural Language Processing aktuell state-of-the-art sind. Sie können inhaltliche Zusammenhänge in Texten besonders gut mit in die Aufgabe einbeziehen und liefern daher bessere Ergebnisse beispielsweise bei der Machine Translation oder bei Natural Language Generation. Jedoch sind diese Modelle sehr rechenintensiv und bedeuten eine sehr lange Rechenzeit auf normalen Computern.
Was sind die Unterschiede zwsichen NLU und NLP?
Die Begriffe Natural Language Understanding und Natural Language Processing werden fälschlicherweise oft durcheinander gebracht. Natural Language Processing ist ein Teilbereich von Computer Science, der sich damit beschäftigt natürliche Sprache, also beispielsweise Texte oder Sprachaufnahmen, verstehen und verarbeiten zu können. Das Ziel ist es, dass eine Maschine in der gleichen Weise mit Menschen kommunizieren kann, wie es Menschen untereinander bereits seit Jahrhunderten tun.
Somit ist NLU nur ein, wenn auch essenzieller, Teilbereich von NLP, der den Ausgangspunkt dafür bildet, dass die Sprache richtig verstanden wurde. Das bedeutet auch, dass die Qualität von NLP immens davon abhängt, wie gut das Verstehen des Textes war. Auch deshalb liegt vor allem auf dem Textverständnis gerade ein großer Fokus in der Forschung.
Welche Anwendungen nutzen Natural Language Processing?
Die Anwendungsmöglichkeiten für Natural Language Processing sind sehr breit gefächert und es kommen auch in regelmäßigen Abständen neue hinzu. Zu den aktuell verbreitesten Use-Cases gehören:
- Machine Translation, also das automatisierte Übersetzung von einem Text in eine andere Sprache.
- Chatbots bezeichnet eine Schnittstelle für eine automatisierte Kommunikation zwischen einem Menschen und einer Maschine. Dabei muss auf die inhaltlichen Fragestellungen des Menschen eingegangen werden können.
- Text Summarization werden genutzt, um große Textmengen schneller durchforsten zu können, indem lediglich eine geeignete Zusammenfassung gelesen wird. Neueste Modelle, wie beispielsweise GPT-3, können dabei auch verschiedene Zusammenfassungen mit unterschiedlichen Schwierigkeitsleveln erstellen.
Das solltest Du mitnehmen
- Natural Language Processing ist ein Teilbereich der Computer Science, der versucht natürliche Sprache für Maschinen verständlich und verarbeitbar zu machen.
- Die Python Module spaCy und NLTK sind die Grundbausteine für die meisten Applikationen.
- Es ist eines der aktuellsten Themen im Bereich des Machine Learnings und erfährt viele neue Innovationen.
Andere Beiträge zum Thema Natural Language Processing
- In diesem Beitrag findest Du eine Liste von kostenlosen Tools mit welchen man direkt online Natural Language Processing Aufgaben umsetzen kann.