【问题标题】:wikipedia page-to-page links by pageidwikipedia page-to-page links by pageid
【发布时间】:2012-10-01 11:01:42
【问题描述】:

什么?:
我正在尝试通过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 表并使用pagelinks 表创建此矩阵,并根据pl_titles 检索page_ids。可能的解决方案:

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

【问题讨论】:

    标签: sql wikipedia pagerank


    【解决方案1】:

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

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

    【讨论】:

    • 那么也许你需要一些索引?我不确定 sql 文件是否创建了它们。
    • 已经有索引了,我认为它受到我的磁盘速度的限制......太糟糕了page_id 不是pagelinks 表的一部分......没关系,谢谢你的帮助无论如何:)
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      • 1970-01-01
      • 2022-12-01
      相关资源
      最近更新 更多