2012-10-01 16 views
5

Jaka ?:
próbuję dostać strona do strony link Mapa (Matrix) stron Wikipedii przez page_id w następującym formacie:wikipedia strona do strony odsyłacze według IdStrony

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

Dlaczego ?: Szukam zestawu danych (strony z wikipedia), aby wypróbować PageRank.

Problem:
Na dumps.wikimedia.org możliwe jest pobranie stron-articles.xml XML, który jest z tego rodzaju formacie:

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

że użyję artykułów przywoływania (text) , a następnie bazują na danych na stronie (page.sql), które zawierają pewne szczegóły na temat stron: page_id, a ostatnią, która wydaje mi się istotna, jest pagelinks.sql która zawiera rekordy łącza strony do strony. Problem polega na tym, że tabela pagelinks ma następujące pola: pl_from, pl_namespace i pl_title.

Idea: Tworzenie tymczasowej bazy danych, import page i pagelinks tabele i tworzyć tę matrycę za pomocą pagelinks stół i pobierania page_id s według pl_title s. Możliwe rozwiązanie:

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 

lub uzyskania mapę "wstecznych" (to1 from1 from2 from3 ..., nie from1 to1 to2 to3 ...):

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 

Pytanie:
Czy jest miejsce, gdzie można uzyskać tego rodzaju matrycy Linki od strony do strony przez page_id, więc nie muszę tworzyć go samodzielnie? A jeśli nie, czy istnieje szybszy sposób uzyskania tego rodzaju matrycy niż rozwiązanie, które wskazałem?

Odpowiedz

1

Myślę, że zaimportowanie obu tabel do bazy danych i użycie tego jest prawdopodobnie najprostszym sposobem na zrobienie tego (i nie potrzebujesz do tego celu pages-articles.xml).

Inną opcją byłoby ręczne przeanalizowanie dwóch plików sql bez importowania ich do bazy danych. W rzeczywistości stworzył a library to do exactly that in .Net.

+0

Może potrzebujesz indeksów? Nie jestem pewien, czy pliki sql je utworzyć. – svick

+0

Istnieją już indeksy, myślę, że jest ograniczona szybkością mojego dysku ... szkoda, że ​​'page_id' nie jest już częścią tabeli' pagelinks' ... nieważne, dziękuję za pomoc w każdym razie :) – LihO

0

Cóż, do analizowania plików XML Chyba można wypróbować ten link:

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

Jest to podejście, plus kilka pre-made .m plików (MATLAB, Octave), który może oczyścić twój zrzut. Istnieje również zrzut procesu przed przetwarzaniem w pliku .txt. Chociaż jest dość stary. 2009 lub tak.

Powiązane problemy