Blog der SHI GmbH

Open Source Natural Language Processing (NLP)

Mit der exponentiell steigenden Menge an unstrukturierten Daten wird deren Verarbeitung ein immer zentraleres Thema. Als Unternehmen, das sich täglich mit Suche in Daten beschäftigt, ist die Verarbeitung dieser Daten unter dem Gesichtspunkt optimaler Auffindbarkeit von immenser Bedeutung. Die Kerntechnologien, die als Suchmaschinen aus dem Open Source Umfeld eingesetzt werden, beherrschen selbstverständlich bereits einen beträchtlichen Teil von Schritten in diesen Szenarien. Am Beispiel Solr ist dies schnell ersichtlich: Solr kann Text, der indexiert wird, in sogenannten Analyseketten zerlegen (Tokenisierung), sprachwissenschaftliche Operationen durchführen (Stemming), auf Basis des Inhalts die Sprache erkennen, in der ein Text verfasst ist (Sprachenerkennung in UpdateProcessors), oder sogar indexierte Dokumente mittels Streaming Expressions klassifizieren. Alle Operationen sind auf ein hohes Maß an Skalierbarkeit ausgelegt. Hunderte oder tausende Dokumente pro Sekunde indexieren ist ebenso wie hunderte oder tausende Suchanfragen pro Sekunde zu beantworten längst kein Ding der Unmöglichkeit mehr.

Mit modernen Suchmaschinen lassen sich also bereits einige Herausforderungen meistern, die in der heutigen Zeit relevant sind. Doch das Anforderungsprofil von modernen Anwendungen geht immer häufiger weit darüber hinaus, was anhand einiger Beispiele illustriert wird.

 

Inhaltsanreicherung – Named Entity Recognition (NER)

Eine Herausforderung, der wir uns wiederholt stellen, ist die Anreicherung von Inhalten. Dadurch soll die Auffindbarkeit der indexierten Dokumente verbessert werden. Das kann durchaus unterschiedliche Ausprägungen haben. Eine Möglichkeit der Inhaltsanreicherung ist das Erkennen von Entitäten, oder auch Named Entity Recognition. Hierbei wird versucht zu erkennen, welche Personen, Orte, Organisationen oder ähnliches in einem Text vorkommen. Die erkannten Entitäten können dann in separaten Feldern indexiert werden, was wiederum zielgerichtete Autosuggest-Funktionen oder Facetten auf diesen Entitäten ermöglicht.

Inhaltsanreicherung – Sentiment Analysis

Doch Inhaltsanreicherung kann durchaus mehr sein: Die Ermittlung, ob es sich bei einem Text um etwas positiv Geschriebenes oder etwas negativ Geschriebenes handelt (z.B. bei Produktrezensionen), kann helfen, automatisiert herauszufinden wie Interaktionen mit einer Plattform gemeint sind. Derartige Analysen, die ermitteln ob ein Text positiv oder negativ konnotiert ist, wird auch Sentiment Analysis genannt.

Inhaltsanreicherung – Koreferenz-Auflösung

Die Auflösung von Koreferenzen ist vor allem in Texten von mindestens der Länge eines Artikels relevant. Hierbei geht es darum, zu verstehen welche zwei sprachlich unterschiedlichen Ausdrücke dasselbe Objekt bezeichnen:

Daniel Wrigley ist Search & Analytics Consultant. Er arbeitet fĂĽr die SHI GmbH.

Daniel Wrigley und Er sind hier Referenten, die dieselbe Person bezeichnen. Kontextabhängig könnte Er natürlich auch ein Referent für eine andere Person sein, dies ist jedoch in diesem kurzen Textabschnitt nicht ersichtlich. Es handelt sich also auch hier um kein triviales Unterfangen, Koreferenzen in deutschen Texten zu erkennen und aufzulösen. Hat man Koreferenten aufgelöst, können sogar noch weitere Informationen extrahiert werden. In oberem Beispiel wäre das die Beziehung zwischen Daniel Wrigley und SHI GmbH. Es handelt sich hierbei um ein Arbeitgeber/Arbeitnehmer-Verhältnis, das für eine Maschine nicht trivial zu erkennen ist, wenn die beiden Referenten nicht aufgelöst sind.

 

Weitere Features von OpenNLP

Für diese drei Aufgaben kann OpenNLP verwendet werden. Doch der Leistungsumfang dieses Open Source Projektes ist nochmal deutlich größer als die drei erwähnten Features.

Weitere Features beinhalten:

•    Satzerkennung: Zerlegung eines Textes in Sätze.
•    Tokenisierung: Zerlegen von Texten in einzelne Tokens, meist Wörter.
•    Klassifikation: Einteilung von Texten zu Klassen.
•    Part-of-Speech Tagging: HinzufĂĽgen linguistischer Informationen, um welche Wortart es sich bei einem Wort bzw. beim Kontext des Wortes handelt.
•    Lemmatisierung: Grundformermittlung eines Wortes.
•    Chunking: Aufteilen des Textes in syntaktisch verknĂĽpfte Einheiten.

OpenNLP bietet also ein recht umfangreiches Toolset zur Verarbeitung von natĂĽrlicher Sprache, was eine Kombination mit Suchmaschinen nicht nur nahelegt, sondern sinnvoll macht.

 

Natural Language Processing mit Spark

Doch nicht nur OpenNLP ist eine passende Ergänzung für Suchmaschinen. Im Open Source Bereich lassen sich einige weitere Tools finden, die sich perfekt für Anforderungen aus dem Natural Language Processing eignen. Dazu gehört auch Apache Spark. Spark ist grundsätzlich für beinahe jedes Datenverarbeitungsszenario denkbar oder sogar ein absoluter Gewinn. Auch wenn Spark hauptsächlich in Scala geschrieben ist, bietet es neben einer Scala, Java und R API auch eine für Python. Dies ist besonders erwähnenswert, da es für Python einige Bibliotheken gibt, die sich für die Verarbeitung von Sprache etabliert haben, somit auch mit Spark verwendbar sind.

Aber nicht nur durch die Integration von Bibliotheken, sondern durch bereits enthaltene Funktionalitäten lohnt sich ein Blick in Richtung Spark. Funktionalitäten aus dem Bereich der Computerlinguistik, also der maschinellen Verarbeitung natürlicher Sprache sind Klassifikation und Clustering sowie zugehörige, dafür notwendige Techniken und Methoden, z.B. die Extraktion von Features für die Erstellung eines Klassifikationsmodells.

Dass es eine Spark/Solr Integration gibt, entwickelt von unserem Partner Lucidworks, ist natürlich auch von großer Bedeutung, nachdem so die Indexierung großer Datenmengen sowie Suchen und Weiterverarbeitung von Suchergebnissen (z.B. Klassifikation oder Clustering) und ein Zurückspielen der Daten bzw. der Ergebnisse der Weiterverarbeitung einfach möglich sind.

Open Source Natural Language Processing

Die Verarbeitung von natürlicher Sprache spielt in modernen Applikationen durch die exponentielle Zunahme derartiger Daten eine immer zentralere Rolle. Sprachwissenschaftliche Aufgabenstellungen werden aufgrund des lebendigen Charakters von Sprachen nie gesamtheitlich gelöst sein, können aber gut durch Tools und Methoden aus dem Open Source Bereich unterstützend angegangen werden. Gerade in Kombination mit Suchmaschinentechnologien bilden sie ein starkes Gespann, das selbst vor riesigen Datenmengen aufgrund maximaler Skalierbarkeit zurückschrecken muss. Sie wissen aber noch nicht, ob OpenNLP oder Spark die richtigen Tools für Sie sind? Sie haben Fragestellungen zu Natural Language Processing, Extraktion von Informationen, Anreicherung von Inhalten oder ähnlichem? Dann vereinbaren Sie für ein erstes Gespräch gerne einen Termin mit einem unserer Experten.

Daniel Wrigley

Daniel Wrigley