什么:的
我正在尝试按以下格式获取维基百科页面的页面到页面的链接映射(矩阵){/ 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
表包含以下字段:pagelinks
,pl_from
和pl_namespace
。
想法:创建临时数据库,导入pl_title
和page
表并使用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
获得这种页面到页面链接的矩阵,这样我就不需要自己创建它了?
或者如果没有,有没有比我指出的解决方案更快的方法来获得这种矩阵?
答案 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年左右。