Natural Language Processing Tools

Die Auswahl an Natural Language Processing Tools & Libraries wächst ständig. NLTK und spaCy sind die beliebtesten NLP-Tools.

Natural Language Processing (NLP) gehört heute zu den beliebtesten Anwendungsgebieten im Bereich Data Science. Entsprechend wächst die Zahl der verfügbaren Tools und Bibliotheken fortlaufend. Zwei der am weitesten verbreiteten NLP-Tools sind NLTK und spaCy, aber auch andere, wie z.B. Gensim

Jede dieser Bibliotheken bietet Unterstützung für verschiedene NLP Verarbeitungsschritte, wie z.B. Tokenisierung oder Stemming und hat ihre individuellen Stärken und Schwächen. Die Entscheidung, welche die geeignetste Bibliothek ist, hängt stark vom konkreten Anwendungsfall ab.

Die meisten NLP Bibliotheken unterstützen verschiedene menschliche Sprachen. Alternativ hat der Benutzer die Möglichkeit, seine eigenen Sprachmodelle zu trainieren, was aber einen ausreichend großen Korpus voraussetzt.
Die hier vorgestellten Natural Language Processing Bibliotheken dienen der Vorverarbeitung eines Dokumentenkorpus, d.h. aller Schritte, die erforderlich sind, um die Texte zu bereinigen und für die Verarbeitung durch maschinelle Lernalgorithmen vorzubereiten. Das Training der Machine Learning Modelle erfolgt dann mit spezifischen Bibliotheken, wie scikit-learn oder TensorFlow.

Natural Language Toolkit (NLTK)

Das Natural Language Toolkit (NLTK) ist die am längsten existierende NLP-Bibliothek für Python. NLTK unterstützt Tokenisierung, Stemming, Part-Of-Speech (POS)-Tagging und Named Entity Recognition (NER), sowie über 50 Korpora- und lexikalische Ressourcen. Darüber hinaus ist NLTK eine gute Wahl in Industrie und Forschung, da es eine Vielzahl von Algorithmen zur Auswahl anbietet. Die Korpora ermöglichen, neben Englisch, die Unterstützung weiterer Sprachen wie Spanisch, Portugiesisch und Hindi. Darüber hinaus unterstützt NLTK unter anderem den Snowball Stemmer, der derzeit für die meisten indoeuropäischen Sprachen verfügbar ist und somit eine gute Abdeckung bietet. Nach unserer Erfahrung ist NLTK die beste Bibliothek für einfache NLP Probleme.

spaCy

SpaCy ist die derzeit trendigste in Python und Cython implementierte NLP-Bibliothek. SpaCy bietet neuronale Modelle für Tagging, Parsing, Entity Recognition und Lemmatizing - im Gegensatz zu NLTK, das zwar Stemming, aber kein Lemmatizing bietet. Derzeit enthält spaCy vortrainierte Modelle für die am häufigsten verwendeten europäischen Sprachen. Die Bandbreite der Sprachen wird stetig erweitert.

SpaCy ist eine gute Wahl für die meisten Industrieanwendungen. In Summe werden zwar weniger verschiedene Algorithmen unterstützt, jedoch wurden für die jeweiligen Einsatzzwecke von den Entwicklern die aktuell besten verfügbaren, hinsichtlich Präzision und Geschwindigkeit, integriert.

SpaCy ist insbesondere auch für anspruchsvolle NLP Probleme geeignet.

Weitere Natural Language Processing (NLP) Tools

Neben NLTK und spaCy gibt es noch weitere, ausschließlich für NLP Anwendungen entwickelte, erwähnenswerte Bibliotheken:

  • Gensim, ebenfalls eine Python-basierte Bibliothek. Gensim ist darauf ausgerichtet, Ähnlichkeiten in Texten zu finden (mit Algorithmen wie Word2Vec), automatische Zusammenfassungen von Dokumenten zu erstellen und Keyword-Extraction durchzuführen.
  • CoreNLP, entwickelt von der University of Stanford, ist eine Java-basierte Bibliothek, die POS-Tagging, Entitätserkennung und Sentimentanalyse bietet. Sie unterstützt in erster Linie Englisch, kann aber auf einige wenige andere Sprachen wie Deutsch, Arabisch und Chinesisch erweitert werden.
  • TreeTagger ist ein Werkzeug für POS und Lemmatizing, welches von einer Vielzahl von Sprachen unterstützt wird. TreeTagger kann als eigenständiges Paket verwendet werden. Umfasst werden auch eine Reihe von Wrappern, etwa für Python, Java und JavaScript.
  • fastText ist eine weitere Python-Bibliothek für Textklassifikation und Representation Learning, die auch eine sehr schnelle Spracherkennungs-API bietet.

Ein Vergleich basierend auf unseren Natural Language Processing (NLP) Erfahrungen

Zusätzlich zu den Standard ML-Bibliotheken (scikit-learn, TensorFlow, ....) setzen wir im Python Umfeld stark auf NLTK und spaCy. NLTK ist dabei oft die Wahl für erste schnelle Analysen, stößt aber auch schnell an seine Grenzen, insbesondere hinsichtlich der Performance. Daher setzen wir bei fortgeschritteneren NLP-Pipelines stark auf spaCy, welche sehr akkurate Ergebnisse in kürzerer Zeit liefert.

Fazit

Die beiden führenden Bibliotheken in NLP sind NLTK und spaCy, die sehr ähnliche Funktionen und Abdeckungen von vortrainierten Sprachmodellen aufweisen. Beide Bibliotheken unterstützen den Prozess vom Data Preprocessing bis zum Feature Engineering, dessen Ergebnisse dann mit klassischen Machine Learning Bibliotheken, z.B. scikit-learn, verwendet werden können, um Modelle zu trainieren und Vorhersagen zu treffen.
Welche Bibliothek die bessere ist, hängt stark vom Anwendungsfall ab. Nach unserer Erfahrung bietet NLTK viel Freiheit in der Wahl der Algorithmen und einen sehr einfachen Start. Für komplexere NLP-Pipelines ist spaCy jedoch die bessere Wahl.

Mehr zu technologischen Themen

Ausgewählte Beiträge

Kein Spam, versprochen
Erhalten Sie wertvolle Insights von unserem Expertenteam.