2026年6月4日木曜日

MediaWiki(4)

MedieWiki(3)からの続き 

Q(koshix):
日本語Wikipediaの物理学者記事にあるテンプレートやモジュールのうちで主要なものを,自分のMediaWikiサイト,Fisica Wiki に移植するプロジェクトの件です。
codexにお願いして,
koshi@mba2020 ~ % ls -al jawiki-template-test 
total 208
drwxr-xr-x   17 koshi  staff    544  5月  1 13:40 .
drwxr-x---+ 131 koshi  staff   4192  5月  5 16:40 ..
-rw-r--r--    1 koshi  staff    464  5月  1 11:17 articles.txt
-rw-r--r--    1 koshi  staff    749  5月  1 13:41 core_export_pages.txt
-rw-r--r--    1 koshi  staff    659  5月  1 13:02 export_pages.txt
-rw-r--r--    1 koshi  staff   7912  5月  1 12:58 extract_template_dependencies.py
-rw-r--r--    1 koshi  staff   8317  5月  1 11:29 extract_templates.py
-rw-r--r--    1 koshi  staff   1614  5月  1 13:01 make_export_pages.py
-rw-r--r--    1 koshi  staff   1956  5月  1 12:53 make_module_list.py
-rw-r--r--    1 koshi  staff   3488  5月  1 13:33 make_template_export_pages.py
-rw-r--r--    1 koshi  staff    307  5月  1 12:59 modules_needed.txt
-rw-r--r--    1 koshi  staff   2866  5月  1 13:08 README.md
-rw-r--r--    1 koshi  staff     17  4月 30 22:37 requirements.txt
-rw-r--r--    1 koshi  staff   1345  5月  1 12:19 template_dependencies.csv
-rw-r--r--    1 koshi  staff   2284  5月  1 13:35 template_pages.txt
-rw-r--r--    1 koshi  staff  18146  5月  1 11:54 template_usage.csv

こんな状況になっています。自分がなにをしたか,してもらったかが,よくわからなくなっているので,状況を整理して,現在の進行状況がどうなっているか,これからどうすればいいか,を教えてください。必要があれば,それぞれのファイルや現在のFisica Wikiの内容を確認してお知らせすることが出来ます。どうぞよろしくお願いいたします。


A(ChatGPT):
状況はかなり整理できます。結論から言うと、いまの `jawiki-template-test` は、日本語Wikipediaの物理学者記事を材料にして、Fisica Wikiへ移植すべきテンプレート・モジュールの候補リストを作るための作業ディレクトリになっています。

ただし、ここにあるファイルだけを見るかぎり、これはまだ「移植そのもの」ではなく、主に次の段階まで進んだ状態です。

・第1段階:物理学者記事を調べる
・第2段階:それらの記事で使われているテンプレートを抽出する
・第3段階:そのテンプレート群に必要な関連テンプレート・モジュールを推定する
・第4段階:日本語Wikipediaの特別:データ書き出しに渡すページ一覧を作る

ここまでは、かなり進んでいます。一方で、Fisica Wiki側に何が実際に取り込まれていて、何がまだ赤リンク・Luaエラー・TemplateStylesエラーになっているかは、この一覧だけではまだ確定できません。

ファイルごとの意味は、おそらく次のようになります。

`articles.txt` は、調査対象にした物理学者の記事名リストです。たとえば「ハンス・ベーテ」「ニールス・ボーア」「湯川秀樹」のような記事名が入っているはずです。ここが出発点です。

`extract_templates.py` は、`articles.txt` にある記事を日本語Wikipediaから取得して、それぞれの記事中に現れるテンプレートを抽出するスクリプトだと思われます。その結果が `template_usage.csv` です。

`template_usage.csv` は、どの記事でどのテンプレートが使われているかを記録した表です。Fisica Wikiに物理学者記事を移すとき、どのテンプレートが頻出するかを見るための中心的な資料です。

`extract_template_dependencies.py` は、テンプレートがさらに別のテンプレートやモジュールを呼んでいないかを調べるスクリプトです。Wikipediaテンプレートは単体では動かず、内部で `{{Ifempty}}` や `{{Citation}}` や `#invoke:Citation/CS1` などを呼ぶため、この依存関係の抽出が重要です。

`template_dependencies.csv` は、その依存関係の表です。たとえば「テンプレート:Cite web は モジュール:Citation/CS1 を必要とする」といった情報が入っているはずです。

`make_module_list.py` は、依存関係の中から `モジュール:` 名前空間のものだけを抜き出すためのスクリプトでしょう。

`modules_needed.txt` は、必要と推定されたLuaモジュール一覧です。サイズが307バイトなので、かなり小さいリストです。過去の経緯から考えると、`モジュール:Citation/CS1` 系、`モジュール:Arguments`、`モジュール:If empty`、`モジュール:String`、`モジュール:TableTools`、`モジュール:Yesno` あたりが入っている可能性があります。

`make_template_export_pages.py` は、必要なテンプレートを日本語Wikipediaの「特別:データ書き出し」に渡しやすいページ名リストへ整形するスクリプトだと思われます。

`template_pages.txt` は、移植候補のテンプレートページ一覧です。サイズが2284バイトなので、ある程度の数があります。

`make_export_pages.py` は、テンプレートとモジュールなどを合わせて、最終的なエクスポート対象ページ一覧を作るスクリプトでしょう。

`export_pages.txt` は、最初に作ったエクスポート用ページリストだと思われます。

`core_export_pages.txt` は、より絞り込んだ「主要部分だけ」のエクスポート用ページリストだと思われます。名前から見ると、全候補ではなく、Fisica Wikiでまず動かすべき中核テンプレート・モジュールをまとめたものです。

`README.md` は、Codexが作った作業説明書です。ここに実行手順や前提が書かれているはずです。まず読むべきファイルです

`requirements.txt` はPythonスクリプトに必要なライブラリです。17バイトなので、たぶん `requests` など最小限だけでしょう。

現時点の進行状況を、作業フェーズで言うとこうです。

1.まず、分析用ツール群は作られている。これはすでに達成されています。`extract_templates.py`、`extract_template_dependencies.py`、`make_export_pages.py` などがそろっているので、Codexは「日本語Wikipediaからテンプレート使用状況を調べ、移植候補リストを作る」ための小さな道具立てを用意したことになります。

2.次に、物理学者記事に使われるテンプレート候補も抽出済みです。`template_usage.csv`、`template_dependencies.csv`、`template_pages.txt`、`modules_needed.txt` が存在するので、少なくとも一度は処理が走っています。

3.さらに、日本語WikipediaからXMLエクスポートするためのページ一覧も作成済みです。`export_pages.txt` と `core_export_pages.txt` があるので、次の作業はこれを使って日本語Wikipediaの「特別:データ書き出し」からXMLを取得し、Fisica Wikiの「特別:データ取り込み」で取り込むことになります。

(中略)

これからやるべきことは、いきなり再インポートではなく、まず「現在地の棚卸し」です。
まずMac側で、次のコマンドを実行して内容を確認してください。

(後略)

以下,指示された通りに進めていく。長いモジュールやテンプレートのリストを提示して,これがどうなっているかチェックせよといわれたが,手動だとやってられない。相談したところ,MediaWiki API を使えば良いといわれたので,以下,ChatGPTがその都度作ってくれる,APIをたたいてチェックするpythonコードをコマンドラインで入力し,その出力結果をChatGPTの対話画面に貼付ける,という操作を延々と繰り返す。その前提として,check_fisica_pages.pyと,check_fisica_rendered.py というコードを準備してくれた。

一例を見せると下記のようなものである。
python - <<'PY'
import requests

API_URL = "https://nucleus.sakura.ne.jp/wiki/api.php"

text = """
これは仮リンクのテストです。

{{仮リンク|Test Person|en|Test person}}
"""

r = requests.get(API_URL, params={
"action": "parse",
"format": "json",
"contentmodel": "wikitext",
"text": text,
"prop": "text",
"formatversion": "2",
}, timeout=30)

data = r.json()
html = data.get("parse", {}).get("text", "")
print(html[:3000])
PY
その後,レオ・シラードとかハンス・ベーテとかでチェックしたが,表示がおかしいのは.cssファイルのせいだということになり,この簡易版を適当に作ってもらって現在に至る。プログラミングのプロセスが,過去とは完全に違うスタイルになってしまう。

0 件のコメント: