Files
jsc-plugins/tools/corpus/README.md
T
Jeffery (jiantw83)andClaude Sonnet 5.5 9cf8196a3e feat: wiki 讀取與對白抽取腳本 (#4)
fetch_wiki.py 用 tea 讀取 wiki;extract_dialogues.py 抽出「」對白與前後文,
並用規則判定明確的說話者。原文與輸出放在 repo 之外。

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 17:12:20 +00:00

1.9 KiB
Raw Blame History

文本建置:wiki → 對白

建置流水線的第一段。這些腳本不屬於插件執行期;原文與輸出放在 repo 之外,不入版本控制。

1. 讀取 wiki

用 tea 的驗證讀取 Gitea wiki 全部頁面,存成 markdown:

python3 -I tools/corpus/fetch_wiki.py jiantw83/sao ~/anime-companion-data/sao/wiki

2. 抽出對白

抽出所有「」對白與前後文,並用規則判定明確的說話者:

python3 -I tools/corpus/extract_dialogues.py ~/anime-companion-data/sao/wiki ~/anime-companion-data/sao/dialogues.jsonl

輸出每個對白一行 JSON:

欄位 說明
id v{冊}c{章}-{章內序號}
volume、chapter、page、para 位置;page 是分頁,para 是章內段落序號
text 對白內容(不含「」)
before、after 同段落中對白前後的敘述
prev_par、next_par 前後段落
speaker 規則判定的角色代號,無法判定為 null
alias 判定依據的名字(例如「莉法」或「直葉」)
mode 由別名推得的模式:ingame、real、leafa
confidence high:句中只有一個候選且有說話動詞;medium:多個候選取句首第一個,需 W4 覆核
rule lead_in(同段落「…說:」)、lead_in_prev(前一段以「:」結尾)、trail(對白後接「某某說」)
candidates 句中出現的所有候選名字
suspect_duplicate 同一章 6 段內出現相同的長對白,疑為 wiki 頁面銜接的重複

規則的邊界

這個譯本很少直接寫「某某說」,多數對白靠上下文(「他這麼說」「她點了點頭」)或輪流發言判斷,所以規則只涵蓋約一成的對白。其餘由 W4 的 sub-agent 標註。

別名表在 characters.json,新增角色或別名時改它。

測試

cd tools/corpus && python3 -m unittest -q test_extract_dialogues