I’m Feeling Lucky →

Wikipediaの映画のページにランダムに遷移します。

遷移先は、映画の公開日などが今日の「mm月dd日」と一致する作品です。

備忘:

Wikipediaダンプファイル
https://dumps.wikimedia.org/jawiki/latest/

Wikipediaのダウンロードできるデータファイル一覧
http://www.mwsoft.jp/programming/munou/wikipedia_data_list.html

ファイル
jawiki-latest-pages-articles.xml.bz2(3.9G)
jawiki-latest-pages-articles.xml(16.3G)

ツール:WikiExtractor
https://github.com/attardi/wikiextractor

  • XMLファイルが大きすぎて、viでも開けません。ターミナルがフリーズします。
  • Python 3.11では、ツールが実行できません。既知のバグの可能性があります。
  • Python 3.10では、XMLからテキストファイルへの変換はできますが、変換するとページ右側に表示される公開日の情報などが完全に削除されることが判明しました。
  • コマンド/シェルスクリプトでXMLの解析を試みましたが、行指向の処理では判定後に上の行を取得できないという問題が発生し、断念しました。AWKを頑張って使うよりも、Pythonでパースする方が良いと判断し、Pythonスクリプトを作成しました。
  • ページ内のテンプレート「Template:Infobox Film」の情報をXMLファイルから抽出しました。
  • 1ページに複数回テンプレートが登場する場合があります。
  • テンプレートの開始「{{Infobox Film」、終了「}}」の書き方が統一されていません。終了「}}」がテンプレートの終了以外でも使用される場合があります。「|}}」「次作 =}} xxx」「}} 本文開始」など、終了の表現方法が複数存在し、単純な正規表現ではマッチングできませんでした。
  • 急がば回れですが、「Infobox Film」が含まれるページのみを抽出すると、作業が容易になります。(16.3GB → 41MB)
  • 「<page>」のタグ数は2,808,250です。
  • 「Infobox Film」のテンプレートを含むページ数は25,173です。
  • 「{{Infobox Film」と「}}」の間に[1][2]などの注釈リンクが含まれており、今日の日付がページに表示されていない可能性があります(抽出したデータの妥当性を検証できていません)。
  • テンプレートには改行が含まれており、1ページを1行のCSVで管理するのは難しいため、SQLiteを使用しました。
  • MySQLにデータを格納するためのツールが公開されています。最初からMySQLにデータを格納するべきだったかもしれませんが、MySQLはローカル環境で使用しているため、仕方ありません。

ChatGPTに添削してもらったら丁寧な文章になった。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です