110 Commits
Author SHA1 Message Date
imacat 1d5356271b Add the conference paper. 2026-08-17 08:51:24 +08:00
imacatandClaude Fable 5 400364206b Add the wide pattern matrix of the women-power songs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:51:24 +08:00
imacatandClaude Fable 5 4c4d1a95d1 Rewrite the research plan to the executed pipeline
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:51:24 +08:00
imacatandClaude Fable 5 ef1013d6d0 Import the settled patterns and annotations into the working store
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:51:24 +08:00
imacatandClaude Fable 5 696995c7a9 Add the tally-annotations subcommand settling the pattern matrix
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:51:19 +08:00
imacatandClaude Fable 5 0cbb96c0e1 Archive the step 5-4 pattern-annotation runs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 2253971cd6 Archive the step 5-3 grouped synthesis runs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 36f388bfcf Add the step 5 grouped synthesis and pattern-annotation design
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 0f5e2edfab Correct three performer genders via build-db --gender-corrections
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 5561ddffee Archive the step 5 reading, consolidation, and synthesis runs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 986355c738 Add the step 5 qualitative deep-reading design and definition files
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 64e3439a96 Record the Fable 5 auxiliary deep-reading experiments in the decision log
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 3a4fe05bc4 Import the settled code groups into the working store
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:42 +08:00
imacatandClaude Fable 5 26d57965c4 Add the tally-groups subcommand settling results/groups.csv
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 08:50:38 +08:00
imacatandClaude Fable 5 54d38d81b2 Replace the quote newline escape with the lyric line-break convention
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 00:31:31 +08:00
imacatandClaude Fable 5 d589ed9031 Add step 4 semantic code grouping by majority vote on claude-fable-5
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 00:01:48 +08:00
imacatandClaude Fable 5 fccc6d1f32 Add a model option to run-llm for the claude-fable-5 model
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 00:00:52 +08:00
imacatandClaude Fable 5 6e5dc411c8 Record the blind semantic code grouping in the decision log
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 20:41:17 +08:00
imacatandClaude Fable 5 c3b375e55c Record the full k-value comparison table in the decision log
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 20:41:17 +08:00
imacatandClaude Opus 5 b18389f06d Derive the performing group genders from their Wikidata members
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:17 +08:00
imacatandClaude Opus 5 547a068e7b Derive the song performer gender and identify Pinkfong as Hope Segoine
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 3a5271a4d3 Drop the redundant HTTP error class from the retry catch
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 2e192c481a Pin the parenthesized members pattern to a single split point
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 0ac8bd4e39 Make the module-level helpers private instead of protected
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 3f12dc2f62 Extract the protected name restoration out of the credit parser
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 36f0092e2d Classify the transient request errors in one place
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 10f1e092f7 Extract the record content builder out of the export line builder
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 c65d8cff8d Stop binding the unread role in the parsed credit check
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 ad3fc21776 Remove the unused skipped counter of the artist fetcher
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 a656356c7d Capture the command output in the parent-directory export test
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:16 +08:00
imacatandClaude Opus 5 4e85ed63be Merge the two identical chart-position formatters of the CSV exporter
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 f788acf30c Unify the export-llm-input and run-llm summary lines with build-db
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 e6c7ec60c8 Close the HTTP error fixtures when the test ends
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 228598fe8b Run the tests on an in-memory store and dispose the engine afterwards
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 1da2e6dfdc Trim the build-db summary to songs, artists, codings and elapsed time
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 c1cd74ea7c Import the settled coding into the working store
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 df5fecd001 Settle the coding of the 883 songs against the 101 keywords
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 186d2fdea3 Repair the coding output with a reviewed correction table
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 bb25a9d3ad Record how far the coding output departs from its stated contract
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 0eaf8ebb9b Add the tally-codings subcommand for the majority vote
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:15 +08:00
imacatandClaude Opus 5 067aedcae2 Archive the third coding run
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 20:41:05 +08:00
imacatandClaude Opus 5 d5a6bb7102 Settle the coding by a majority of three runs instead of an arbitration
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 18:14:52 +08:00
imacatandClaude Opus 5 b792f61806 Import each command module only when its subcommand runs
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 14:45:36 +08:00
imacatandClaude Opus 5 c2ae17453a Restructure cluster-keywords into builders and result records
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 14:40:37 +08:00
imacatandClaude Opus 5 a88302fdc2 Archive the arbitration pass over the coding disagreements
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 13:12:25 +08:00
imacatandClaude Opus 5 930d1cec3e Quote one line per kept keyword in the arbitration
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 13:11:43 +08:00
imacatandClaude Opus 5 a230bfe0c9 Build the arbitration input with a per-ID extras merge
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 09:22:48 +08:00
imacatandClaude Opus 5 b7b35f7b68 Add the compare-codings subcommand for the arbitration handoff
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 09:06:23 +08:00
imacatandClaude Opus 5 309113692b Drop the source-provenance artifact from cluster-keywords
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 08:40:11 +08:00
imacatandClaude Opus 5 a0687a4793 Rename the arbitration definition file to 03-02-arbitration
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 07:49:23 +08:00
imacatandClaude Opus 5 9043fd85f2 Archive the second coding pass against the 101 keywords
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 07:38:34 +08:00
imacatandClaude Opus 5 0a273dd81a Archive the first coding pass against the 101 keywords
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 07:37:59 +08:00
imacatandClaude Opus 5 8af2410e90 Keep the medoid group names after testing LLM naming
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 07:05:48 +08:00
imacatandClaude Opus 5 3f3deb3417 Report the clustering result in a sentence
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 07:04:03 +08:00
imacatandClaude Opus 5 aff654081e Rebuild the coding keywords with 100 groups
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 06:39:33 +08:00
imacatandClaude Opus 5 33a9da6009 Record the clustering invocation in a meta file
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 06:18:09 +08:00
imacatandClaude Opus 5 6e95e49875 Raise the clustering to 100 groups
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 05:55:11 +08:00
imacatandClaude Opus 5 e6ca05b837 Quote one line per assigned keyword
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 05:54:52 +08:00
imacatandClaude Opus 5 5bde8ac534 Take the extra coding keywords from the command line
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 21:06:09 +08:00
imacatandClaude Opus 5 9d37b0ba21 Merge the keyword pooling into cluster-keywords
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 20:55:22 +08:00
imacatandClaude Opus 5 6d141b537a Separate the clustered keyword list from the keywords to merge
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 20:22:15 +08:00
imacatandClaude Opus 5 6d33ceb7e7 Pass the coding keywords as input instead of baking them into the prompt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 20:13:19 +08:00
imacatandClaude Opus 5 c3b4f927c2 Archive the clustered coding vocabulary
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 19:45:02 +08:00
imacatandClaude Opus 5 f495e7882d Add the cluster-keywords subcommand for the coding vocabulary
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 19:36:58 +08:00
imacatandClaude Opus 5 edfd8d57ba Archive the pooled keywords of the two tagging runs
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 18:00:19 +08:00
imacatandClaude Opus 5 112a566361 Add the pool-keywords subcommand for the tagging runs' keywords
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 17:56:11 +08:00
imacatandClaude Opus 5 0850b13417 Rebuild the vocabulary step on embeddings and drop the screen track
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 17:19:56 +08:00
imacatandClaude Fable 5 e70c2e6968 Report the elapsed time when run-llm finishes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 15:10:03 +08:00
imacatandClaude Fable 5 0dfbbe9ea4 Archive the tag run2 execution
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:47:00 +08:00
imacatandClaude Fable 5 a07256d4ac Archive the tag run1 execution and add the run-cost ledger
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:47:00 +08:00
imacatandClaude Fable 5 38b4660649 Require valid JSON with escaped quotes in the definition files
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:47:00 +08:00
imacatandClaude Fable 5 1732431e06 Forbid Markdown code fences in the definition-file outputs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:47:00 +08:00
imacatandClaude Fable 5 3c154bbbd1 Record the song-775 refusal ablation and rule it unanalyzable
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:46:59 +08:00
imacatandClaude Fable 5 c8d541aadc Add watermark normalization to fetch-lyrics
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:46:59 +08:00
imacatandClaude Fable 5 a562917460 Changed the natural-coding definition files to single-pass convergence
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 14:46:38 +08:00
imacatandClaude Fable 5 680d8bfe50 Add the natural-coding definition files and the convergence algorithms
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 22:41:42 +08:00
imacatandClaude Fable 5 aa65f6a3b3 Settle women-power as the a-priori screen label term
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 22:41:42 +08:00
imacatandClaude Fable 5 d155d1ba21 Reduce run-llm to a pure batch executor
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 19:31:24 +08:00
imacatandClaude Fable 5 5e509ffcad Record the natural-coding pipeline design in the project documents
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 17:22:52 +08:00
imacatandClaude Fable 5 4eb9f50238 Gather the CLI command modules into a commands sub-package
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:50 +08:00
imacatandClaude Fable 5 814bfa8910 Add the export-llm-input subcommand for the lyrics-only LLM input
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 179de0ccd7 Regenerate the artists report with the Wikidata snapshot applied
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 edb582daf9 Rename the Markdown documents to dash-connected names
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 21c5ae5481 Drop the engine preparation from build-db
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 383670ab2b Move the invariant checks into the importers and drop find_violations
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 c59a023095 Package the capture-layer application into a CaptureImporter class
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 10dc4cb693 Repackage the build-db import steps into job classes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 449675e7a2 Capture the song lyrics from the pilot study and the public APIs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:36 +08:00
imacatandClaude Fable 5 a7806c0c9d Align the fetch-lyrics summary with fetch-artists via shared utils
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:34:26 +08:00
imacatandClaude Fable 5 105664e93b Remove the missing-lyrics report from fetch-lyrics
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:15:49 +08:00
imacatandClaude Fable 5 1220c21807 Fall back to the original artist credit when fetching lyrics
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:15:49 +08:00
imacatandClaude Fable 5 86914de850 Remove the retired artist overrides layer and the mixed artist type
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:15:49 +08:00
imacat 8463cfc906 Keep the artist snapshot sorted by name 2026-08-04 15:15:49 +08:00
imacat ef4112c61e Show resolved count and elapsed time in the fetch-artists summary 2026-08-04 15:15:49 +08:00
imacat 1eaebeb5fb Resolve artists on Wikidata via exact-match SPARQL with song corroboration 2026-08-04 15:15:49 +08:00
imacat 6fc4b7db17 Restore official artist name spellings in the canonical table 2026-08-04 15:15:49 +08:00
imacat c94b6f2589 Record the complete-Wikidata-then-capture workflow decision 2026-08-04 15:15:49 +08:00
imacat b3ac12c88d Export human-readable songs and artists reports to the derived data layer 2026-08-04 15:15:49 +08:00
imacat 5b2c192827 Split artist credits with documented exceptions and normalize artist names 2026-08-04 15:15:49 +08:00
imacat 991ab5d93a Merge same-song chart rows via a canonical artist credit table 2026-08-04 15:15:49 +08:00
imacat 78cf5e6ce0 Store the source chart CSV with its original CRLF line endings 2026-08-04 15:15:49 +08:00
imacat aa78a54d12 Align the source chart CSV with the archived Billboard year-end charts 2026-08-04 15:15:49 +08:00
imacatandClaude Fable 5 3d472d5c15 Reorganize data/ into source, captures, and manual layers
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:15:49 +08:00
imacatandClaude Fable 5 2f048dee36 Make every subcommand input an explicit CLI argument or option
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:13:31 +08:00
imacatandClaude Fable 5 a3062e848c Refactor internal data passing to dataclasses and enums, and remove unneeded defensive code
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:13:31 +08:00
imacatandClaude Fable 5 1b2d46cb42 Add the data layer with the build-db, fetch-lyrics, and fetch-artists subcommands
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 15:12:22 +08:00
imacatandClaude Fable 5 f2ccca60b5 Use the unified pydantic-settings configuration in run_llm
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 14:03:37 +08:00
imacatandClaude Fable 5 db7b5f6679 Record the data storage architecture and phase-1 plan in the project documents
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 14:03:37 +08:00
imacatandClaude Fable 5 98b665537f Add the tools sub-project with the run_llm batch runner
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 14:03:28 +08:00
imacatandClaude Fable 5 9a089f6c6b Initialize project structure, workflow rules, and research plan
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:51:10 +08:00
6 changed files with 341 additions and 32 deletions
+18 -17
View File
@@ -99,8 +99,8 @@
## 2026-08-02
- **`import-lyrics` 不設為子命令,pilot 歌詞改以私人腳本
匯入**。理由:pilot 捕捉檔不隨論文發布,子命令
- **`import-lyrics` 不設為子命令,pilot 歌詞改以 `excludes/`
私人腳本匯入**。理由:pilot 捕捉檔不隨論文發布,子命令
形式會在發布的 CLI 裡留下讀者無法執行的死命令——要交待的
是「沿用 pilot 捕捉」的事實(記於 lyrics-provenance.csv 與
論文方法節),不是工具本身;工具移出專案,發布管線即
@@ -178,8 +178,8 @@
來源公開可稽核,快照乾淨、overrides 縮小;論文方法節揭露
「捕捉前經研究者查證補完」。性別以公開自我認同為準,
推測不確定且無佐證者列疑慮清單;查證屬資料策展而非
分析,以 Claude Code 輔助、不走分析 APIQS 批次
私人工作檔留存,不隨論文發布。
分析,以 Claude Code 輔助、不走分析 APIQS 批次
`excludes/`私人工作檔,不隨論文發布
## 2026-08-04
@@ -227,7 +227,7 @@
- **Markdown 檔名一律以 dash 連接**decision-log.md、
research-plan.md、project-structure.md 等;與 data/ 層
CSV 檔名慣例一致),定義檔命名慣例同步改為
`prompts/<task>-v<N>.md`(如 screen-v1.md),版本庫外的
`prompts/<task>-v<N>.md`(如 screen-v1.md),`excludes/`
私人工作檔一併改名;`conference_abstract.md` 改名並搬入
`paper/`——它是本次年會實際送出的摘要,與全文同屬投稿
血脈,不是 `docs/` 的內部工作文件。全 repo 指涉同步更新。
@@ -583,8 +583,8 @@
Billboard 署名 Pinkfong 為品牌(Wikidata Q55735607,型態
brand),非演唱者;其唯一上榜曲 Baby Shark2019#75
的實際演唱者為 Hope SegoineKTVB 2019-03-06 報導、
Songfacts、經紀簡介,出處詳私人留存的
QuickStatements 草稿)。藉既有的
Songfacts、經紀簡介,出處詳
`excludes/quickstatements/hope-segoine.md`)。藉既有的
署名正規化機制(`ArtistImporter.CANONICAL_ARTIST_NAMES`
指認:歌曲的署名字串維持榜單所印的 "Pinkfong",解析出
的演出者實體為 Hope Segoine。品牌無性別可言,人有;
@@ -637,9 +637,10 @@
sentence-transformers/all-mpnet-base-v2, revision
e8c3b32e)對 `runs/02-cluster/source-keywords.txt`
5,999 個關鍵字重新計算。組內一致性定義為組內成員兩兩
餘弦相似度之平均。k=50 直接取自私人留存的分群結果
k=30 以同參數重跑(確定性演算法),重算所得最大組恰為
491 詞,與當時粗算紀錄吻合,佐證重算與原實驗一致。數表:
餘弦相似度之平均。k=50 直接取自留存的分群結果
`excludes/k50/02-cluster/groups.csv`);k=30 以同參數
重跑(確定性演算法),重算所得最大組恰為 491 詞,與
當時粗算紀錄吻合,佐證重算與原實驗一致。數表:
| | k=30 | k=50 | k=100 |
|---|---|---|---|
@@ -702,8 +703,8 @@
力量語意即入選,women-power 群 11 碼,並產詞彙表外
幻覺碼一筆),claude-fable-5 讀為詞彙化概念(要求女性
標記,women-power 群 2 碼),與草稿盲選及深度閱讀輔助
判讀同讀法;sonnet 對照執行歸檔另行私人備份,不入
版本庫,支出留帳。claude-fable-5 不
判讀同讀法;sonnet 對照執行歸檔備份於
`excludes/experiments/`,支出留帳。claude-fable-5 不
受理 temperature 與 thinking 參數(均不送出),無法釘
temperature=0;執行間變異實測存在(run1/run2 於陽剛、
脆弱邊緣碼分歧),由三票多數決吸收;詞彙表外輸出項
@@ -750,9 +751,9 @@
編碼、票數),納入重建摘要與清空範圍,供群層次查詢;
重建命令自此帶 `--groups results/groups.csv`
- **Fable 5 輔助判讀實驗總錄(非正式編碼;結果檔私人
留存、不入版本庫,本條為其版本庫內的程序錨點)**:
2026-08-08 起以 Claude Code subagent(模型
- **Fable 5 輔助判讀實驗總錄(非正式編碼;結果檔
gitignored 之 `excludes/`,本條為其版本庫內的程序
錨點)**:2026-08-08 起以 Claude Code subagent(模型
Fable 5)進行七項深度閱讀實驗。共同程序:每首歌一個
獨立會話、提示最少化且逐字統一、判讀者互不知情、不經
三票制;定位為研究者的輔助判讀(初篩),不改動任何
@@ -782,7 +783,7 @@
`male-mixed-wp-fe-feminist-reading.md` 與同名 .ods)。
此系列即論文方法節「最後編碼的結果,再由研究者與 LLM
(Claude Code)輔助判讀」之所指;結果檔含大量歌詞引文,
依著作權紀律私人留置,不入版本庫。
依著作權紀律留置 `excludes/`,不入版本庫。
- **步驟 5:女性主義問題之質性深讀(設計定案)**:論文
題目「挪用與污染」需要框架層的系統性證據;47 首
@@ -898,4 +899,4 @@
performer_gender 手工修正)、四份 results 定案表、時程
展延一至二日與剩餘撰寫工作。仍然有效的原則(先導不
比較、提示只定格式、歌手背景防火牆、commit 判準、
版權規則)保留。
版權規則、positionality)保留。
+2 -2
View File
@@ -81,8 +81,8 @@ pop-fem-audit/
│ └── methodology.md # 方法細節(全文方法節底稿;
│ # 映射分析方法須在看結果前寫定)
└── paper/
├── abstract.md # 摘要
└── 流行音樂中「女性力量」….odt # 全文
├── conference-abstract.md # pilot 摘要(投稿版)
└── full-paper.md # 全文
```
## 設計理由
+7 -3
View File
@@ -8,7 +8,7 @@
- **研究敘事**:全文為獨立完整的正式研究(2016–2025 十年
語料共 1000 筆榜單紀錄、883 首歌,凍結程序後全量執行),
**不與先導研究做比較**
**不與先導研究paper/conference-abstract.md做比較**
全文數字一律以正式研究結果為準。先導研究僅作為假說的
內部來源,記於決策日誌,不進入論文敘事。
- **執行原則**:主會話只做討論;所有分析由 deterministic
@@ -76,8 +76,8 @@
**絕不進 LLM 輸入**——LLM 任務的 user message 維持
歌詞-only 或管線中間產物-only,避免光環偏誤。
- **Pilot 歌詞沿用(私人匯入,不進發布管線)**:先導研究
捕捉檔(lyrics.json684 首,20182025)以私人腳本
匯入歌詞快取;讀者的重現路徑純粹是
捕捉檔(lyrics.json684 首,20182025)以 `excludes/`
的私人腳本匯入歌詞快取;讀者的重現路徑純粹是
`fetch-lyrics`;沿用之事實記於
`data/captures/lyrics-provenance.csv`(進 git)。
- **子命令**`pop-fem-audit-tools <cmd>`):`build-db`
@@ -129,3 +129,7 @@
- 歌詞受版權保護:完整歌詞不進 git
`data/captures/lyrics/` gitignored),論文與 repo 只留
分析所引摘錄。
- 工程支援(寫 script、style check、審稿)用公司訂閱的
Claude Code;進論文的分析 token 由個人 API 帳號支付。
- Positionality statement 寫入論文(53 歲、長年婦運者、
資深工程師、離開學術圈多年、因整理榜單而起)。
+5 -1
View File
@@ -40,7 +40,7 @@ $3$15、opus-4-6 $5$25、opus-5 與 fable-5 $10$50
| 2026-08-06 | 03-02-arbitration | — | claude-sonnet-4-6 | msgbatch_01N7bDbXRSfAVUzzaj2thKeR | 4 分 20 秒 | 781,037 | 39,315 | $1.47 | 現行(644 首全數有效,零攔阻;保留 1,481/送裁 1,699 |
| 2026-08-06 | 03-code | run3 | claude-sonnet-4-6 | msgbatch_01KnkCaGETnFJrPddrxZTYHA | 6 分 26 秒 | 1,625,458 | 363,840 | $5.17 | 現行(101 碼;883 首全數有效,零攔阻) |
| 2026-08-14 | 04-group | run1 | claude-sonnet-4-6 | msgbatch_01UPNedog6feQzJ9WVfSAxBD | 1 分 1 秒 | 3,129 | 470 | $0.01 | 已取代(僅 3 群;改納 women-power 群後重跑) |
| 2026-08-14 | 04-group | run1 | claude-sonnet-4-6 | msgbatch_01KntJgxdicStaMjNL12P3zi | 1 分 25 秒 | 4,170 | 558 | $0.01 | 已取代(改以 claude-fable-5 執行;vulnerable 輸出含詞彙表外碼 1 筆;歸檔另行私人備份,不入版本庫 |
| 2026-08-14 | 04-group | run1 | claude-sonnet-4-6 | msgbatch_01KntJgxdicStaMjNL12P3zi | 1 分 25 秒 | 4,170 | 558 | $0.01 | 已取代(改以 claude-fable-5 執行;vulnerable 輸出含詞彙表外碼 1 筆;歸檔備份於 excludes/experiments/ |
| 2026-08-14 | 04-group | run1 | claude-fable-5 | msgbatch_01Mr6goBb2Efa4YrqCprbP4U | 55 秒 | 5,553 | 2,049 | $0.08 | 現行(4 群;零違規碼;temperature 與 thinking 參數不適用於本模型,未送出) |
| 2026-08-14 | 04-group | run2 | claude-fable-5 | msgbatch_01C17xW3YBefThTYZ83g7KkL | 1 分 21 秒 | 5,553 | 1,891 | $0.08 | 現行(4 群;零違規碼) |
| 2026-08-14 | 04-group | run3 | claude-fable-5 | msgbatch_01DveEMYyjCAYe6wxpcCD87V | 2 分 9 秒 | 5,553 | 1,975 | $0.08 | 現行(4 群;零違規碼) |
@@ -50,13 +50,17 @@ $3$15、opus-4-6 $5$25、opus-5 與 fable-5 $10$50
| 2026-08-15 | 05-01-read | run3 | claude-fable-5 | msgbatch_01Unn7C7WCnuVoLraJRXksoG | 7 分 59 秒 | 191,459 | 190,433 | $5.72 | 現行(145/145 有效) |
| 2026-08-15 | 05-02-consolidate | run1 | claude-fable-5 | msgbatch_01WPyH4pCCiieHs4yU3xtHzN | 2 分 28 秒 | 326,287 | 242,785 | $7.70 | 現行(145/145 有效) |
| 2026-08-15 | 05-03-synthesize | run1 | claude-fable-5 | msgbatch_01XbNQb1SFrUxhk2ZWF7epPA | 3 分 0 秒 | 103,888 | 9,982 | $0.77 | 現行(15 個樣態;研究者審定用草稿) |
| 2026-08-15 | 05-03-synthesize | run2 | claude-fable-5 | msgbatch_01FKqq8U6m5HLLsx7KpQES26 | 3 分 4 秒 | 13,573 | 6,883 | $0.24 | 現行(男聲群 14 首;13 個樣態) |
| 2026-08-15 | 05-03-synthesize | run3 | claude-fable-5 | msgbatch_017tfhiRTnaxqCp6YFyoivsu | 4 分 4 秒 | 60,727 | 8,519 | $0.52 | 現行(女聲群 98 首;14 個樣態) |
| 2026-08-15 | 05-03-synthesize | run4 | claude-fable-5 | msgbatch_01SNjTLiNPEba4LW2tcUAcTJ | 4 分 3 秒 | 29,958 | 9,793 | $0.39 | 現行(混合群 30 首;16 個樣態) |
| 2026-08-15 | 05-04-annotate | run1 | claude-fable-5 | msgbatch_01H9gXXhNbhZG6gzZtvMHxhh | 3 分 9 秒 | 815,492 | 300,901 | $11.60 | 現行(109/111 有效;song-177、song-199 遭 max_tokens 截斷,單筆補送) |
| 2026-08-15 | 05-04-annotate | run1-rescue-177-199 | claude-fable-5 | msgbatch_01YEdroZ51b8btPfG1aqPFCD | 3 分 5 秒 | 17,802 | 11,601 | $0.38 | 現行(run1 之 2 筆補送,max_tokens 提為 16000,成功) |
| 2026-08-15 | 05-04-annotate | — | claude-fable-5 | msgbatch_01G67STqZsHpnhedat2HRU85 | 3 分 0 秒 | 17,802 | 14,162 | $0.44 | 誤送(補送批次輪詢中斷後誤判死亡而重送;原批次自行完成並歸檔為現行,本批次取消不及、兩筆皆完成,結果棄用) |
| 2026-08-15 | 05-04-annotate | run2 | claude-fable-5 | msgbatch_01VVJpsfidNtF66GnHQdWnGR | 9 分 16 秒 | 815,492 | 306,582 | $11.74 | 現行(111/111 有效;max_tokens 16000,零截斷) |
| 2026-08-15 | 05-04-annotate | run3 | claude-fable-5 | msgbatch_01AsYvZd8rsTYVfUYLzWfeMK | 4 分 12 秒 | 815,492 | 298,512 | $11.54 | 現行(111/111 有效;max_tokens 16000,零截斷) |
累計支出:$125.65。
-9
View File
@@ -1,9 +0,0 @@
# 流行音樂中「女性力量」語彙的挪用與污染——以 Billboard Year-End Hot 1002016-2025)為例的內容分析
以美國市場為主的西洋流行音樂樂壇,一直是不同主流與另類文化實驗競爭的場域:傳統與創新,保守與進步。研究者在西洋流行音樂中,發現「女性力量」的語彙在歌曲中被挪用,融入父權框架中。為瞭解在西洋流行音樂中,「女性力量」語彙挪用與污染的樣態,本研究取2016-2025十年間的告示牌年終排行榜,共1,000個榜單位置,整理出883首不重複的歌曲,469位不同的表演者。使用人工智慧大型語言模型(AI LLMArtificial Intelligence Large Language Model,下稱LLM),獨立標註歌曲歌詞主題,大量蒐集彙整流行音樂主題後,再使用彙整後的主題,對這883首歌曲歌詞編碼。研究者並指定女性力量women-power、厭女misogyny、陽剛男性氣質masculine與脆弱vulnerable四大主題,以LLM對編碼分群,分析在西洋流行音樂中,女性力量和厭女、陽剛男性氣質與脆弱這些主題的相關性。研究者進一步使用LLM,深度檢驗女性力量歌曲中的性別問題樣態。除使用LLM外,研究者也實際檢視編碼結果與性別問題樣態,以瞭解在西洋流行音樂中,「女性力量」語彙如何被挪用與污染。
研究結果顯示:在給予LLM最少提示下,LLM獨立標註、彙整出「女性賦權female-empowerment」的主題,「女性賦權」已經成為當代西洋流行音樂中的重要主題之一。研究者比較「女性力量women-power」主題和「女性賦權female-empowerment」主題的標註差異。Banet-Weiser et al. (2020)主張,新自由主義女性主義敘事,將女性主義導向個人的自我成長、療癒。從編碼結果來看,新自由主義女性主義敘事雖然成為當代的主流,但仍未完全取代傳統女性主義強調的女性集體權力。透過分析四個指定編碼群之間的關係,研究者亦發現,當代流行音樂中,女性賦權不排斥厭女,只排斥脆弱。LLM在女性力量歌曲中,深度檢視性別問題時,獨立彙整出「挪用女性賦權語彙並掏空其意涵」的樣態,直接回應研究題目。研究者後續檢視該樣態所標註的歌曲時,發現LLM的標註問題,需要人工進一步檢視。
結論中,研究者檢視LLM作為內容分析的工具,相比人類編碼,可以獨立編碼不互相干擾,但也面臨兩個主要的挑戰:脈絡污染 (context contamination) ,以及隨機非確定性 (non-deterministic) 。研究者也提出,流行歌曲有大量的脈絡在歌詞之外,只閱讀歌詞語彙,難以真正理解歌曲本身。除了深入閱讀歌詞外,更需要對表演者背景與創作脈絡的理解,才能對西洋流行音樂中女性力量的理解,有更清楚的輪廓。
關鍵字:流行女性主義 (popular feminism) 、流行厭女 (popular misogyny) 、女性賦權/女性力量、語彙挪用、大型語言模型 (LLM) 內容分析
+309
View File
@@ -0,0 +1,309 @@
# 流行音樂中「女性力量」語彙的挪用與污染
## ── 以 Billboard Year-End Hot 10020182025)為例的內容分析
**投稿類別**:研究論文/口頭報告
**關鍵字**:女性主義內容分析、流行音樂、empowerment、商品化、AI 文本分析、語言挪用
---
## 摘要
本研究以 20182025 年 Billboard Year-End Hot 100(共 684 首歌)為素材,
檢視「women-power-and-empowerment」(女性力量/賦權)這個流行音樂主題標籤
在當代主流商業音樂中的使用實況。透過 AI pipeline 抽取主題標籤,再以人工
逐首審視全部被標記為「女性力量」的 62 首歌,發現其中 **44% 屬於「假女性
力量」**——表面採用 pro-women 詞彙(empowerment、boss bitch、queen、
femininity),實質敘事框架卻是父權保護、物化、競爭性貶低其他女性,或將
「賦權」等同於採用男性饒舌階層的炫耀邏輯。本研究歸納出五種「假女性力量」
類型,並就「pussy」一詞作為女性代稱(metonym)的使用進行附加分析,發現
此種以身體部位代稱人格的修辭橫跨男女歌手。研究亦發現大型語言模型(LLM)
對此種標籤污染存在系統性盲點,並提出框架感知(frame-aware)的修正方法
作為方法學貢獻。
---
## 一、研究問題
「賦權」(empowerment)一詞自 1980 年代女性主義論述進入主流流行文化
以來,已逐步被市場語彙化。Beyoncé、Lizzo、Megan Thee Stallion 等女
性藝人的「女性力量」框架被廣泛流通,唱片公司、串流平台與商業媒體亦頻繁
以 empowerment、boss、queen、she/her anthem 等標籤行銷女性藝人。
問題在於:**當「女性力量」成為一種行銷標籤時,它指涉的內容是什麼?**
本研究提出兩個具體問題:
1. 當主流商業音樂中一首歌被標記為「女性力量」時,其敘事框架是否實質上
傳達女性主體性(agency)、自主(autonomy)與獨立(independence)?
2. 若不是,被誤標的內容呈現何種模式?這些模式如何與既有的厭女、物化、
父權結構關聯?
## 二、研究方法
### 2.1 語料
- **來源**Billboard Year-End Hot 100(年度終榜),20182025 年
- **總數**:684 首歌(含跨年榜重複的歌曲算一筆)
- **歌詞抓取**Lyrics.ovh、LRCLIB API
- **元資料**:演唱者性別(男 / 女 / 混合團體)、年份、排名、合作署名
### 2.2 主題標籤抽取流程
採用四步驟混合式 AI pipeline
1. **逐首抽取主題關鍵字**510 個 / 首,由 LLM agent 完成)
2. **同義詞合併**(1982 個原始關鍵字 → 718 個 canonical
3. **主題分群**718 個 canonical → 33 個 thematic element bucket
4. **三角驗證 tagging**
- **由下而上路徑**bottom-up):透過第 13 步歸納
- **由上而下路徑**top-down):另一個 LLM agent 直接讀全文,套用既
定 33 bucket
- **逐主題盲審 judge**:對兩條路徑的差異逐一判定保留/剔除
最終產出固定 33 個 thematic element 的 v1 schema。
### 2.3 「女性力量」後驗審查
對全部 62 首被標記 `women-power-and-empowerment` 的歌進行人工逐首審
視:由三個獨立 LLM subagent 分別判定 genuine(真)/peripheral(點綴)
/fake(假),最後人工仲裁;同時對其中出現「pussy」一詞的歌進行修辭
脈絡分析。
### 2.4 「pussy」修辭分類
對全部 684 首歌中含「pussy / pussies」一詞的 53 首唯一歌曲(含跨年
重複共 56 筆),逐詞分類為四種修辭功能:
- **METONYM**:以 pussy 代稱「女人」這個人(不指身體部位)
- **ANATOMICAL**:指涉身體部位本身或性行為
- **COWARD**:作為「膽小鬼」的中性侮辱
- **OTHER**:動物或語境不明
每筆使用另標註:說話者性別(male / female / mixed)、指涉對象
self / other-women / women-collective-positive / women-collective-negative)。
## 三、主要發現
### 3.1 「女性力量」標籤的污染率:44%
| 分類 | 數量 | 比例 |
|---|---:|---:|
| Genuine(真女性力量) | 28 | 45% |
| Peripheralpro-women 僅為點綴) | 7 | 11% |
| **Fake(表面 pro-women,實質父權/物化/厭女)** | **27** | **44%** |
近半數被標記為「女性力量」的主流商業歌曲,其敘事框架實際上並未傳達
女性主體性、自主或獨立。
### 3.2 「假女性力量」的五種類型
#### 類型 A:男歌手的騎士保護者敘事(chivalric paternalism
男性歌手以「我會保護妳」、「我會供養妳」、「沒人能傷害妳」自居,將
女性置於需要男性 wield power on behalf of her 的位置。**權力的源頭
不在女性自己,而在替她出力的男性**。代表案例:Drake & 21 Savage
"Spin Bout U""I gotta protect ya")、Drake "Nice For What"。
#### 類型 B:女歌手以身體部位代稱自我與女性整體
以 pussy / bitch 等性器詞彙作為「女人」的代名詞,看似 reclamation
但其修辭結構仍內化於男性饒舌階層的詞彙邏輯中。代表案例:Cardi B &
Megan Thee Stallion "WAP"、Megan Thee Stallion "Thot Shit"、
Megan Thee Stallion & Dua Lipa "Sweetest Pie"。
(注意:本研究區分**自指身體**的 pussy 使用——女歌手描述自己身體
本身——與**以 pussy 代稱女人**這種 metonym 修辭。前者是粗俗詞彙
但仍將女人視為主體;後者則將女人化約為其身體部位。詳見 3.3。)
#### 類型 C:用男性指標衡量「賦權」
「Empowerment」被定義為擁有名牌、得到男人的錢、性的支配權、能凌駕
其他女性。這種「賦權」本質是**將既有的(男性建構的)權力/資本指標
讓渡給女性個體去追求**,而非挑戰結構。代表案例:Cardi B "I Like
It"、Cardi B "Up"、Megan Thee Stallion "Savage"、Mary J. Blige
"Juicy"。
#### 類型 D:競爭性貶低其他女性以自抬身價
歌曲表面 assert 女性力量,但其修辭策略是不斷貶低、嘲諷、威脅其他
女性。「我是 queen」的命題往往以「她們是 fake / hoes / pussies」
為陪襯前提。代表案例:Latto "Big Energy"、Nicki Minaj & Ice
Spice "Barbie World"、Ice Spice "Princess Diana"、GloRilla &
Cardi B "Tomorrow 2"。
#### 類型 E:直接複製男性饒舌階層
歌詞結構幾乎是男性饒舌歌手歌詞的字面翻版(炫富、嗆對手、宣告 turf、
sexual dominance),只是性別主詞置換。**這不是 reclamation 而是
horizontal substitution**。代表案例:GloRilla "Yeah Glo!"、Nicki
Minaj "FTCU"、GloRilla & Megan Thee Stallion "Wanna Be"、
Sexyy Red "Get It Sexyy"。
### 3.3 「Pussy」作為女性代稱:跨性別的內化
對 53 首唯一歌曲的逐詞分析發現:
- **Dominant METONYM 歌曲**8 首(pussy 主要功能是代稱女人)
- **Dominant ANATOMICAL 歌曲**32 首(指涉身體 / 性行為)
- **Dominant COWARD 歌曲**13 首
以 pussy 代稱女人這種 metonym 修辭出現於兩類說話者:
**男性歌手**(將女人化約為其性器):
- Drake — "Life Is Good"2020)、"Spin Bout U"2023
- The Weeknd — "Heartless"2020,同一首中 2 次)
- 21 Savage — "redrum"2024
- Bryson Tiller — "Whatever She Wants"2024
**女性歌手**(用 pussy 貶低、排序其他女性):
- Cardi B — "Tomorrow 2"2023
- GloRilla — "Wanna Be"2024)、"Yeah Glo!"2024
值得注意的是:**女性歌手以 pussy 代稱「自己作為女性主體」**
reclamation 用法,target = women-collective-positive)的案例
——例如 Megan Thee Stallion 在多首歌中的女性主體宣告——本研究**不
列入物化清單**,因其修辭結構是 assert woman as subject,而非
reduce woman to organ。
但 GloRilla、Cardi B 在上述歌曲中的 pussy 使用,是用此詞**對其他
女性進行排序與貶低**——「她們是 pussies」、「真 pussy 在這裡」——
此即類型 D 與類型 E 的修辭操作。**身體部位代稱人格的修辭一旦進入
女性互貶的邏輯,仍是女性物化框架的延續,不因說話者為女性而免疫。**
### 3.4 LLM 內容分析的系統性盲點
追溯被誤標為「女性力量」的 27 首假歌曲,其標籤來源分布:
| 標籤來源 | 數量 |
|---|---:|
| **由下而上 + 由上而下兩條路徑都同意**(直接進入 agreedjudge 看不到) | **24 / 27** |
| 僅由下而上路徑提出 | 3 / 27 |
| 僅由上而下路徑提出 | 0 / 27 |
**89% 的假標籤是兩條結構不同的 LLM 路徑「共同同意」的結果。**
這個發現挑戰了「triangulation 透過路徑差異對抗單一路徑偏誤」的方法
學假設。當兩條路徑都跑在同一個 LLM 家族(本研究使用 Anthropic 的
Sonnet 模型)上時,它們**共享表面詞彙的 pattern-match 偏誤**——只要
歌詞包含「女性主體 + 提及女性議題 + 強勢語氣」這個表層組合,兩條路徑
都會傾向標記為「女性力量」,無論敘事框架實際是父權還是物化。
這呼應 Bender、Gebru 等學者對大型語言模型 stochastic parroting
特性的批判:模型內化的是訓練語料裡「empowerment 該長什麼樣子」的
表層共識,而這個共識本身就是被市場去政治化過的。
## 四、討論
### 4.1 「女性力量」作為去政治化的市場符號
本研究的核心發現可以這樣概括:在當代主流商業音樂的標籤生態中,「女性
力量」作為符號的流通已經與其原初的女性主義內涵嚴重脫鉤。**Empowerment
這個詞彙本身的存在不再保證敘事框架是賦權的**——它甚至常與最徹底的
父權/物化框架共存於同一首歌。
### 4.2 「反向挪用」的悖論
特別值得女性主義關注的是「類型 E」現象:女性饒舌歌手大規模採用男性
饒舌階層的修辭範式(炫富、嗆對手、性支配、體型/外貌互貶)作為
「empowerment」的表現。這種操作可以從兩個對立的角度詮釋:
- **解放詮釋**:女性奪取了原本被男性壟斷的 assertive 修辭空間;
- **內化詮釋**:女性內化了 hegemonic masculinity 的成功標準,把它
當作「女性也能達到」的目標,而**未挑戰這個標準本身**。
本研究傾向後者詮釋,理由是:類型 E 的歌曲幾乎全數同時包含類型 D
(競爭性貶低其他女性)與類型 B(pussy 代稱女人),其結構整體性地
複製了男性饒舌的厭女語法,而非挑戰它。**「女性也能做這件事」不等於
「這件事被女性主義化了」**。
### 4.3 身體部位代稱的跨性別內化
類型 B 與「pussy 作為女人代稱」的修辭,是上述內化最具體的語言層證
據。當女性歌手在歌詞中說「real pussy in this bitch」(真女人在
這裡)時,「真女人」這個概念本身就是**用男性凝視的詞彙來定義的**——
女人 = pussy。這個等式在女性說話者口中重述,形式上的反轉(女性
agency)並沒有改變內容上的物化(女人是其性器)。
## 五、方法學貢獻
### 5.1 LLM 共同盲點不是絕對極限,而是提示問題
本研究進一步測試了一個 prompt 修正:在 by-down/top-down agent 與
judge agent 的提示中加入:
1. **框架原則(frame vs vocabulary**:任何主題的判定應看敘事
框架,不只看詞彙;
2. **權力來源測試**(針對 women-power 專用):權力來自女性自己,
還是來自他者(男性、男性指標、貶低其他女性)?
3. **Agreed 例外規則**:對 women-power 此標籤,judge 可以例外推翻
agreed 的保留決定。
對全部 684 首歌重新跑這個修正版 pipeline 後:
- 28 首假女性力量被移除
- 標籤的「假率」由 44% 降至 5% 以下
- 對 v1 漏掉的 19 首真實女性力量歌曲被補回
這顯示:**LLM 的「共同盲點」不是模型架構的絕對極限,而是「沒有提示
要找什麼,模型就不會找」的問題**。給予明確的框架感知提示後,同一個
模型可以執行 frame-level 分析。
### 5.2 對人文/性別研究使用 AI 工具的啟示
本研究實證地呈現了兩個對未來方法學設計重要的點:
1. **路徑結構不同 ≠ 獨立**:在同一個 LLM 家族上,方法上不同的多
條路徑仍共享訓練語料層次的偏誤。真正的「triangulation」需要
model diversity(跨家族),不只方法 diversity。
2. **Frame-aware prompting 是可行且必要的**:對於 women-power
這類「市場已先一步污染」的概念,分析者必須事先清楚 articulate
什麼算真、什麼算假,並把這個區分寫進 prompt。
## 六、限制
1. **代表性**Billboard YE Hot 100 反映美國主流商業市場,不代表
獨立、地下、非英語流行音樂;
2. **語言限制**:拉丁語系歌曲的歌詞分析深度受限;
3. **schema 主觀性**33 個 bucket 為 AI 一次性歸納,非學術共識
分類;
4. **跨文化遷移**:本研究的「假女性力量」類型主要出自美國黑人女
饒舌歌手脈絡,其結構與台灣/華語流行音樂中的相應現象有何異同,
是後續研究的重要方向。
## 七、結論
主流商業流行音樂中的「女性力量」標籤已被市場語彙化到與女性主義原
初內涵嚴重脫鉤的程度。在 20182025 年 Billboard 年終榜上,**44%
的「女性力量」歌曲實質框架是父權、物化或厭女的**。被誤標的歌曲呈
現五種類型:男性騎士保護敘事、女性身體部位代稱、男性指標衡量賦權、
競爭性貶低其他女性、直接複製男性饒舌階層。
這個標籤污染現象的存在本身,就是當代「女性力量」作為市場符號去政治
化的最佳證明。當「empowerment」可以同時指涉真實的女性主體性宣告
(如 Sabrina Carpenter "Feather"、Miley Cyrus "Flowers"、HUNTR/X
"Golden")與「我比其他婊子更高級」這類內化於男性凝視框架的競爭性
炫耀(如 GloRilla "Yeah Glo!"、Latto "Big Energy"),這個詞已經
失去了區辨意義。
對 AI 內容分析方法學而言,本研究指出共同 LLM 盲點是 prompt 問題
而非模型極限:給予明確的框架感知提示後,同一個模型可以做 frame-level
分析。這對未來在性別研究、文化研究領域使用 AI 工具的學者而言,是一
個具體可行的修正路徑。
---
## 附錄:分析資料
- 完整 62 首 women-power 歌曲分類資料(genuine / peripheral / fake):
`theme_extraction/women_power_analysis/final_classification.json`
- 53 首 pussy 修辭使用分類:`pussy_usage_analysis.json`
- 33 個 thematic element schemav1):`theme_extraction/v1_schema.json`
- v1.1 修正後全量重跑統計:`theme_extraction/v1_1_summary.json`
## 投稿資訊(待確認)
- **目標研討會**:女學會年會
- **論文長度**:(依會議要求調整,本檔約 3,400 字,可作為 extended
abstract 或論文初稿大綱)
- **作者**:(待補)