Leach! Itemizer開発日記

フォロワーの興味・関心を可視化する http://itemizer.leach.tokyo/

WikipediaのSQLダンプから親カテゴリを含むカテゴリ情報をCSVで吐き出すツールをDockerhubで公開

動機

itemizerでは多数の商品を取り扱うため、商品をカテゴリごとに、階層的に分けたいと考えた。 そこで弊チームの一員に相談したところ、Wikipediaがカテゴリ情報を持っているので利用すればよいとの助言を受けたため、カテゴリ情報をCSVで吐き出すことにした ※オープンデータ関連の講演を聴講する機会が多々有ったが、自分の頭の中のテーブルには載っていなかったのではっとしたのは内緒。

手順

とりあえずwikipediaが公開しているSQLダンプファイルの一覧を探すと以下のサイトにあたった。

Wikipediaのダウンロードできるデータファイル一覧 | mwSoft

SQLファイルはテーブルごとに分割してダンプされており、各SQLファイルの概要とそのカラムの説明が記載されている非常に良心的なサイトで安心した。

categoryテーブルをCSVに書き出すだけで良いのかと思ったのもつかの間、categoryテーブルのカラムを見ると親カテゴリの記載がないことに気づいた。 こんな時にはstackoverflowの出番なのだが、今回は納得できる回答が見当たらず、DockerhubやGithubにもそれらしいリポジトリは見当たらなかったため自作することにした。

niwatolli3/wikipedia-category-csv

https://hub.docker.com/r/niwatolli3/wikipedia-category-csv/

以下のコマンドを実行すると、カテゴリ情報を持つCSVファイルが出力される。出力先は /opt/categories.csv である。

docker run -d -v /opt/:/opt/ --rm niwatolli3/wikipedia-category-csv
/home/tomi/repos/wikipedia-category-csv% docker ps   
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS                                 NAMES
39a3f0ad16f0        niwatolli3/wikipedia-category-csv   "/bin/sh -c '/usr/..."   2 minutes ago       Up 2 minutes                                              flamboyant_bhabha

IMAGEに自分のハンドルネームが載っていてこの上なく嬉しい。