Add the pool-keywords subcommand for the tagging runs' keywords

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-17 22:38:28 +08:00
co-authored by Claude Opus 5
parent 14a3cbe121
commit d73de3d01c
7 changed files with 481 additions and 11 deletions
+14 -11
View File
@@ -26,10 +26,11 @@ LLM。設計原則見 `research-plan.md`;本檔記載可重現的
### 步驟 2-1 進池
兩次標註執行的全部關鍵字取聯集、逐字串精確去重、字典序
排列。失敗與拒答的記錄跳過(其歌曲不貢獻關鍵字);解析
時偵測重複鍵,違規即失敗。同時寫出處記錄(關鍵字 →
(執行別,歌曲 ID)清單),供收斂軌跡分析;出處記錄不
進任何下游輸入。
排列,寫成純文字檔(一行一個關鍵字)。失敗與拒答的記錄
跳過(其歌曲不貢獻關鍵字);解析時偵測重複鍵,違規即
失敗。同時寫出處 CSV(欄位 Keyword、Run、Song,一列一筆
出現,依三欄排序),供收斂軌跡分析;出處記錄不進任何
下游輸入。
### 步驟 2-2 分群
@@ -103,9 +104,9 @@ LLM。設計原則見 `research-plan.md`;本檔記載可重現的
- **步驟 1 → 2-1**`pool-keywords` 讀兩份執行歸檔的
`output.jsonl`(一律以換行字元 `\n` 切行——歌詞含
U+0085 等控制字元時,`str.splitlines()` 類的通用切行
會截斷 JSON 字串,實測踩中),輸出關鍵字 JSON 陣列
出處記錄
- **步驟 2-1 → 2-2**`cluster-keywords` 讀關鍵字陣列
會截斷 JSON 字串,實測踩中),輸出關鍵字純文字檔與
出處 CSV
- **步驟 2-1 → 2-2**`cluster-keywords` 讀關鍵字純文字檔
輸出具名分組(組名 → 成員詞,組名與成員皆字典序)
與記錄嵌入模型、revision、演算法參數、輸入 SHA-256 的
meta。
@@ -123,10 +124,12 @@ LLM。設計原則見 `research-plan.md`;本檔記載可重現的
保留的標籤,寫入逐首紀錄檔(歌依 ID 升序、標籤按
字典序,各標籤附其定案時的引述與來源層——共識或
仲裁)。
- **序列化通則**:所有中間檔為 UTF-8 JSON,鍵序與元素
序皆依上列規則明定,無時間戳、無隨機成分;解析一律
偵測重複鍵,違規即失敗。給定相同的 LLM 執行輸出,
全部交接產物逐位元組可再生。
- **序列化通則**:所有中間檔為 UTF-8,欄序、鍵序與元素
序皆依上列規則明定,無時間戳、無隨機成分;JSON 解析
一律偵測重複鍵,違規即失敗。人讀為主的產物採純文字或
CSVCSV 依 RFC 4180,標題列字首大寫),機器交接檔採
JSON。給定相同的 LLM 執行輸出,全部交接產物逐位元組
可再生。
## 執行與稽核