本プロジェクトの技術的背景

正史和訳(AI)の成果物に加え、再現に必要なスクリプト・プロンプト・手順を GitHub で公開しています。

金史・和訳(閲覧・ローカル) GitHub リポジトリ(README・LICENSE) code/金史(スクリプト一式)

公開の形:本ページはサイト用フォルダ 技術解説/ に置き、同じ内容のリポジトリ akiasahi2008-hue/shisho-gijutsuindex.htmlLICENSE(MIT)・code/金史/ を載せています。code/金史/ はローカル開発ディレクトリ 史書/金史 から取り込んだスナップショットであり、作業の本線は引き続きローカル側です。含めていないもの:原文・和訳の大量テキスト、生成 HTML、URLリスト.txt などのデータ類(リポジトリ容量と著作権のため)。実行時は --base-dir でご自身のプロジェクトルートを指定し、API キーは環境変数 DEEPSEEK_API_KEY のみを使用してください(コードに直書きしないこと)。

翻訳されたテキストを公開するだけでなく、その翻訳に至った手法やスクリプトを共有することは、漢文史料のデジタル化とAI翻訳の活用を広げるための重要なステップだと考えています。 — 本ページの公開方針

1. なぜ「手法」の公開に価値があるのか

2. 金史パイプラインのファイル構成

次の表は、GitHub の code/金史/(およびローカルの 史書/金史)に含まれる主なファイルです。入手・閲覧はリポジトリの該当パス、または手元にクローンしたフォルダから行ってください。入口の説明は code/金史/README.md にまとめています。

種別 ファイル(例) 役割
パイプライン workflow.py 単巻の流れ:fetch → split → DeepSeek 翻訳 → merge。既定では 原文/巻*.txt を読み、Wikisource 取得が必要なときだけ --fetch
Windows バッチ run_translate.bat ダブルクリックで対話実行。モード1は単巻(内部で workflow.py)、モード2は巻番号範囲(run_range.py)。バッチと同じフォルダを --base-dir に自動設定。このバッチ自体は Wikisource を取りに行かず、事前に 原文/ を用意するか、別途 wikisource_fetch.pyworkflow.py --fetch を使ってください。
API deepseek_translate.py DeepSeek Chat API(https://api.deepseek.com/chat/completions)呼び出し。環境変数 DEEPSEEK_API_KEY を使用。進捗は各巻フォルダの progress.json で管理し、中断後の再開に利用。
DeepSeek APIは有料ですので、ご購入ページから必要な分だけチャージ(Top up)してください。
目安としては「100巻の翻訳で1〜2ドルぐらい」です。
分割 splitter.py トークン・行数制限対策として、--max-lines(既定 15)と --max-chars(既定 1900)でチャンク化。
取得・整備 wikisource_fetch.pybulk_preflight_fetch.pycleanup_raw_pipeline.py ウィキソース由来テキストの取得と前処理。
ウィキ整形 strip_wiki_templates.pyremove_toc_lines.pyremove_wiki_html_artifacts.py MediaWiki テンプレや __TOC__ 等の除去。手順は テキスト整備手順.md に記載。
URL 一覧 regen_url_list.py zh.wikisource の索引から巻ページ URL を収集し URLリスト.txt を生成。
プロンプト 翻訳プロンプト2.txt workflow.py--prompt-file 既定で参照。役割・文体・1行対1行・固有名詞の扱いを記述。
HTML 化 和訳/convert_kyutango_to_premium_html.py ほか 和訳テキストから閲覧用 HTML への変換(指示は 和訳/史書HTML変換指示書.md)。

「表」巻と表マークアップ(除外の考え方)

正史の志・表・列伝の「表」という区分だからといって、見出しだけで機械的に巻を除外しているわけではありません。パイプラインが扱いづらいと判断しているのは、Wikisource の wikitext に含まれる表マークアップです。具体的には、MediaWiki の表構文({| で始まる形式)、HTML の <table> タグ、{{table 系テンプレートなどが検出された巻は、bulk_preflight_fetch.py(一括取得時)や purge_volumes_with_tables.py(既存の 原文/ を検査)により、和訳対象から外し、URLリスト.txt からも除く実装になっています。検出関数は wikisource_fetch.pywikitext_has_table_markup です。

逆に、巻名が「表」でも本文がプレーンな行ベースのテキストに近い場合は、この判定に引っかからず処理対象になることがあります。単発取得では wikisource_fetch.py--reject-if-table で保存を拒否することもできます。

3. 本リポジトリで示している「公開セット」

歴史資料のデジタル化や AI 和訳を他者が再現しやすくするために、次の三層をそろえています。

① Python スクリプト(API・分割・再開)

② プロンプト(翻訳プロンプト2.txt

リポジトリ内の同名ファイルでは、次のような方針を明示しています(抜粋)。

あなたは中国正史『金史』(元・脱脱等撰)の漢文を、学術的な日本語に翻訳する専門家です。

【基本方針】
・文体は現代日本語の文語調(である調)。過度な口語・俗語は避ける。
・原文の行構造を保つ:1行の入力に対し、和訳も原則1行(…)

【固有名詞・時代】
・人名・王朝名・地名・官職名は、一般的な日本史学・漢籍慣例に従う(…)

公開用に API キーや個人パスを含むコマンド例は載せず、DEEPSEEK_API_KEY は各自の環境変数で設定してください。

③ ワークフロー(手順の全体像)

  1. ウィキソース等から原文テキストを用意する(regen_url_list.py → fetch 系スクリプト)。表マークアップ検出で除外された巻は 表検出_除外巻.txt 等に記録されます。
  2. strip_wiki_templates.py 等でテキストを整備(テキスト整備手順.md)。
  3. Windowsでは run_translate.bat から workflow.pyrun_range.py を叩くと、コマンドラインに不慣れでも単巻・範囲実行しやすくなります。
  4. workflow.py で分割・翻訳・結合し、ローカルで 和訳/巻*.txt を生成。
  5. 和訳/convert_kyutango_to_premium_html.py 等で公開用 HTML を出力し、ポータル(史書.html)から成果物へリンク。

4. 公開している場所の役割

5. 著作権・ライセンス

スクリプト類はリポジトリルートの LICENSE(MIT)に従います。改変・再利用・再配布の条件は同ファイルを参照してください。

翻訳テキスト(和訳本文)の利用・引用については、公開サイトの「ご利用・引用について」およびフッターの案内に従ってください。底本(中華書局版・維基文庫等)との関係もそこで示しています。

6. 初心者の方へ(AIエディタの活用)

スクリプトやPythonの詳しい仕組みがわからない方でも、Cursor などのAIコードエディタを活用すれば簡単に翻訳環境を構築できます。

公開しているファイル一式をローカルPCのプロジェクトフォルダにすべて保存し、Cursorでそのフォルダを開いてください。そして、CursorのAIチャットに対して以下のように指示を出します。

https://zh.wikisource.org/wiki/%E9%87%91%E5%8F%B2 (※ 例として金史のURL)を翻訳したいので、このフォルダ内にあるコード類を私の環境に合わせて修正・調整してください」

このように指示すれば、あとはAIがコードの修正から翻訳開始に必要な準備までを自動的に案内し、環境を整えてくれます。