Что?
Я пытаюсь получить постраничную карту ссылок (матрицу) страниц википедии от page_id
в следующем формате:
from1 to1 to2 to3 ...
from2 to1 to2 to3 ...
...
Почему?
Я ищу набор данных (страницы из Википедии), чтобы попробовать PageRank.
Проблема:
На dumps.wikimedia.org можно загрузить pages-articles.xml, который представляет собой XML в следующем формате:
<page>
<title>...</title>
<id>...</id> // pageid
<text>...</text>
</page>
который я буду использовать для извлечения статей (text
), а также базовые постраничные данные (page.sql), которые содержат некоторые сведения о страницах, созданных page_id
, и последнее, что мне кажется важным, это pagelinks.sql, который содержит записи ссылок между страницами. Проблема в том, что таблица pagelinks
имеет следующие поля: pl_from
, pl_namespace
и pl_title
.
Идея: создать временную базу данных, импортировать таблицы page
и pagelinks
и создать эту матрицу, используя таблицу pagelinks
и извлекая page_id
s в соответствии с pl_title
s. Возможное решение:
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
или для получения карты "обратных ссылок" (to1 from1 from2 from3 ...
, а не 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
Вопрос:
Можно ли где-нибудь взять такую матрицу межстраничных ссылок от page_id
, чтобы мне не нужно было создавать ее самостоятельно? Или, если нет, есть ли более быстрый способ получить такую матрицу, чем решение, которое я указал?