我想计算特定语言(例如英语)的 wiki 转储中的实体/类别。对于初学者来说,官方文档很难找到/遵循。到目前为止我所理解的是,我可以下载 XML 转储(我从所有可用的不同文件中下载什么),并解析它(?)以计算实体(文章主题)和类别。
此信息(如果有)很难找到。请帮助提供一些有关我如何使用它的说明或我可以了解它的资源。
谢谢!
根据您的用例,具体的说明会有很大不同。您可以从 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找到示例。
转储相当笨重:即使是小的“真实”转储也有 25G。而且由于 RDF 相当冗长,因此会扩展到 >100G。所以我的一般建议是避免转储。
如果您无法控制,https://wdumps.toolforge.org/dumps允许您仅使用您想要的语言/属性/实体创建自定义的转储子集。
然后,逐行阅读并......对每一行做一些事情
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
)一起使用,例如: