按pageid的维基百科页面到页面的链接

时间:2012-10-01 11:01:43

标签: sql wikipedia pagerank

什么:
我正在尝试按以下格式获取维基百科页面的页面到页面的链接映射(矩阵){/ 1}}:

page_id

为什么?
我正在寻找数据集(来自维基百科的页面)来试用PageRank。

问题:
dumps.wikimedia.org,可以使用以下格式下载 pages-articles.xml ,这是XML:

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

我将用于检索文章(<page> <title>...</title> <id>...</id> // pageid <text>...</text> </page> ),然后还基于每页数据( page.sql ),其中包含有关text页面的一些详细信息最后一个与我相关的是 pagelinks.sql ,其中包含页面到页面的链接记录。问题是page_id表包含以下字段:pagelinkspl_frompl_namespace

想法:创建临时数据库,导入pl_titlepage表并使用pagelinks表创建此矩阵并根据pagelinks检索至page_id。可能的解决方案:

pl_title

或获取“反向链接”地图(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 获得这种页面到页面链接的矩阵,这样我就不需要自己创建它了? 或者如果没有,有没有比我指出的解决方案更快的方法来获得这种矩阵?

2 个答案:

答案 0 :(得分:1)

我认为将这两个表导入数据库并使用它可能是最简单的方法(并且您不需要pages-articles.xml)。

另一种选择是手动解析两个sql文件而不将它们导入数据库。我实际创建了a library to do exactly that in .Net

答案 1 :(得分:0)

好吧,要解析XML文件,我想你可以试试这个链接:

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

有一种方法,加上一些可以清理转储的预制.m(MATLAB,OCTAVE)文件。 此外,.txt文件中还有一个预处理转储。虽然,它已经很老了。 2009年左右。