0
1

More than 3 years have passed since last update.

Wikidata dumpでかすぎる問題

Last updated at Posted at 2020-12-08

背景

SPARQL 動かない

研究で先行研究に合わせてwikidataを使うことになった。
https://query.wikidata.org/ にあるwebapiで sparqlっていうSQLっぽい言語で情報取得できるらしい。
全ての人名を取得するには...どうやらこれで取得できそう...

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX wd: <http://www.wikidata.org/entity/> 
select  DISTINCT ?item
where {
        ?item wdt:P31/wdt:P279* wd:Q215627 .
        ?item rdfs:label ?itemlabel .  
}

じゃ、もうちょっとクエリを分けて飛ばしてみるにしても概算で71日かかる...
でも人様のサーバーだし、処理並列化できないしどうしよう...

wikidata dump

そこでwikidata dump (https://dumps.wikimedia.org/wikidatawiki/entities/) 使う
ダウンロードに10時間ぐらいかかってる...よく見たら約100GBもある...
これ、単純に cat & grep しても、一周5時間かかる...え?
こんなのどうすればいいんだ...

wiki-base-dump-filterを使う

Node.js を インストール

研究室サーバーのため sudo 権限がないので、 linux brew 経由で、Node.js を インストール
https://qiita.com/jigengineer/items/a7da86e8b4d4e3471656#%E8%A3%9C%E8%B6%B3linux%E5%90%91%E3%81%91

brew install nodenv

https://nodejs.org/ja/download/releases/ をみると Node.js 15 系のリリースは最近らしいし、一つ昔の14 の Node.js 14.15.1 をインストールする

nodenv install 14.15.1
echo "export PATH=~/.nodenv/shims:\$PATH" >> ~/.profile
nodenv global 14.15.1

install先から shims フォルダの位置がわかったので、環境変数を通しておく。

wikibase-dump-filter のインストール

wikibase-dump-filter の README.md に従い

npm install -g wikibase-dump-filter
PATH=~/.nodenv/versions/14.15.1/bin:$PATH

でインストール
(~/.nodenv/shims にはなぜかwiki-base-dump-filter が置かれないので、
~/.nodenv/versions/14.15.1/bin にパスを通しておく (Node.jsと違ってこっちは一時的な使用にしておく))

wikibase-dump-filter を使ってみる

cat wikidata-20201130-all.json | wikibase-dump-filter --claim 'P31:Q571&P50' --languages ja | head > books_with_an_author.ndjson

次回

VirtuosoというSPARQLサーバーを使って、
DBPedia読み込んだ方が上手くできることが判明
(そのうち書く)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1