Einführung in Natural Language Processing mit NLP++

Wer möchte nicht gerne das Wissen täglich neu entstehender Texte nutzen? Mit den Methoden von Natural Language Processing und der speziell für die Sprachanalyse entwickelten Programmiersprache NLP++ ist es möglich, Texte zu strukturieren, zu analysieren und das gesuchte Wissen nach den gewünschten Kriterien zu kategorisieren.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 14 Min.
Von
  • Dominik Holenstein
Inhaltsverzeichnis

Wer möchte nicht gerne das Wissen täglich neu entstehender Texte nutzen? Mit den Methoden von Natural Language Processing und der speziell für die Sprachanalyse entwickelten Programmiersprache NLP++ ist es möglich, Texte zu strukturieren, zu analysieren und das gesuchte Wissen nach den gewünschten Kriterien zu kategorisieren.

Da die menschliche Sprache sowohl in geschriebener als auch in gesprochener Form unstrukturiert ist und sich ständig verändert, ist ihre Analyse eine Herausforderung, aber nicht unmöglich. Neben der Analyse und Extrahierung von Wissen wird auch zunehmend öfter der umgekehrte Weg gegangen: den der Textproduktion. Aus halb- und vollstrukturierten Daten will man Texte generieren. Beides, die Textanalyse und die Textproduktion, kann man mit den Methoden des Natural Language Processing (NLP; im Deutschen oft mit Computerlinguistik übersetzt) realisieren.

Dass NLP ein zeitgemäßes Thema ist, beweisen zum Beispiel Publikationen aus dem Heise Zeitschriften Verlag in den letzten Monaten [1], [2], [3].

Es gibt immer mehr APIs und Tools für gängige Programmiersprachen, um das Analysieren und Strukturieren von Texten zu ermöglichen. Eine aktuelle Übersicht bietet diese Liste. Oft benutzen die damit einhergehenden Bibliotheken statistische Methoden und Algorithmen aus dem Machine Learning. Entwickler können aus verschiedenen Modulen wie Sentiment Analysis, POS-Tagger und Information Extraction die passenden Funktionen auswählen und die Texte damit analysieren.

Diese Systeme sind Blackboxen, das heißt, man weiß bei proprietären Systemen nicht genau, wie sie intern funktionieren. Anpassungen nach Kundenwünschen sind möglich, können aber zeitlich und technisch aufwendig sein. Bei Systemen wie dem Natural Language Toolkit oder bei Stanford CoreNLP hingegen ist die Transparenz durch die Open-Source-Lizenzen vorhanden. Wer schnell mit seiner Alltagsprogrammiersprache zum Ziel kommen will oder muss, macht sicherlich nichts falsch, wenn man sich für eine dieser Blackbox-Angebote entscheidet.

VisualText ist eine IDE für das Entwickeln von Text-Analyzern, und NLP++ wurde speziell für das Analysieren von Sprache entwickelt und basiert auf dem Glasbox-Konzept. Hier bekommt man keine vorgefertigte API oder Module geliefert, sondern entwickelt den Text-Analyzer von Grund auf und themenbezogen selbst. Das hat Vor- und Nachteile. Eine Hürde ist sicherlich, dass man mit NLP++ eine neue Programmiersprache lernen muss. Dazu liefert die Online-Hilfe von VisualText viel Material und ausführliche Tutorials.

Im Gegensatz zu anderen bekannten Programmiersprachen, die für den universellen Einsatz gedacht sind, ist NLP++ eine auf C basierende DSL (Domain Specific Language) für das Natural Language Processing. Die Erfahrung der letzten zehn Jahre zeigt, dass sich auch Nichtprogrammierer mit der Sprache schnell zurechtfinden. Wer schon Programmiererfahrung hat (egal in welcher Sprache), merkt schnell, dass sich die Entwickler Amnon Meyers und David C. Hilsters viele Gedanken bei der Implementierung mit dem Fokus auf dem Analysieren von Sprache gemacht haben.

Sie haben nicht den statistischen, sondern den auf Regeln basierenden Ansatz gewählt. Der Vorteil liegt darin, dass Programmierer auf Basis der erkannten Regeln und Muster einen Text-Analyzer genau auf die Bedürfnisse des Kunden hin entwickeln können. Sie können das strikt nach linguistischen Kriterien durchführen (Morphologie, Syntax, Semantik usw.), aber auch die Texte nach den eigenen Musterdefinitionen analysieren und aufbereiten. Mit dem Glasbox- und dem auf Regeln basierenden Ansatz erreicht man, dass ein Analyzer sehr genau sowie transparent ist und sich ständig weiterentwickeln lässt.