Trendanalysen mithilfe von Geodaten

Seite 2: Open-Source-Software

Inhaltsverzeichnis

Das breite Spektrum verfügbarer Open-Source-Software bietet erfreulicherweise alle benötigten Komponenten, um die zuvor skizzierte Idee eines Trendbarometers zu implementieren. Das System basiert hauptsächlich auf zwei bewährten Projekten: Apache Nutch als Webcrawler und Elasticsearch als Index- und Analyseplattform. Hinzu kommen frei erhältliche Geodaten und Bibliotheken zur Textanalyse und Geolokalisierung.

Der Weg von online verfügbaren Daten zu einem Datenpunkt in einer Heatmap lässt sich als Verarbeitungspipeline verstehen, in der fünf aufeinanderfolgende, automatisierte Arbeitsschritte die Rohdaten auf dieselbe Art aufbereiten wie der menschliche Akteur im einführenden Beispiel.

Schematische Verarbeitungspipeline (Abb. 2)

Apache Nutch 2 ist ein in Java geschriebener Webcrawler. Das Projekt wird aktiv entwickelt, läuft stabil und kann durch einen Hadoop-Unterbau bequem skalieren. Darüber hinaus bringt das System eine Menge von Funktionen mit und bietet mit seiner modularen Plug-in-Architektur zahlreiche Möglichkeiten für eigene Erweiterungen. Der Preis ist eine steile Lernkurve aufgrund der begrenzten Dokumentation. Da Webcrawling kein populäres Thema ist, finden sich nur relativ wenige Blogartikel mit Tutorials. Dem steht ein verständlicher Quellcode gegenüber, der an vielen Stellen hilft, das eigene Verständnis zu erweitern.

Nutch lässt sich wahlweise auf einem existierenden Hadoop-Cluster oder im Stand-alone-Modus betreiben. Er benötigt eine NoSQL-Datenbank für die Persistenz, um dort Betriebsdaten abzulegen. Apache Gora kommt als Abstraktionslayer zum Einsatz, sodass verschiedene Persistenzlösungen wie HBase, Cassandra oder MongoDB zur Auswahl stehen. Dabei gilt jedoch zu beachten, dass die Zusammenarbeit jeweils auf bestimmte Versionen begrenzt ist. Die Erfahrungen des Autors zeigen, dass die Kombination sowohl mit HBase als auch mit MongoDB gut funktioniert. Aufgrund der etwas einfacheren Administration lautet die Empfehlung MongoDB.

Nutch versteht sich von Haus aus mit Elasticsearch – momentan allerdings nur mit der Versionsreihe 1.7. Mit dem kommenden Release soll sich das aber ändern.

Webcrawling läuft in Nutch als Batchprozess ab, an dessen Ende eine Reihe bearbeiteter und mit Metadaten versehene Webseiten stehen. Sie lassen sich in eine Datenbank oder einen Volltextindexer wie Elasticsearch exportieren, um sie zugreifbar und durchsuchbar zu machen. Die NoSQL-Datenbank kommt während des Crawling als interne Arbeitsdatenspeicher zum Einsatz, um beispielsweise Link-Graphen zu speichern.

Für das Trendbarometer müssen Anwender die Arbeitsweise des Crawler anpassen: Standardmäßig startet Nutch mit einer initialen Menge von URLs, der sogenannten Seed. Die Software lädt sie herunter, parst und analysiert sie, um sie schließlich zusammen mit einigen Metadaten in der NoSQL-Datenbank zu speichern. Das anschließende Exportieren der Inhalte in den Index schließt einen Durchgang ab. Beim nächsten Durchlauf greift Nutch auf die bereits gecrawlten Daten in seiner Datenbank zurück und selektiert dort neue Links. Dabei nutzt der Crawler die Menge der URLs, die er beim Parsen in den Quelltexten anderer Dokumente gefunden hat.

Auf die Weise hangelt er sich automatisch durch das Netz, was der ebenfalls gebräuchliche Name "Web Spider" unterstreicht. Im Detail ist der Prozess etwas ausgefeilter: Die Software gewichtet Seiten und Links und sucht bei der Auswahl von URLs regelmäßig bereits besuchte Seiten erneut aus, da das Web nicht statisch ist. Zusätzlich lässt sich das Verhalten von Nutch mit zahlreichen Regeln steuern.

Für das Trendbarometer ist eine Fokussierung auf Webseiten wünschenswert, die Newsartikel publizieren. Dabei kann es sich um Online-Auftritte von Zeitungen oder fachlich relevante Blogs handeln. Entsprechende Sites haben in der Regel eine Start- oder Indexseite, auf der alle aktuellen Artikel verlinkt sind. Wenn der Crawler jene Startseiten häufig genug besucht und alle von dort erreichbaren Meldungen erfasst, sollte er im Normalfall alle neu publizierten Inhalte mitbekommen.

Unter dieser Prämisse lässt sich Nutch mit wenigen Anpassungen in die Lage versetzen, nur die relevanten Seiten zu verarbeiten. Dazu ist das Sammeln aller Startseiten und das Zurücksetzen der vom Crawler genutzten Datenbank nach jedem zweiten Durchlauf erforderlich. Durch Deduplikation der News anhand ihrer URL und dem Verbot, externen Links zu folgen, liefert Nutch in der beschriebenen Konfiguration nach jeweils zwei Durchgängen alle neu publizierten Artikel.

Nutch versteht sich auf die Extraktion von Volltext und einer Reihe von Metadaten aus den gecrawlten Dokumenten. Durch die standardmäßige Integration von Apache Tika unterstützt es diverse Formate. Die Tika-Site listet über tausend Einträge auf. Bei HTML verwendet es schlicht den kompletten Text abzüglich des Markup. Das Resultat umfasst bei einem Artikel neben dem gewünschten Inhalt zusätzlich Textfragmente, die im Header, in Teasern und an anderen Stellen vorkommen. An der Stelle findet keine semantische Auswahl relevanter Passagen statt. Bei vielen Nachrichtenseiten macht ein Rauschen den Großteil des extrahierten Texts aus. Für die Weiterverarbeitung der Artikel ist das Ergebnis nicht ausreichend: Die Nachrichten sollen schließlich nach Schlüsselworten und Orten durchsucht werden. Zu viel Rauschen schlägt sich in einer hohen Unschärfe bei der Verortung und der Suche nach Themenbereichen nieder.

Der in vielen Browsern enthaltene Lesemodus zeigt, dass es bessere Ansätze zur Extraktion bloßer Artikeltexte gibt. Eine etwas ältere, aber immer noch empfehlenswerte Java-Bibliothek für diesen Zweck ist Boilerpipe, die den reinen Artikelinhalt aus HTML-Seiten erstaunlich gut extrahiert.

Die Geolokalisierung von Daten ist als Geotagging bekannt. Für die Trendanalysen kommen zwei Komponenten zum Einsatz: eine Textanalyse, die Orte in einem gegebenen Text identifiziert, und eine Geodatenbank zum Nachschlagen der Orte. Die Identifikation zahlreicher potenzieller Kandidaten im Text ist wichtig, um eine hohe Qualität der Treffer zu erhalten. Das Nachschlagen der einzelnen Worte eines Dokuments würde beispielsweise keine Orte finden, die aus mehreren Worten bestehen wie Las Vegas. Zudem wäre ein solches Verfahren schlichtweg ineffizient, da der Aufwand linear mit der Größe der Artikel anstiege.

Geotagger nutzen Named-Entity Recognition (NER), um einen gegebenen Text anhand von zuvor trainierten statistischen Modellen zu analysieren und darin erwähnte Entitäten wie Orte oder Personen zu finden.

CLAVIN (Cartographic Location And Vicinity INdexer) ist ein in Java implementiertes System, das OpenNLP und den Datenbestand von Geonames verwendet. Es lässt sich als Bibliothek in eigene Projekte einbinden. Der genutzte Satz an Geodaten ist in Form einer rund ein GByte großen CSV-Datei verfügbar. Neben den Koordinaten enthält sie Metadaten wie die unterschiedlichen Schreibweisen mehrerer Millionen Orte. Darüber hinaus befinden sich Informationen zu den Geohierarchien in dem Datensatz. Damit lassen sich beispielsweise in Deutschland Landkreise mit ihren Bundesländern in Relation setzen. Die Rohdaten transformiert CLAVIN anfänglich für die effizientere Handhabung in einen Lucene-Index.

Das Verfahren ist performant, weil die Verortung direkt innerhalb der Verarbeitungspipeline von Nutch in Form eines Plug-ins erfolgen kann.