Wikipedia のデータをダウンロードした

ダウンロード

ブラウザでダウンロードしようとしたら5時間ほどかかりそうと言われた Wikipedia のデータは、 Wget をしかけて寝るという昔ながらのやり方でダウンロードしました。

jawiki-latest-pages-articles.xml.bz2 2.96G 1.40MB/s 時間 1h 55m
jawiki-latest-pages-meta-current.xml.bz2 3.53G 1.19MB/s 時間 33m 48s
jawiki-latest-all-titles-in-ns0.gz 11.89M 1.27MB/s 時間 9.1s

ということで、結果的には2時間半程でダウンロードが完了したようです。せっかくなので中をちょっとだけ見てみようと思います。

gzip --decompress jawiki-latest-all-titles-in-ns0.gz
bzip2 --decompress jawiki-latest-pages-*.bz2

du -h *
43M jawiki-latest-all-titles-in-ns0
12G jawiki-latest-pages-articles.xml
17G jawiki-latest-pages-meta-current.xml

bzip2 による展開はずいぶん時間がかかりました。 time をしこむこともなく入浴してきたので正確な時間はわかりませんが、サイズが大きいので何かと時間がかかります。

jawiki-latest-all-titles-in-ns0

Wikipedia:データベースダウンロード 全項目のページ名一覧 (標準名前空間) によるとこちらは全項目のページ名一覧 (標準名前空間) とのことです。サイズも大したことないのでちょっと見てみます。

head jawiki-latest-all-titles-in-ns0
page_title
!
!!
!!!
!!!Fuck_You!!!
!=
!?
!BYE_BYE
!LOUD!
!SHOUT!

tail jawiki-latest-all-titles-in-ns0
~聖魔導物語~
~週刊シティプロモーション~ご当地サタデー♪
~飯塚雅弓の月刊ラジオグランプリ~
~飯塚雅弓の月刊ラジオグランプリ~_ともだち100人できるからっ♪





¥記号

wc -l jawiki-latest-all-titles-in-ns0
1968718 jawiki-latest-all-titles-in-ns0

全部で200万行近くあるようで、それぞれが記事のタイトルということなのでしょうか。日本語版 Wikipedia のメインページを見てみると1,224,805本の記事をあなたととありますが、重複があったり書きかけがあったりということでしょうか。よく見ると数字のところがリンクになっていて、そこをクリックすると特別ページ:統計に遷移します。興味深い数字があれこれ並んでいるし方々にリンクがあるけど、200万に近い数字は見当たりません。深追いしても時間が溶けていくばかりなので、ほぼ何もわからなかったけどこのあたりで引き返すことにします。

jawiki-latest-pages-articles.xml

ここからはファイルサイズが大きくなるので注意が必要です。

ふと思い立ち、これまで見てきたデータベースダウンロードの英語版の方の Wikipedia:Database download を改めて見てみると記述量が全然違う...。 XML Schema の項目を見てみると、 XML Schema はそれぞれのファイルの先頭に定義されているとあります。

恐る恐る、まずは100行くらい見てみます。

head -100 jawiki-latest-pages-articles.xml | lv
<mediawiki>
 <siteinfo>
   <sitename>Wikipedia</sitename>
   <dbname>jawiki</dbname>
   <base>https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%
83%BC%E3%82%B8</base>
   <generator>MediaWiki 1.36.0-wmf.5</generator>
   <case>first-letter</case>
   <namespaces>
     <namespace key="-2" case="first-letter">メディア</namespace>
ace>
     ...
     <namespace key="2303" case="case-sensitive">Gadget definition talk</namesp
ace>
   </namespaces>
 </siteinfo>

mediawiki ノードの属性は省きましたが、先頭の43行目までが siteinfo でした。

その後から page というノードが複数有ります。100行だけだと page 内がどうなっているかわからないので、100行ずつ増やしていって最終的には先頭1000行ほどを見てみます。

head -1000 jawiki-latest-pages-articles.xml | lv
  <page>
   <title>Wikipedia:アップロードログ 20044月</title>
   <ns>4</ns>
   <id>1</id>
   <restrictions>sysop</restrictions>
   <revision>
     <id>2168855</id>
     <parentid>299151</parentid>
     <timestamp>2004-04-30T14:46:00Z</timestamp>
     <contributor>
       <username>Oxhop</username>
       <id>2551</id>
     </contributor>
     <minor />
     <comment>&quot;LocationMacedonia.png&quot;をアップロードしました。: マケド
ニアの位置 - 英語版より</comment>
     <model>wikitext</model>
     <format>text/x-wiki</format>
     <text bytes="106607" xml:space="preserve">
       ...
     </text>
     <sha1>0atpn2yli6qvrd8xzq2nnu6zp0ayovq</sha1>
   </revision>
 </page>

最後の数百行なども見てみた感じ、 title にタイトル、 text に本文があるようです。 id が各ページの ID でしょうか。

jawiki-latest-pages-meta-current.xml

ざっと見てみた感じ、 jawiki-latest-pages-articles.xml とよく似ています。それもそのはずで、データベースダウンロードページにも書かれていますが、こちらは全データのダンプで、 jawiki-latest-pages-articles.xml の方はノートページ、利用者ページを除くと書かれています。逆に言うと、こちらはノートページと利用者ページが追加されているということでしょうか。ということで、単に記事の内容だけを対象にするのであれば、  jawiki-latest-pages-articles.xml を使うようにすれば良さそうです。

この記事が気に入ったらサポートをしてみませんか?