fetch_wiki.py 用 tea 讀取 wiki;extract_dialogues.py 抽出「」對白與前後文, 並用規則判定明確的說話者。原文與輸出放在 repo 之外。 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
文本建置: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