5

什么?:我正在尝试通过以下格式
获取维基百科页面的逐页链接映射(矩阵) :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_frompl_namespacepl_title

思路:创建临时数据库,导入pagepagelinks表,使用表创建这个矩阵,根据spagelinks检索 s。可能的解决方案:page_idpl_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 ..., not 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这样我就不需要自己创建它了?或者如果没有,有没有比我指出的解决方案更快的方法来获得这种矩阵?

4

2 回答 2

1

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

另一种选择是手动解析这两个 sql 文件而不将它们导入数据库。我实际上在 .Net 中创建了一个库来完全做到这一点

于 2012-10-01T11:11:41.753 回答
0

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

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

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

于 2014-10-25T14:07:50.470 回答