問題ができるまで
— ダンプデータから4万問が生まれる舞台裏

WikiLinkGame には4万問以上の問題が収録されていますが、これらはすべて、日本語版 Wikipedia のデータから自動生成したものです。「自動生成」と言うと簡単そうに聞こえますが、クイズとして成立させるまでには、いくつもの工程があります。このコラムでは、その舞台裏を紹介します。

出発点は「ダンプデータ」

まず大前提として、本サイトは遊ばれるたびに Wikipedia へアクセスしているわけではありません。大勢の人が遊ぶたびにリンクを調べに行くと、Wikipedia のサーバーに余計な負担をかけてしまうからです。代わりに使っているのが、Wikipedia が公式に無償公開しているデータベース・ダンプです。これは、ある時点の全記事のデータをまとめて書き出した巨大なファイルで、誰でもダウンロードして研究や開発に使えます。日本語版だけでも記事は150万本規模、本文どうしを結ぶリンクは数千万本にのぼります。

「本文のリンク」だけを取り出す

次の工程は、ダンプから「リンク」を取り出すことです。ここにひとつ、こだわりがあります。Wikipedia の記事ページには、本文中の青いリンクのほかに、ページ下部のナビゲーションボックス(関連項目をまとめた表)など、テンプレートによって自動的に張られるリンクもたくさんあります。これらをそのまま使うと、「本文を読んでもどこにも書かれていないのに、なぜか正解」という不自然な問題ができてしまいます。そこで WikiLinkGame では、正解の経路には記事本文に実際に書かれているリンクだけを使います。プレイヤーが実際に記事を読みながらたどれる経路だけが、正解として採用されるわけです。

不正解の選択肢こそ手間がかかる

意外かもしれませんが、いちばん手間がかかるのは正解ではなく不正解の選択肢づくりです。不正解の条件は「お題から1回でも2回でもたどり着けないこと」。これを保証するには、お題の記事から2クリック以内に到達できる記事の集合をすべて洗い出し、その中に含まれていない記事を選ぶ必要があります。ハブになる記事を経由すると2クリック圏はあっという間に数十万記事規模まで広がるため、この判定は見た目以上に重い計算です。しかも不正解の判定では、本文のリンクだけでなくナビゲーションボックスなどテンプレート由来のリンクまで含めた「広めの基準」で到達できないことを確認しています。正解は狭い基準で確実にたどり着け、不正解は広い基準でも届かない——この非対称な設計によって、「実は不正解にもたどり着けた」という事故を防いでいます。

クイズとして面白くするための選別

機械的に作れる問題の候補は膨大にありますが、そのままでは面白いクイズになりません。誰も知らないマイナーな記事がお題では考えようがなく、逆に選択肢が地味すぎても答え合わせの楽しみがありません。そこで、お題には比較的よく知られた記事を選び、選択肢にも読み応えのある記事を優先するなど、いくつかの基準で候補を絞り込んでいます。それでも4万問以上が残るのですから、Wikipedia のリンク網の豊かさには驚かされます。

「スナップショット」であることの意味

ダンプデータはある時点の写し(スナップショット)なので、その後に Wikipedia 側で記事が編集されると、リンクの構造が変わることがあります。つまり、ごくまれに「今の Wikipedia では経路が変わっている」場合があり得ます。トップページの下部に記載しているダンプの取得時点は、そのための表記です。裏を返せば、皆さんが遊んでいる問題は「ある日の Wikipedia の姿」を切り取ったものでもあります。答え合わせで実際の記事を開いたとき、もし経路が変わっていたら、それは Wikipedia が今日も誰かの手で育てられている証拠です。

▶ 今日の10問に挑戦する / ほかのコラムを読む