Pass the coding keywords as input instead of baking them into the prompt

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-17 22:38:29 +08:00
co-authored by Claude Opus 5
parent ce4f9ad481
commit 04d5095e44
8 changed files with 303 additions and 119 deletions
+22 -14
View File
@@ -47,16 +47,23 @@ LLM。設計原則見 `research-plan.md`;本檔記載可重現的
實作本步,四種模型六次執行全部無法維持完整分割,
已棄用(詳見 `decision-log.md` 2026-08-05;棄用的
定義檔止於 git 歷史,見 `git log -- prompts/`)。
- **產物**:分群明細 CSV(欄位 Group、Keyword,一列一個
成員,依兩欄排序)記錄機器算出的分割;定案碼表 JSON
`{"keywords": [...]}`)記錄實際交給模型的碼,即組名
加上先驗主題詞。兩者分開,因為前者是分群結果、後者
含研究者的介入。
- **可重現性**:同一輸入、同一釘定模型、同一參數逐次
重現。不同 CPU/BLAS 實作的浮點尾數差異可能使邊界
詞的歸屬翻動,屬已揭露的限制;論文所用詞彙表逐字
詞的歸屬翻動,屬已揭露的限制;論文所用表逐字
commit,引用單位為該份定案檔案。
### women-power 的注入
定案詞彙表為 50 個分群組名再加上 `women-power` 一詞,共
51 個碼。`women-power` 是研究者任意決定的先驗主題(即本
論文的主題本身),不由資料產生,屬揭露的儀器介入。
論文的主題本身),不由資料產生,屬揭露的儀器介入。該詞
以常數寫在分群子命令內、隨定案碼表一併輸出,不經人手
編輯;分群明細 CSV 不含它,兩份產物因此各自誠實。
注入而非另設篩選軌的理由:讓研究者的主題詞與模型自己
收斂出的類別(分群已自行長出 `female-empowerment` 等組)
@@ -97,23 +104,24 @@ LLM。設計原則見 `research-plan.md`;本檔記載可重現的
每一步的輸出如何變成下一步的輸入,皆為確定性程序,規則
明定如下:
- **歌詞輸入檔(步驟 1、3 共用**`export-llm-input`
工作儲存產出,每筆 `{"id": "song-<ID>", "content":
<歌詞>}`依歌曲 ID 升序。兩個讀歌詞的步驟共用同一
檔,SHA-256 記入各步 meta。
- **歌詞輸入檔(步驟 1**`export-llm-input`工作
儲存產出,每筆 `{"id": "song-<ID>", "content": <歌詞>}`
依歌曲 ID 升序。步驟 3 的輸入由同一子命令、同一工作
儲存產出(見下),兩步的語料同一性由此成立;各步
輸入檔的 SHA-256 記入該步 meta。
- **步驟 1 → 2-1**`pool-keywords` 讀兩份執行歸檔的
`output.jsonl`(一律以換行字元 `\n` 切行——歌詞含
U+0085 等控制字元時,`str.splitlines()` 類的通用切行
會截斷 JSON 字串,實測踩中),輸出關鍵字純文字檔與
出處 CSV。
- **步驟 2-1 → 2-2**`cluster-keywords` 讀關鍵字純文字檔,
輸出具名分組(組名 → 成員詞,組名與成員皆字典序)
與記錄嵌入模型、revision、演算法參數、輸入 SHA-256 的
meta。
- **步驟 2-2 → 3 定義檔**:50 個組名與 `women-power` 合併
後以字典序逐行填入 `prompts/03-01-code.md` 的詞彙表節
(逐字),檔案隨 git commit 後方可執行——步驟 3 的
定義檔因此自我完備,論文附錄可直接引用
- **步驟 2-1 → 2-2**`cluster-keywords` 讀關鍵字純文字
檔,輸出分群明細 CSV 與定案碼表 JSON。
- **步驟 2-2 → 3 輸入檔**`export-llm-input --extras
<定案碼表>` 自工作儲存產出步驟 3 的輸入,每筆
`{"id": "song-<ID>", "content": <字串>}``content` 為
固定鍵序序列化的 `{"lyrics": …, "keywords": [...]}`
依歌曲 ID 升序。碼表以參數傳入而非填進定義檔——定義
檔只規定任務形狀,換詞彙表、換演算法都不必改它
- **步驟 3-1 兩次執行 → 3-2**:逐首比對標籤集合(鍵
集合,引述不參與比對);僅有分歧的歌入仲裁輸入
JSONL,依歌曲 ID 升序,每筆 `id` 沿用 `song-<ID>`、