如何下载和使用维基百科数据转储?

问题描述 投票:0回答:3

我想计算特定语言(例如英语)的 wiki 转储中的实体/类别。对于初学者来说,官方文档很难找到/遵循。到目前为止我所理解的是,我可以下载 XML 转储(我从所有可用的不同文件中下载什么),并解析它(?)以计算实体(文章主题)和类别。

此信息(如果有)很难找到。请帮助提供一些有关我如何使用它的说明或我可以了解它的资源。

谢谢!

wikipedia information-retrieval wikidata knowledge-graph
3个回答
6
投票

根据您的用例,具体的说明会有很大不同。您可以从 https://dumps.wikimedia.org/enwiki/ 下载转储并在本地解析它们,也可以联系 API。

如果您想解析转储,https://jamesthorne.com/blog/processing-wikipedia-in-a- Couple-of-hours/ 是一篇很好的文章,展示了如何做到这一点。

但是,解析转储并不总是最好的解决方案。例如,如果您想知道三个最大的页面,您可以使用 https://en.wikipedia.org/wiki/Special:LongPages

除此之外,您还可以使用 https://quarry.wmcloud.org 查询维基百科数据库的实时副本。可以在https://quarry.wmcloud.org/query/38441找到示例。


4
投票

转储相当笨重:即使是小的“真实”转储也有 25G。而且由于 RDF 相当冗长,因此会扩展到 >100G。所以我的一般建议是避免转储。

如果您无法控制,https://wdumps.toolforge.org/dumps允许您仅使用您想要的语言/属性/实体创建自定义的转储子集。

然后,逐行阅读并......对每一行做一些事情


1
投票

mysqldump 到 csv

https://stackoverflow.com/a/28168617/895245向我指出了https://github.com/jamesmishra/mysqldump-to-csv,它半黑客地将转储转换为CSV,这允许人们绕过MySQL 缓慢:

git clone https://github.com/jamesmishra/mysqldump-to-csv
cd mysqldump-to-csv
git checkout 24301dfa739c13025844ed3ff5a8abe093ced6cc
patch <<'EOF'
diff --git a/mysqldump_to_csv.py b/mysqldump_to_csv.py
index b49cfe7..8d5bb2a 100644
--- a/mysqldump_to_csv.py
+++ b/mysqldump_to_csv.py
@@ -101,7 +101,8 @@ def main():
     # listed in sys.argv[1:]
     # or stdin if no args given.
     try:
-        for line in fileinput.input():
+        sys.stdin.reconfigure(errors='ignore')
+        for line in fileinput.input(encoding="utf-8", errors="ignore"):
             # Look for an INSERT statement and parse it.
             if is_insert(line):
                 values = get_values(line)
EOF

然后我按照 如何提取 csv 文件的一列 + awk 添加 csvtool 来过滤列:

zcat enwiki-latest-page.sql.gz | python mysqldump-to-csv/mysqldump_to_csv.py

然后,您可以将 CSV 与多个标准工具(如

csvtool
)一起使用,例如:

© www.soinside.com 2019 - 2024. All rights reserved.