概要

本記事はWikipediaのダウンロード可能なデータについてまとめたものです。

Wikipediaではクロール行為は禁止されています(ここを見る限りでは)が、代わりに全記事の情報を圧縮したファイルが公開されています。

日本のWikipedia情報ダウンロードページ
http://download.wikimedia.org/jawiki/latest/

本記事は2009年の10月下旬に取得した情報を元に書いています。時間が経つと結果が変わる可能性があるのでご注意ください。

事前情報

2009/10/25に確認した時点では、日本語Wikipediaのダウンロードページには55個のファイルが置いてありました(うち半分は更新を通知する為のRSS)。

ファイルの形式は「XML」「MySQLのダンプ」「テキスト」などがあります。

詳しいデータのインポート方法は、こちらのリンク集が参考になると思います。

各テーブルの公式説明はこちら
http://www.mediawiki.org/wiki/Manual:Database_layout/ja

ダウンロードできるファイル(2009/10/25~29頃調査)

ファイル名サイズ件数概要
abstract.xml922.2M631,006全ページの要約(タイトル、ディスクリプション、構成要素)
all-titles-in-ns05.9M→21M1,006,242全ページのタイトルを記述したテキストファイル
category.sql0.9M→3.6M87,787カテゴリ一覧
categorylinks.sql46M→211M2,869,016カテゴリのリンク情報
externallinks.sql31M→166M969,749外部リンク情報
image.sql9M→50M71,125画像情報
imagelinks.sql13M→62M1,980,954画像のリンク先情報
interwiki.sql8K→36K662ウィキ間リンク先情報
langlinks.sql40M→134M3,871,273各ページの「他の言語」情報
×oldimage.sql1M→5M10,608過去のリビジョンの画像情報
page.sql54M→140M852,372ページ情報(page_idやタイトル等)
×page_props.sql3K→13K852,372ページのプロパティー
×page_restrictions.sql50K→373K7226ページの保護情報
pagelinks.sql347M→1.4G46,733,166ページ間のリンク情報
pages-articles.xml1G→4.1G1,227,154全ページの最新の記事本文を含むXML
×pages-logging.xml46M→433M1,000,000Wikipediaのページに対する操作ログ
pages-meta-current.xml1.2G→5.4G1,621,574pages-articles.xmlと同じ構成・内容のXML(議論ページなども含む)
pages-meta-history.xml2.8G→?編集履歴まで含んだ超巨大ファイル。解凍後は200G超えるらしい。スペックの都合により未検証。
×protected_titles.sql66K→477K3,278編集制限されたページと、その制限事由の一覧
redirect.sql4M→14M403,561リダイレクト先一覧
site_stats.sql1.7K→1K1ページ数や閲覧総数などの情報
×stub-articles.xml73M→475M1,227,154pages-articles.xmlの本文を除いた版
×stub-meta-current.xml96M→632M1,621,574 pages-meta-current.xmlの本文を除いた版
stub-meta-history.xml1G→7.4G1,621,574pages-meta-history.xmlの本文を除いた版
templatelinks.sql22M→112M4,242,203使用しているテンプレートの情報
×user_groups.sql2K→4.5K206ユーザグループ情報

◎便利そう    ○使うかも    △使うだろうか  ×使わないので説明省略  (全て筆者主観)

※ファイル名は前部の「jawiki-latest-」を除く
※サイズは解凍前→解凍後のファイルサイズ

jawiki-latest-abstract.xml

全ページの要約(タイトル、ディスクリプション、構成要素)

1GB近くある巨大XMLファイル。通常のエディタではおそらく開けない。

以下、ファイルの一部(コケ植物の部分)を切り出したもの。

<doc>
  <title>Wikipedia: コケ植物</title>
  <url>http://ja.wikipedia.org/wiki/%E3%82%B3%E3%82%B1%E6%A4%8D%E7%89%A9</url>
  <abstract>コケ植物(こけしょくぶつ、)は、原始的な陸上植物の一群である。コケ類(こけるい)や蘚苔類(せんたいるい)、蘚苔植物(せんたいしょくぶつ)などともいう。世界中でおよそ2万種ほどが記録されている。多くは緑色であるが、赤色や褐色の種もある。</abstract>
  <links>
    <sublink linktype="nav">
      <anchor>形態的特徴</anchor>
      <link>http://ja.wikipedia.org/wiki/%E3%82%B3%E3%82%B1%E6%A4%8D%E7%89%A9#.E5.BD.A2.E6.85.8B.E7.9A.84.E7.89.B9.E5.BE.B4</link>
    </sublink>
    <sublink linktype="nav">
      <anchor>生活環</anchor>
      <link>http://ja.wikipedia.org/wiki/%E3%82%B3%E3%82%B1%E6%A4%8D%E7%89%A9#.E7.94.9F.E6.B4.BB.E7.92.B0</link>
    </sublink>
    <以下のsublinkは略>
  </links>
</doc>

上記ページを見ると分かる通り、abstractがDescription的な位置に表示され、sublinkはそれ以降の各ブロックを指しています。

abstractの最初に括弧で読みを振る習慣があるようなので、読み仮名付き辞書を作る素材として使えそうです。

jawiki-latest-all-titles-in-ns0.gz

全ページのタイトルを記述したテキストファイル

以下のような感じで、改行コード(CR)で区切ってWikipediaの全記事ページのタイトルが記述されています。

ランスモール
ランスロ
ランスロット
ランスロット_(コードギアス)
ランスロット_(小惑星)
ランスロット_(曖昧さ回避)
ランスロット・アルビオン

このファイルを使って辞書ファイルを生成している人もいるようです。

曖昧さを回避する為に括弧内の文字で区別しているものや、「-10」、「1999年」などのただの数字や年号、「2000年代のSF映画の一覧」のような一覧ファイルへのリンクも含まれているので、多少の取捨選択は必要になりそうですが。

jawiki-latest-category.sql.gz

カテゴリ一覧

Category:学問のようなカテゴリページを出力する為の情報です。

カラム名内容
cat_idintauto incrementのID。
cat_titlevarchar(255)カテゴリ名。「1975年の映画」とか、「削除依頼中の記事」とか。
cat_pagesintカテゴリに属するページ(サブカテゴリ + カテゴリにあるページ)の数。例えば「セネガルの地形」は5つのページが登録されているとか。
cat_subcatsintサブカテゴリの数。例えば「日本の峠」は9つのサブカテゴリを持っているとか。
cat_filesintカテゴリ「カテゴリ名」にあるメディアの箇所に表示しているファイルの数。ほとんどのカテゴリは0(ファイルを持っていない)。コモンズと重複しているメディア辺りはたくさんファイルを保持している。
cat_hiddenintReserved for future use(将来使うかも)だそうです。現状は全レコード「0」が登録されています。

どのページがどのカテゴリに所属しているかは、jawiki-latest-categorylinksの方を参照。

jawiki-latest-categorylinks.sql.gz

カテゴリのリンク情報

各記事がリンクしているカテゴリ情報を保存しているテーブルです。

カラム名内容
cl_fromintpageテーブルのpage_idに紐付く。
cl_tovarchar(255)cl_fromが該当するカテゴリ名。
cl_sortkeyvarchar(255)ソート用の読み仮名。「64GBパック」であれば「ろくよんしいひいはつく」のように、濁点などのない平仮名で形成される。
cl_timestamptimestamp

以下は568868(67式30型ロケット弾発射機)に関するレコード。

cl_fromcl_tocl_sortkeycl_timestamp
568868ロケット砲67しき30かたろけつとたんはつしやき2006-12-19 19:44:57
568868武器・兵器関連のスタブ67しき30かたろけつとたんはつしやき2008-10-21 19:25:32
568868自走砲67しき30かたろけつとたんはつしやき2006-12-19 19:44:57
568868陸上自衛隊67しき30かたろけつとたんはつしやき2008-10-21 19:25:32

「67式30型ロケット弾発射機」は、4つのカテゴリに所属していることが分かります。

実際に当該ページを見ると「ロケット砲」、「自走砲」、「陸上自衛隊」の3つのカテゴリが表示されていました。スタブが含まれるカテゴリは「まだ成長していない項目」のことで、ページには表示されません。

pageテーブルとjoinすれば、どのページがどのカテゴリに所属しているかを一望することができます。また、cl_toで検索することで、同じカテゴリに所属する言葉を取得することもできます。

jawiki-latest-externallinks.sql.gz

外部リンク情報

カラム名内容
el_fromintpageテーブルのpage_idに紐付く。
el_toblobリンク先URL。
el_indexblobuser/passwordを除いて、ドメインを逆転させたURL。

例 : 国会_(日本)のレコード

el_fromel_toel_index
3540http://www.sangiin.go.jp/http://jp.go.sangiin.www./

jawiki-latest-image.sql.gz

画像情報

画像名、画像のタイプ、ディスクリプションなどが保存されている。 どの画像がどのページに関連付けられているかは、imagelinksテーブルに格納されている。

img_name img_size img_width img_height img_metadata img_bits img_media_type
!!!三光坂0001.JPG 453750 1280 960 長いので略 8 BITMAP

img_major_mime img_minor_mime img_description img_user img_user_text
image jpeg {{GFDL}}self made 39111 とんちゃん2

img_timestamp img_sha1
20060220143536 q0bhu20kvdfvlbhob5frnoq0vj58k8y

著作権などの問題が解決されないまま掲載されている画像が多いらしいので、取り扱いには注意が必要。

jawiki-latest-imagelinks.sql.gz

画像のリンク先情報

pageテーブルのpage_idに紐づくil_fromというカラムと、画像ファイル名が格納されるカラムの2つだけを持つ。

どのページにどういった画像が使用されているかが一望できる。

il_fromil_to
5Commons-logo.svg
10Commons-logo.svg
10Question_book-4.svg
10Sekai-no-gengo.png
10Wiktionary-logo-en.svg

上記の例は、idが5のページ(アンパサンド)は、Commons-logo.svgという画像ファイルを使用していて、idが10のページ(言語)はCommons-logo.svg以下4つの画像を使用しているという意味になる。

jawiki-latest-interwiki.sql.gz

ウィキ間リンク先情報

日本語のWikipediaから英語に移ろうとした場合に [[en:Language]] などと記述しますが、その「en」に関する情報を格納しているテーブルです。

下記は実際のenに関するレコード。遷移先のURLとかの情報が記述されています。

iw_prefixiw_urliw_localiw_trans
enhttp://en.wikipedia.org/wiki/$1truefalse

iw_localやiw_transは行える動作権限に影響するようです。詳しい話は以下に書いてあります。

http://www.mediawiki.org/wiki/Interwiki_table/ja

662個ほどレコードが設定されているので、見ると「へー、こういうサイトがあるのか」という気持ちになれます。

jawiki-latest-langlinks.sql.gz

各ページの「他の言語」情報

Wikipediaの各ページに貼られている「他の言語」のリンクに関する情報。

例えばヤコブのページは英語、フィンランド語、フランス語、オランダ語、ポーランド語の5つが登録されている。

ll_fromll_langll_title
17170enJacob (disambiguation)
17170fiJaakob
17170frJacques
17170nlJacobus
17170plJakub

見ての通り、その言葉に対する各言語のタイトルが取得できる。これを利用して「ヤコブを英語で書くと、Jacob」といった情報が取得できるような気もする。

必ずしも同一の言葉に対してリンクされているわけではないので、参考情報程度にしか使えないかもしれないけど。

jawiki-latest-page.sql.gz

ページ情報(page_idやタイトル等)

page_idとページのタイトルが入った大切なテーブル。他のテーブルと結合して使うことも多いです。

中身はこんな感じのものが入っています。

page_idpage_namespacepage_titlepage_restrictionspage_counterpage_is_redirect
700人工知能6800

page_is_newpage_randompage_touchedpage_latestpage_len
00.924094703909098200910122012362846087318630

各カラムの意味合いはこんな感じです。

カラム名内容
page_idintページID。categorylinksやexternallinksなどのリンクテーブルと紐づく、結合条件として良く使用されるカラム。
page_namespaceint名前空間。例えば一般的な記事ページは「0(NS_MAIN)」、「削除記録」のような管理系のページは「4(NS_PROJECT)」など。言葉を収集したい場合はとりあえず「0」だけ取っておけば間違いが少なくなる。詳細は「ここ」「ここのReal namespaces」を参照。
page_titlevarchar(255)ページのタイトル。スペースはハイフンに置き換えられている。また「_(曖昧さ回避)」などの言葉が入っている場合もある。
page_restrictionsvarchar(255)編集に関するパーミッション。page_restrictionsテーブルがあるバージョンでは無視されるフィールドらしい。
page_counter bigintページの閲覧回数。この機能が無効になっている場合もあるかもしれないそうな。
page_is_redirectint1の場合はリダイレクトページ。例えばストップ高というページはこのカラムが1で登録されており、値幅制限というページにリダイレクトされる。
page_is_newint1回だけしか編集されていないページは「1」、重ねて編集が行われているページは「0」。
page_randomdouble0~1の間の小数が入っている。「案内」のところにある「おまかせ表示」の為に使用するカラムらしい。
page_touchedvarchar(14)ページが変更された際、キャッシュを無効にする目的で保持するタイムスタンプ。
page_latestint最新の版のID。変更履歴のページで各版のリンク先に「oldid=xxxxx」のようなパラメータが付いてる。そのxxxxxの部分にこのカラムの値が入る。
page_lenint現在のページの長さ

辞書作成に利用する場合は、page_namespaceが0のタイトルを収集すると良さそうです。

page_is_redirectが1のページと遷移先を結びつけることで、言葉の言い換えに関する情報が取れそうな気もします。

jawiki-latest-page_props.sql.gz

ページのプロパティー

現状はHIDDENCAT(記事最下部のカテゴリの欄にカテゴリページへのリンクが現れなくなる)を指定する為に使用されている。

jawiki-latest-page_restrictions.sql.gz

ページの保護情報

pr_userpr_typepr_pagepr_expirypr_cascadepr_idpr_level
edit0infinity020679autoconfirmed
move0infinity020680autoconfirmed
edit1infinity014219sysop
move1infinity014220sysop

こんな感じで細かく制限しています。

jawiki-latest-pagelinks.sql.gz

ページ間のリンク情報

4000万件以上のレコードを保持する大きなテーブル。我が家の環境ではCOUNTするだけで1分近くかかる。

例えば「指輪物語」(page_id=4999)で検索すると、以下のような結果が出ます。(206件ほどヒットしてしまったので、下の表はそのうちの一部のみ記載)

pl_frompl_namespacepl_title
49990エピック・ファンタジー
49990エルフ
49990エルフ_(トールキン)
49990エンジェルズ・フォール・ファースト
49990エント

jawiki-latest-pages-articles.xml.bz2

全ページの記事本文を含むXML

4GBを超える巨大ファイル。ロースペックのマシンでは取り扱うのは難しいかもしれません。

XMLの中身はこんな感じで、ページのIDやタイトル、更新者やコメント、そしてテキスト解析をする際に非常に便利なWikipediaの本文(Wiki記法で書かれている)が書いてあります。

<page>
  <title>生物学</title>
  <id>57</id>
  <revision>
    <id>28350434</id>
    <timestamp>2009-10-06T11:34:37Z</timestamp>
    <contributor>
      <username>CCoil</username>
      <id>229918</id>
    </contributor>

    <comment>[[Special:Contributions/220.148.182.50|220.148.182.50]] ([[User talk:220.148.182.50|会話]]) による ID:28347985 の版を[[H:RV|取り消し]] 英語表記を消すのはおやめください</comment>

    <text xml:space="preserve">'''生物学'''(せいぶつがく、{{Lang-en-short|'''Biology'''}})は[[生物]]や[[生命|生命現象]]を研究する[[自然科学]]の一分野。広義には[[医学]]や[[農学]]など[[応用科学]]・[[総合科学]]も含み、狭義には[[基礎科学]]([[理学]])の部分を指す。一般的には後者の意味で用いられることが多い。類義語として'''[[生命科学]]'''や'''生物科学'''がある(後述の[[#「生物学」と「生命科学」]]参照)。

      以下略

    </text>
  </revision>
</page>

上記内容は「Wikipedia: 生物学」の情報です。こんな感じで全ページの情報が入っています。

XMLで配布されている為、扱いが若干面倒です。こんな大容量をXPATHとかで扱うのも自殺行為ですし、ダンプファイルに変換するツールも用意されていますが、実行してから結果が返ってくるまで時間がかかったりします。

というわけで我が家では自前でパーサを書いて、page_id, page_title, rev_id、textだけをカラムに持つ独自テーブルに入れて使っています。

ちなみに変換するツールを使用した場合はpage, revision, textの3つのテーブルのデータが生成されます。使用方法は下記URLが詳しいです。

wikipediaのダウンロード&データベースにインポート
http://d.hatena.ne.jp/dkfj/20070902/1188730207

jawiki-latest-pages-logging.xml.gz

Wikipediaのページに対する操作ログ

何時にファイルをアップデートしたとか、記述を削除したといったアクション情報が載っています。

<logitem>
  <id>5</id>
  <timestamp>2004-12-23T05:33:34Z</timestamp>
  <contributor>
    <username>Nnh</username>
    <id>474</id>
  </contributor>
  <comment>著作権侵害。削除依頼12月15日。</comment>
  <type>delete</type>
  <action>delete</action>
  <logtitle>花園大学</logtitle>
  <params xml:space="preserve" />
</logitem>
<logitem>
  <id>6</id>
  <timestamp>2004-12-23T06:20:42Z</timestamp>
  <contributor>
    <username>Kozo</username>
    <id>15492</id>
  </contributor>
  <comment>ウィリアム3世 (イングランド王) (英語版より)</comment>
  <type>upload</type>
  <action>upload</action>
  <logtitle>ファイル:William III of England.jpg</logtitle>
  <params xml:space="preserve" />
</logitem>

アクションの内容は、create, create2, autocreate, delete, upload, block, unblock, reblock, restore, protect, move, move_redir, rights, renameuser, newusers, modify, overwrite, patrol, move_prot, revision、などがある。

jawiki-latest-pages-meta-current.xml.bz2

pages-articles.xmlと同じ構成・内容のXML(議論ページなども含む)

<page>
  <title>ヨーロッパ</title>
  <id>32</id>
  <revision>
    <id>28222233</id>
    <timestamp>2009-09-28T23:05:55Z</timestamp>
    <contributor>
      <username>SieBot</username>
      <id>126695</id>
    </contributor>
    <minor />
    <comment>ロボットによる 変更: [[nv:Beesh Bichシahnii Bikeyah]]</comment>
    <text xml:space="preserve">{{otheruses|ヨーロッパ}}
[[ファイル:Europe (orthographic projection).svg|thumb|250px|ヨーロッパの位置]]
[[ファイル:Europe satellite orthographic.jpg|thumb|250px|ヨーロッパの衛星写真]]
[[Image:Europe_subregion_map_UN_geoschme.svg|right|thumb|250px|国際連合によるヨーロッパの地域の分類[http://unstats.un.org/unsd/methods/m49/m49regin.htm]
{{legend|#4080FF|[[北ヨーロッパ]]}}
{{legend|#00FFFF|[[西ヨーロッパ]]}}
{{legend|#FF8080|[[東ヨーロッパ]]}}
{{legend|#00FF00|[[南ヨーロッパ]]}}]]

      以下略
    </text>
  </revision>
</page>

上記はWikipedia: ヨーロッパの部分を切り出したものです。

見ての通り、内容自体はpages-articles.xmlと同じです。但し、議論ページなどを含む分、レコード数は若干多くなっています。

jawiki-latest-protected_titles.sql.gz

編集制限されたページと、その制限事由の一覧

編集制限をされたページの、時間、期限、制限事由などが登録されている。

pt_namespacept_titlept_userpt_reason
0(株)54812削除された項目の改善なき再作成が続くため

pt_timestamppt_expirypt_create_perm
20080913045836infinitysysop

削除されたタイトルとかを取ることもできなくはないけど、明らかな悪戯で作られた記事のタイトルも取れてしまうので品質の面で微妙です。

あと、このテーブルを見ていると、管理している人もタイヘンだなぁと無駄に同情的な気持ちになったりするかもしれません。

jawiki-latest-redirect.sql.gz

リダイレクト先一覧

例えば「.NET_Framework」というページは、以下の8つのワードがリダイレクト先として登録されています。

rd_fromrd_namespacerd_title
15630.NET_Framework
5770390.NET_Framework
6399060.NET_Framework
6399070.NET_Framework
6399080.NET_Framework
6399090.NET_Framework
6464550.NET_Framework
6464560.NET_Framework

言い換えや表記の違い、略称、関連語などが登録されているので、頑張ればその辺りの情報を取れるかもしれません。

但し、頑張って様々な言い換えをリダイレクト登録しているページもあれば、あまり登録されていないページもあるので(レコード数も40万くらいですし)、参考データの1つくらいの扱いになると思います。

jawiki-latest-site_stats.sql.gz

ページ数や閲覧総数などの情報

詳細は調べてませんが、中身は1レコードのみで、こんな情報が入ってました。

ss_row_idss_total_viewsss_total_editsss_good_articles
1234098229093839624796

ss_total_pagesss_usersss_adminsss_imagesss_active_users
1615010355590307063811472

jawiki-latest-stub-articles.xml.gz

pages-articles.xmlの本文を除いた版

pages-articles.xmlの本文(text)の部分が、textのIDだけを書く様になっているファイルです。

<page>
  <title>哲学</title>
  <id>110</id>
  <revision>
    <id>28432395</id>
    <timestamp>2009-10-11T11:11:19Z</timestamp>
    <contributor>
      <ip>202.95.44.163</ip>
    </contributor>
    <comment>/* 外部リンク */ [[Wikipedia:外部リンクの選び方]]参照</comment>
    <text id="28286198" />
  </revision>
</page>

本文を含まない分、latest-abstract.xmlの半分程度とコンパクトなサイズになっています。

jawiki-latest-stub-meta-current.xml.gz

pages-meta-current.xmlの本文を除いた版

stub-articles.xmlと同じ形式です。pages-meta-current.xmlと同じく、議論ページなどを含んでいます。

jawiki-latest-stub-meta-history.xml.gz

pages-meta-history.xmlの本文を除いた版

stub-articles.xmlと同じ形式で、revisionの情報がcurrentだけでなく全て入っています。

本文なしなのに7.4Gとかいうかなり大きめなサイズ。

更新状況とかを調べたい場合はこれを使うのかも。話題になっているとか荒れているページを探知する手がかりにはなりそうです。

jawiki-latest-templatelinks.sql.gz

使用しているテンプレートの情報

下記は174722(クリーブランド・キャバリアーズ)のテンプレート情報の一部です。NBAやPlayer、Country_flagのテンプレートが使用されていることが分かります。

tl_fromtl_namespacetl_title
174722BasketColor10
174722BasketColorCell10
174722BasketColorCell210
174722Country_alias_BRA10
174722Country_alias_LTU10
174722Country_alias_USA10
174722Country_flag_alias_BRA10
174722Country_flag_alias_LTU10
174722Country_flag_alias_USA10
174722NBA10
174722NBA_SBS10
174722NBAteam10
174722NBAロースター_終了10
174722NBAロースター_選手10
174722NBAロースター_開始10
174722NBA年度別成績10
174722Player10
174722Redirect10

野球用のテンプレートとかバスケ用のテンプレートとかがあるので、意外とカテゴリとしての意味合いも持っている情報のような気がしました。

jawiki-latest-user_groups.sql.gz

ユーザグループ情報

ug_group(botとかsysopとか)と、ug_user(IDっぽい数字)が入ったテーブル。