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:
[main] INFO WikipediaImporter - Wikipedia Importer started. [main] INFO WikipediaImporter - Time taken: 0h 11m 34s. [main] INFO WikipediaImporter - Articles: 2863041 [main] INFO WikipediaImporter - Redirects: 2548806 [main] INFO WikipediaImporter - Wikipedia Importer finished.
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.
Dir ist schon bewusst, dass du die Artikelanzahl auch hier hättest erfahren können? ;)
Jup. Darum ging es letztendlich aber nicht . Diese Statistik war praktisch nur eine Aufwärmübung für den weitern Umgang mit den Daten.
Was ich letztendlich haben will, ist auf Wikipedia nicht zu finden. 8)