Tag Archives: Wikipedia

Web-2.0-Guide

Als ich vor noch nicht allzu langer Zeit einmal wieder Douglas Adams The ultimate Hitchhiker’s Guide to the Galaxy las, fiel mir in der Beschreibung der Geschichte des Guides eine Passage auf, die genauso gut auf Crowdsourcing und insbesondere Wikipedia zutrifft und die ich hier deshalb zitieren möchte:

[The Guide’s founder] also started to develop and explore the role of the editorial lunch break that was subsequently to play such a crucial part in the Guide’s history, since it meant that most of the actual work got done by any passing stranger who happened to wander into the empty offices of an afternoon and saw something worth doing.

Gerade Wikipedia funktioniert ja im Prinzip genauso. Bemerkenswert ist, dass Douglas Adams dies natürlich weit vor deren Gründung aufschrieb.

Kleine Wikipedia-Statistik

Für meine Diplomarbeit habe ich ein Informationsnetzwerk gesucht, das einerseits sehr groß und nicht komplett formalisiert, andererseits aber auch nicht sinnlos ist. Wikipedia bot sich an.

Unter der URL http://dumps.wikimedia.org/ kann man regelmäßig erstellte Datenbankdumps der Wikipedia herunterladen. Ich habe mich für den englischen Teil entschieden und auf die aktuellen Artikelversionen “beschränkt”. Der Dump ist 3,9 GB gross, nach dem Entpacken erhält man eine XML-Datei von ca. 17 GB (Gigabytes!)

Hier fangen die ersten Schwierigkeiten schon an. Solchen Dateien kann man weder mit herkömmlichen Editoren zuleibe rücken, noch mit einem DOM-Parser – beide versuchen zunächst, die Datei komplett in den Hauptspeicher zu laden. So weit sind wir mit der Hardware aber noch nicht.

Die Sprache meiner Wahl ist Java, da ich auch in Java weiterarbeiten werde. Zum Glück gibt es hier noch die SAX-Parser, die eine XML-Datei streamen und die Daten über Callback-Funktionen weitergeben. Damit baut man dann einen klassischen Automaten, der die XML-Daten extrahiert und in Objekte verpackt. Auch hier sollte man nicht auf die Idee kommen, in irgendeiner Form Objekte anzusammeln – der Hauptspeicher reicht dafür nämlich ebenfalls nicht aus.

Was ist zunächst getan habe, ist, die Anzahl der Seiten und Redirects (Artikel, die auf andere Seiten verweisen) zu zählen. Das stellte sich letztendlich doch komplizierter heraus, als ich dachte. Der Dump enthält auch sämtliche Verweise auf Bilder, Templates und andere Namespaces (mit Ausnahme von User und Discussion), die erst einmal herausgefiltert werden müssen.

Anschließend gibt es in den Erklärungen dazu, was eine Wikipedia-Seite ist, noch folgenden Text: any page that is in the article namespace, is not a redirect page and contains at least one wiki link. Der letzte Teil ist wichtig: Zusätzlich zu den Namespaces muss auch noch nach Links gefiltert werden, sonst landen jede Menge Stub-Seiten mit Verweisen zu anderen Wikis in der Statistik. Auf diesen Fakt wurde ich im Mediawiki-Channel (freenode:#mediawiki) hingewiesen.

Nach insgesamt 5 Experimenten gibt es nun also plausible Ergebnisse:

Insgesamt befinden sich im Dump also 2.863.041 Artikel – nach meiner Zählung.

Als nächstes werden die Verlinkungen bereinigt (Redirects aufgelöst) und daraus ein Graph hergestellt, der dann ausschnittsweise visualisiert wird. Außerdem werde ich wohl eine Klassifikation anhand der Kategorien herstellen. Das Feld ist offen für Experimente und ich nehme gern Ideen entgegen. Aber: Bei 2.8 Millionen Knoten werden die klassischen Graphen-Algorithmen wohl gnadenlos versagen.