Da ich mich mit Textanalyse und Natural Language Processing beschäftigen möchte, werde ich in den nächsten Wochen viel zu diesen Themen dazulernen. Grundsätzlich geht es darum, eine große Menge an Textdaten auszuwerten, die im PDF-Format vorliegen. Hierbei soll eine semantische Textanalyse nach Ähnlichkeiten und Überschneidungen durchgeführt werden. Daraus sollen dann Diskursstränge extrahiert werden. Ich dachte mir: Wieso also nicht gleich einen Nutzen daraus ziehen und ein laufendes Tutorial erstellen?
Ab diesem Post beginnt also eine mehrteilige Serie zum Thema Textanalyse und Natural Language Processing. Natürlich stehe auch ich hierbei noch am Anfang. Aber während ich lerne, ergibt sich sicherlich eine Fülle an Informationen, die auch meinen Lesern nützlich sein können. Viel Freude damit!
Was ist Natural Language Processing?
Zuerst müssen wir natürlich klären, womit wir es überhaupt zu tun haben. Natural Language Processing (NLP) ist eine Unterform der künstlichen Intelligenz, mit deren Hilfe ein Computer dazu gebracht wird, natürliche Sprache zu verstehen und zu verarbeiten. Mit Hilfe von NLP kann ein Computer so trainiert werden, dass er aus Sprache oder Text Informationen extrahiert. Dies kann zum Beispiel eine simple Identifizierung von Substantiven, Verben, Adjektiven und Satzzeichen sein. Aber der Prozess kann auch so weit fortgeschritten sein, dass eine bestimmte in einem Text vertretene Einstellung des Autors ermittelt wird. Anwendungsbeispiele sind Chatbots für Kunden-Services, Autokorrekturprogramme auf Handys und digitale Assistenten wie Siri. Viel wichtiger für mein eigenes Projekt ist jedoch, dass NLP eine Stütze bei der Analyse großer Text-Datenmengen sein kann.
Die Anfänge der NLP liegen bereits in den 1940er Jahren. In den 1980er Jahren hat sich NLP als eigenständige Disziplin etabliert. Einhergehend mit Fortschritten in der Linguistik und der Entstehung der Computertechnologie entwickelte sich auch das Fach der NLP recht früh. Bis heute – viele Jahre später – hat das Feld einen Boom erfahren. Der Grund sind vor allem die inzwischen verfügbaren großen Datenmengen und die zunehmende Rechenleistung von Computern. Dabei ergaben sich einige Höhen und Tiefen, denn die menschliche Sprache ist vieldeutig. Sie entwickelt sich schnell und chaotisch. Es ist eine Herausforderung, diesen Nuancen mit Computertechnik gerecht zu werden. Um die menschliche Sprache vollkommen zu verstehen, reicht eine einfache Wortanalyse nicht aus. Auch die Beziehungen zwischen den Wörtern und die Konzepte um Bedeutung zu schaffen, müssen verstanden werden. Aufgrund seiner Ursprünge schließt NLP noch heute linguistische und mathematische Konzepte ein. (Beysolow II 2018, 3 und Millstein 2020, 7ff.)
Aktuelle NLP-Ansätze basieren meist auf Deep Learning. Letzteres ist ein Feld der künstlichen Intelligenz, welches Muster in Daten analysiert und nutzt, um diese für den Computer verständlich zu machen. Deep Learning Modelle benötigen große gekennzeichnete Datenmengen um zu trainieren und relevante und wichtige Daten-Korrelationen zu ermitteln. Genau diese Datenmengen zu erstellen ist eine der ersten Hürden der NLP (Millstein 2020, 22).
Der Prozess der Analyse durch NLP lässt sich in verschiedene Schritte aufteilen. Syntax und Semantik spielen hierbei eine wichtige Rolle. Syntax bezieht sich auf die strukturelle Anordnung von Wörtern in Sätzen, so dass diese grammatikalisch Sinn ergeben. NLP nutzt bestimmte Techniken, um über die Syntax einer Sprache deren Bedeutung zu analysieren. Verwendet werden zum Beispiel Aufsplittung der Syntax, Wort-Segmentierung, Satz-Aufbrechung, morphologische Segmentierung und Stammformreduktion. Was dies genau heißt und wie dabei vorgegangen wird, darauf gehe ich in einem späteren Teil dieser Tutorial-Reihe ein. Neben der Syntax analysiert NLP die Semantik, also die Nutzung und Bedeutung einzelner Wörter. Hierfür werden Techniken wie Wortsinn-Vereindeutigung, benannte Einheitenerkennung und natürliche Sprachgeneration angewandt. (Burns 2019) Auch hierauf werde ich später noch eingehen.
Es gibt bereits einige recht bekannte Werkzeuge und Schnittstellen, welche NLP-Services in Verbindung mit künstlicher Intelligenz anbieten. Wer ein wenig herumexperimentieren möchte, kann zum Beispiel den Demonstrator von TxtWerk ausprobieren: Hier. Das Tool kann einen Text über linguistische Analysen und maschinelles Lernen automatisiert verschlagworten und einem Ressort zuordnen. Es identifiziert unterschiedliche Entitäten wie Personen, Orten oder Organisationen im Text und verknüpft die identifizierten Begriffe mit zusätzlichen Informationen aus Wikidata. Natürlich ist dies nur ein kleiner Ausschnitt dessen, was über Textanalyse-Methoden möglich ist. Open-Source-Bibliotheken oder Tools sind des Weiteren Apache OpenNLP, Google Cloud Natural Language API und General Architecture for Text Engineering (GATE).
Ich werde im weiteren Verlauf dieser Tutorial-Reihe mit der Programmiersprache Python und den entsprechenden Bibliotheken arbeiten und euch dabei Schritt für Schritt mitnehmen.
Quellen
Beysolow II, Taweh. 2018. Applied Natural Language Processing with Python: Implementing Machine Learning and Deep Learning Algorithms for Natural Language Processing. San Francisco: Apress.
Burns, Samuel. 2019. Natural Language Processing: A Quick Introduction to NLP with Python and NLTK. 2. Auflage. Unabhängig veröffentlicht.
Millstein, Frank. 2020. Natural Language Processing with Python: Natural Language Processing Using NLTK. Unabhängig veröffentlicht.