2012-10-01 21 views
5

qué ?:
Estoy intentando conseguir de página a página del mapa de enlace (matriz) de las páginas de Wikipedia por page_id en formato siguiente:Wikipedia página-a-página de enlaces por PageID

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

¿Por qué ?:
Estoy buscando un conjunto de datos (páginas de wikipedia) para probar PageRank.

Problema:
En dumps.wikimedia.org es posible descargar páginas -articles.xml que es XML con este tipo de formato:

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

que voy a utilizar para la recuperación de artículos (text) , luego también base datos por página (page.sql) que contiene algunos detalles sobre páginas por page_id y el último que me parece relevante es pagelinks.sql que contiene registros de enlace de página a página. El problema es que la tabla pagelinks tiene los siguientes campos: pl_from, pl_namespace y pl_title.

Idea: Crear base de datos temporal, importar page y pagelinks tablas y crear esta matriz mediante el uso de pagelinks mesa y recuperar page_id s de acuerdo con pl_title s. Posible solución:

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 

o para obtener un mapa de "retroceso" (to1 from1 from2 from3 ..., no 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 

Pregunta:
¿Hay un lugar donde conseguir este tipo de matriz de enlaces de página a página por page_id para que no tenga que crearlo solo? O si no, ¿hay alguna manera más rápida de obtener este tipo de matriz que la solución que he señalado?

Respuesta

1

Creo que la importación de ambas tablas en una base de datos y su uso es probablemente la forma más fácil de hacer esto (y no necesita pages-articles.xml para eso).

Otra opción sería analizar manualmente los dos archivos sql sin importarlos a la base de datos. De hecho, creé a library to do exactly that in .Net.

+0

¿Entonces quizás necesite algunos índices? No estoy seguro de si los archivos sql los crean. – svick

+0

Ya hay índices, creo que está limitado por la velocidad de mi disco ... lástima que 'page_id' no sea parte de la tabla' pagelinks' ya ... no importa, gracias por la ayuda de todos modos :) – LihO

0

Bueno, para analizar archivos XML Creo que se puede probar este enlace:

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

Hay un enfoque, además de un par de .m pre-hechos (MATLAB, octava) archivos que se pueden limpiar tu basura. Además, hay un volcado de preproceso en un archivo .txt. Sin embargo, es bastante viejo. 2009 más o menos.

Cuestiones relacionadas