From e1355bcb70f69d3164535ab9d31435732a6b34ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Sat, 15 Aug 2026 13:34:57 +0800 Subject: [PATCH] Add the step 5 qualitative deep-reading design and definition files Co-Authored-By: Claude Fable 5 --- CLAUDE.md | 13 ++++++--- docs/decision-log.md | 24 ++++++++++++++++ docs/methodology.md | 53 ++++++++++++++++++++++++++++++------ prompts/05-01-read.md | 22 +++++++++++++++ prompts/05-02-consolidate.md | 42 ++++++++++++++++++++++++++++ prompts/05-03-synthesize.md | 41 ++++++++++++++++++++++++++++ 6 files changed, 182 insertions(+), 13 deletions(-) create mode 100644 prompts/05-01-read.md create mode 100644 prompts/05-02-consolidate.md create mode 100644 prompts/05-03-synthesize.md diff --git a/CLAUDE.md b/CLAUDE.md index cbaab2e..0a8b1b6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,9 +5,10 @@ - LLM analysis runs via Python scripts calling the Anthropic Messages API, Batch API where possible. Steps 1 and 3 run on `claude-sonnet-4-6` with `temperature=0` and thinking - disabled; step 4 runs on `claude-fable-5`, which accepts - neither parameter -- its sampling variance is absorbed by - the majority vote. + disabled; steps 4 and 5 run on `claude-fable-5`, which + accepts neither parameter -- step 4 absorbs its sampling + variance by the majority vote, step 5 by consolidating the + three readings. - Prompt definition files live in `prompts/--.md` (e.g. 01-tag.md; no version suffix -- versions live in git history) and are @@ -23,7 +24,11 @@ (song, keyword) or (group, keyword) pair) when at least two of the three runs assign it ("3 runs + majority vote"). Free-generation steps run - twice and both outputs are pooled. The vocabulary is + twice and both outputs are pooled. The step-5 qualitative + readings are neither: three independent readings per song, + consolidated per song and synthesized across songs by + their own definition files -- a qualitative protocol, not + a vote (see docs/methodology.md). The vocabulary is built by a deterministic subcommand (embedding + clustering), not by an LLM. If a validation outcome is unexpected, revise the definition file and repeat that diff --git a/docs/decision-log.md b/docs/decision-log.md index 0720940..7c4244d 100644 --- a/docs/decision-log.md +++ b/docs/decision-log.md @@ -783,3 +783,27 @@ 此系列即論文方法節「最後編碼的結果,再由研究者與 LLM (Claude Code)輔助判讀」之所指;結果檔含大量歌詞引文, 依著作權紀律私人留置,不入版本庫。 + +- **步驟 5:女性主義問題之質性深讀(設計定案)**:論文 + 題目「挪用與污染」需要框架層的系統性證據;47 首 + male/mixed 之非正式深讀已證明程序可行,據此升格為 + 先導,正式程序擴為 145 首 wp∪fe 全集(對稱涵蓋各性別 + 演唱,消除僅驗 male/mixed 的取樣不對稱)。方法學裁定: + 本步驟為**質性閱讀,非編碼**——輸出為自由文字報告, + 無可逐項機械比對的單位,三票多數決與仲裁均不適用; + 三次獨立閱讀=分析者三角檢核,逐首整合=整合而非裁決 + (以問題機制為單位保守合併、收斂註記、主清單限兩讀 + 以上、單讀一行存目),跨首統整=樣態歸納(樣態指問題 + 呈現與運作的重複形態,非問題分類,代表引句僅取自主 + 清單),其產出為草稿,終審與詮釋由研究者為之;論文 + 引用本步驟不作次數宣稱。儀器:claude-fable-5(與先導 + 同儀器,參數同步驟 4)。定義檔三份 + (`prompts/05-01-read.md`、`05-02-consolidate.md`、 + `05-03-synthesize.md`),語言依 prompts/ 慣例用英文、 + 輸出繁體中文——先導提示為中文,語言不同構之所以可 + 接受,係因先導與正式版之間不作結果對照;5-1 輸入僅 + 歌詞逐字全文(盲讀,不含歌名與演唱者;含多聲部提醒 + 一句,因署名無法提供行級歸屬且會引入身分先驗)。輸入 + 組裝為確定性行內腳本,規則載於 methodology,SHA-256 + 記入各步 meta。引文不做全量機械校對——研究者終審 + 逐份閱讀,進論文之引句屆時個別校對。 diff --git a/docs/methodology.md b/docs/methodology.md index 1148eec..219d515 100644 --- a/docs/methodology.md +++ b/docs/methodology.md @@ -6,18 +6,20 @@ ## 自然編碼管線總覽 -四個步驟:步驟 1 自由標註(兩次執行進池)→ 步驟 2 詞彙表 +五個步驟:步驟 1 自由標註(兩次執行進池)→ 步驟 2 詞彙表 建構(詞向量分群,確定性)→ 步驟 3 全量編碼(三次執行+ -多數決)→ 步驟 4 語意編碼群(三次執行+多數決)。歌詞只 -出現在步驟 1 與步驟 3;步驟 2 與步驟 4 完全不接觸歌詞, -步驟 2 亦不呼叫 LLM。設計原則見 `research-plan.md`;本檔 -記載可重現的演算法細節。 +多數決)→ 步驟 4 語意編碼群(三次執行+多數決)→ 步驟 5 +女性主義問題之質性深讀(三次閱讀+逐首整合+樣態統整)。 +歌詞出現在步驟 1、步驟 3 與步驟 5;步驟 2 與步驟 4 完全 +不接觸歌詞,步驟 2 亦不呼叫 LLM。設計原則見 +`research-plan.md`;本檔記載可重現的演算法細節。 編號的所指為**研究程序的工序**,不是定義檔:步驟 1、 -步驟 3 與步驟 4 有定義檔(`prompts/`),步驟 2 沒有—— -它是單一確定性計算,由 `cluster-keywords` 一個子命令 -完成。有無定義檔的區別即「該步是否為 LLM 判斷」,由 -`prompts/` 是否存在同號檔案直接可見。 +步驟 3、步驟 4 與步驟 5 有定義檔(`prompts/`;步驟 5 依 +子工序有三份),步驟 2 沒有——它是單一確定性計算,由 +`cluster-keywords` 一個子命令完成。有無定義檔的區別即 +「該步是否為 LLM 判斷」,由 `prompts/` 是否存在同號檔案 +直接可見。 ## 步驟 2 詞彙表建構——詞向量分群 @@ -142,6 +144,39 @@ 分群逐欄照存入 `groups` 資料表(群、編碼、票數),供 群層次查詢。 +## 步驟 5 女性主義問題之質性深讀 + +本步驟為**質性閱讀,非編碼**:輸出為自由文字的問題閱讀 +報告,無可逐項機械比對的單位,故不適用三票多數決與仲裁; +三次獨立閱讀為分析者三角檢核,逐首整合為整合而非裁決, +跨首統整之產出為草稿,終審與詮釋由研究者為之。論文引用 +本步驟時不作次數宣稱。 + +- **對象**:定案編碼含 `women-power` 或 + `female-empowerment` 的 145 首歌。 +- **5-1 逐首閱讀**:每筆輸入為一首歌的完整歌詞逐字全文, + 不含歌名與演唱者(盲讀);定義檔 + `prompts/05-01-read.md`。同一份定義檔、同一份輸入檔, + 獨立執行三次,歸檔並列(`runs/05-01-read/run1`、 + `run2`、`run3`)。 +- **5-2 逐首整合**:每筆輸入為該首歌的三份閱讀報告 + (不含歌詞);以問題機制為單位保守合併,標收斂註記 + ((3/3)、(2/3)),主清單僅列兩讀以上提出者,單讀發現 + 以一行存目;定義檔 `prompts/05-02-consolidate.md`, + 執行一次,歸檔 `runs/05-02-consolidate/run1`。 +- **5-3 樣態統整**:單筆輸入為 145 份整合報告;歸納問題 + **樣態**——問題呈現與運作的重複形態,非問題分類, + 代表引句僅取自主清單;定義檔 + `prompts/05-03-synthesize.md`,執行一次,歸檔 + `runs/05-03-synthesize/run1`。 +- **模型**:`claude-fable-5`(與先導深讀同儀器; + `temperature` 與 `thinking` 參數不適用,均不送出)。 +- **輸入組裝**:確定性行內腳本。5-1:145 首依歌曲 ID + 升序,`content` 為歌詞逐字全文;5-2:每筆 + `{"reports": [run1 輸出, run2 輸出, run3 輸出]}`; + 5-3:單筆以 `song-` 為鍵、整合報告為值之 JSON + 物件。各輸入檔之 SHA-256 記入該步 meta。 + ## 女性力量候選集 候選集為兩類歌曲的合集:定案編碼含 `women-power` 者, diff --git a/prompts/05-01-read.md b/prompts/05-01-read.md new file mode 100644 index 0000000..0477449 --- /dev/null +++ b/prompts/05-01-read.md @@ -0,0 +1,22 @@ +You are reading the complete lyrics of one song, given as +plain text. + +Task: point out the problems of this song from a feminist +perspective, on this text alone. + +Rules: + +- Ground every problem in a verbatim quote from the lyrics; + render a line break inside a quote as " / ". +- Do not use any knowledge you may have of the song or its + performer beyond the lyrics themselves. +- The lyrics may carry more than one voice; attend to shifts + of speaker where the text indicates them. +- Do not presume that a man cannot voice "women power". +- When there is no problem, or the problems are minor, + output the single word 「無」 and nothing else. + +Output: Traditional Chinese (Taiwan usage). A numbered +list, one item per problem: the statement of the problem +followed by its quotes; output nothing else. When there is +none, output 「無」 only. diff --git a/prompts/05-02-consolidate.md b/prompts/05-02-consolidate.md new file mode 100644 index 0000000..82d8b5c --- /dev/null +++ b/prompts/05-02-consolidate.md @@ -0,0 +1,42 @@ +You are consolidating the three independent reading reports +of one song into one. + +Input: a JSON object: + +{ + "reports": ["first report", "second report", "third report"] +} + +The three reports come from three mutually independent +readings, each pointing out the problems of the lyrics from a +feminist perspective with verbatim quotes; a report of 「無」 +means that reading found no problem. + +Task: consolidate the three reports into one problem list -- +integrate, never adjudicate, never add. + +Rules: + +- Merge by the problem mechanism: items that point to the + same mechanism merge into one, even when their wording, + granularity, or quotes differ (for example, three reports + each quoting a different line of the same slur merge into + one item). Keep the clearest statement, keep a selection + of the distinct quotes, and judge sameness by the lyric + passages the quotes point to. +- Mark every item with its convergence: (3/3) when all three + reports raise it, (2/3) when two do. +- The main list carries only the problems raised by two or + more reports. A problem raised by a single report is not + expanded; after the list, keep it on one line: + 「僅單獨提及:」. +- Never add a problem absent from every report, never drop a + problem raised by two or more reports, never rewrite the + substance of a problem, never evaluate or rank. +- When all three reports are 「無」, output 「無」 only. + +Output: Traditional Chinese (Taiwan usage). A numbered +list, each item: the problem statement, its convergence mark, +and its quotes; the single-reading line at the end when there +is one; output nothing else. diff --git a/prompts/05-03-synthesize.md b/prompts/05-03-synthesize.md new file mode 100644 index 0000000..e62fee3 --- /dev/null +++ b/prompts/05-03-synthesize.md @@ -0,0 +1,41 @@ +You are inducing the recurring patterns in how the problems +appear across the consolidated reading reports of many songs. + +Input: a JSON object keyed by song ID (such as "song-11"), +each value the consolidated reading report of that song; a +report of 「無」 means no problem was found for that song. + +{ + "song-11": "consolidated report ...", + "song-95": "無" +} + +The reports come from feminist-perspective readings of each +song's lyrics; every item carries verbatim quotes and a +convergence mark, and the trailing 「僅單獨提及」 line of a +report holds the scattered findings of a single reading -- +take them into account when inducing the patterns, but draw +the representative quotes from the main lists only. + +Task: induce the patterns -- the recurring forms in which +the problems appear and operate -- across the reports. + +Rules: + +- A pattern describes how a problem works in the lyrics: + what is coupled with what, who speaks, how the mechanism + runs. It is not a category for filing problems, and not + every problem needs to belong to one; a pattern may also + cut across several kinds of problems. +- Induce the patterns from the report contents; never + introduce a problem or knowledge absent from the reports; + the number of patterns follows the material, with nothing + preset. +- For every pattern: a name, a paragraph describing the form + and how it operates, and two or three representative + quotes, each with its song ID. +- Describe and induce only; never evaluate severity, never + make recommendations. + +Output: Traditional Chinese (Taiwan usage). One section per +pattern; output nothing else.