2012-10-01 15 views
5

Was ?:
Ich versuche, in folgendem Format von page_id Seite-zu-Seite Link Karte (Matrix) von Wikipedia-Seiten zu bekommen:Wikipedia-Seite-zu-Seite Links von pageid

from1 to1 to2 to3 ... 
from2 to1 to2 to3 ... 
... 

Warum ?:
Ich suche einen Datensatz (Seiten aus Wikipedia), um PageRank auszuprobieren.

Problem:
Bei dumps.wikimedia.org es möglich ist, zum Download Seiten-Articles.xml der XML mit dieser Art von Format ist:

<page> 
    <title>...</title> 
    <id>...</id>   // pageid 
    <text>...</text> 
</page> 

, die ich für die Beschaffung von Artikeln verwenden (text) , dann auch Basis pro Seite Daten (page.sql), die einige Details über Seiten von page_id enthält und letzten, die für mich relevant erscheint, ist pagelinks.sql das Seiten-zu-Seite-Verbindungsdatensätze enthält. Problem ist, dass pagelinks Tabelle folgende Felder hat: pl_from, pl_namespace und pl_title.

Idee: erstellen temporäre Datenbank, importieren page und pagelinks Tabellen und erstellen Sie diese Matrix durch pagelinks Tabelle und Abrufen von page_id s nach pl_title s. Mögliche Lösung:

SELECT pl_from, GROUP_CONCAT(page_id SEPARATOR ' ') FROM pagelinks 
    JOIN page ON 
     pl_title = page_title AND pl_namespace = page_namespace 
GROUP BY pl_from 

oder für Karte "Backlinks" (to1 from1 from2 from3 ..., nicht from1 to1 to2 to3 ...) bekommen:

SELECT page_id, GROUP_CONCAT(pl_from SEPARATOR ' ') FROM pagelinks 
    JOIN page ON 
     pl_title = page_title AND pl_namespace = page_namespace 
GROUP BY page_id 

Frage:
Gibt es einen Ort, wo diese Art von Matrix zu erhalten Seite-zu-Seite-Links von page_id, so dass ich es nicht selbst erstellen muss? Oder wenn nicht, gibt es einen schnelleren Weg, um diese Art von Matrix als Lösung zu bekommen, die ich darauf hingewiesen habe?

Antwort

1

Ich denke, beide Tabellen in eine Datenbank importieren und verwenden, ist wahrscheinlich der einfachste Weg, dies zu tun (und Sie brauchen nicht pages-articles.xml dafür).

Eine andere Option wäre, die zwei SQL-Dateien manuell zu analysieren, ohne sie in die Datenbank zu importieren. Ich habe tatsächlich a library to do exactly that in .Net erstellt.

+0

Dann brauchen Sie vielleicht einige Indizes? Ich bin mir nicht sicher, ob die SQL-Dateien sie erstellen. – svick

+0

Es gibt bereits Indizes, ich denke, es ist durch die Geschwindigkeit meiner Disc begrenzt ... zu schade, dass 'page_id' nicht schon Teil der 'pickets'-Tabelle ist ... egal, danke für die Hilfe trotzdem :) – LihO

0

Nun, XML-Dateien zu analysieren ich denke, könnten Sie diesen Link ausprobieren:

http://haselgrove.id.au/wikipedia.htm

Ansatz Es gibt, plus ein paar vorgefertigten .m (MATLAB, OCTAVE) Dateien, die reinigen deine Müllkippe. In einer TXT-Datei befindet sich auch ein Vor-Prozess-Dump. Obwohl es ziemlich alt ist. 2009 oder so.