Compare commits
131
Commits
1d5356271b
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
502d8b6b5a | ||
|
|
47bef84e7b | ||
|
|
9b6450fcbb | ||
|
|
309667e82b | ||
|
|
195605826f | ||
|
|
e569b3481c | ||
|
|
f0547208ed | ||
|
|
eef434acf7 | ||
|
|
7a625d50fc | ||
|
|
e1e2c86661 | ||
|
|
2fa55f29d7 | ||
|
|
676d7788e8 | ||
|
|
6d055c1ee5 | ||
|
|
bfbbe1875e | ||
|
|
a5fd86deb6 | ||
|
|
85d776da8b | ||
|
|
e3cca7e538 | ||
|
|
245b38c306 | ||
|
|
d470600eb3 | ||
|
|
e7e6787927 | ||
|
|
28b2c18604 | ||
|
|
21a39618d3 | ||
|
|
7f3b5def0f | ||
|
|
30c9943bad | ||
|
|
5a91f66402 | ||
|
|
0db25812f2 | ||
|
|
63f00e44c5 | ||
|
|
d55725332e | ||
|
|
3a9eee19d1 | ||
|
|
02dfc794c4 | ||
|
|
e1355bcb70 | ||
|
|
a489f077c9 | ||
|
|
15cdb861ff | ||
|
|
854bfe5c4b | ||
|
|
7917d23d6e | ||
|
|
c3d6c06910 | ||
|
|
683b15e073 | ||
|
|
190f95b632 | ||
|
|
54e42c072c | ||
|
|
77049eb026 | ||
|
|
f87e3642f6 | ||
|
|
bebf85814e | ||
|
|
ea9df52bc3 | ||
|
|
62adf7f937 | ||
|
|
35d8e08871 | ||
|
|
693dbccc9d | ||
|
|
2ea23d9bce | ||
|
|
87926d9622 | ||
|
|
aa8b84c8cd | ||
|
|
7739abd105 | ||
|
|
dfdfccc460 | ||
|
|
4ae6fa7b2e | ||
|
|
3aa5c7a432 | ||
|
|
bc44d60d18 | ||
|
|
a64c04a128 | ||
|
|
c3e48aac56 | ||
|
|
40c41f2734 | ||
|
|
58189bae3a | ||
|
|
745a8eed9b | ||
|
|
7f43cf238b | ||
|
|
95a05a0631 | ||
|
|
24a4ca6970 | ||
|
|
c51c9d71e1 | ||
|
|
7008e14972 | ||
|
|
668f1bb118 | ||
|
|
019f317a82 | ||
|
|
20c48f04b9 | ||
|
|
3bae24b930 | ||
|
|
1714257c89 | ||
|
|
949a0f9c8d | ||
|
|
f2a80475a5 | ||
|
|
7c2e286c9d | ||
|
|
5325a8f9a4 | ||
|
|
71b640085a | ||
|
|
dcf9e280d0 | ||
|
|
e4f40e7c0f | ||
|
|
4dc526c4b0 | ||
|
|
15f1843cde | ||
|
|
8cdeb3db2e | ||
|
|
4fdc7b48fd | ||
|
|
de8b8ee678 | ||
|
|
5cf2b8ee8c | ||
|
|
04d5095e44 | ||
|
|
ce4f9ad481 | ||
|
|
41dc3ea2ea | ||
|
|
c03add4868 | ||
|
|
d73de3d01c | ||
|
|
14a3cbe121 | ||
|
|
4313d58471 | ||
|
|
db9fbd71d4 | ||
|
|
1802dac07a | ||
|
|
9b2af3bb50 | ||
|
|
99bbd566cf | ||
|
|
3f793afd34 | ||
|
|
05ba3942a2 | ||
|
|
d46c50a2db | ||
|
|
964006ec6d | ||
|
|
0c82da7a1d | ||
|
|
93a4f808bf | ||
|
|
7a58f37d9f | ||
|
|
b727284ef3 | ||
|
|
396848e898 | ||
|
|
55926b8dc4 | ||
|
|
ee6a1b88c5 | ||
|
|
1a7519becd | ||
|
|
a534b1b70b | ||
|
|
8fdd21f8a2 | ||
|
|
c561330bd0 | ||
|
|
64c62eb394 | ||
|
|
0d3cd69a0f | ||
|
|
81975b72e4 | ||
|
|
1b21471845 | ||
|
|
15f207ffc6 | ||
|
|
93aa06703b | ||
|
|
8fdd25f569 | ||
|
|
00b5c208ec | ||
|
|
c81bfcf51d | ||
|
|
942a74c86c | ||
|
|
1f95f0231d | ||
|
|
ae0e9d0a08 | ||
|
|
6a91bc73eb | ||
|
|
e15c988bf4 | ||
|
|
f36a30411d | ||
|
|
5d5e4fac50 | ||
|
|
e9027472f4 | ||
|
|
e0eb343ce0 | ||
|
|
8d223177cd | ||
|
|
f9ab79f0c2 | ||
|
|
b68393ab01 | ||
|
|
12ace6f45a | ||
|
|
9a42b463a3 |
@@ -1,68 +0,0 @@
|
||||
# Project Conventions
|
||||
|
||||
## Analysis pipeline
|
||||
|
||||
- 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; 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/<step>-<substep>-<task>.md` (e.g. 01-tag.md; no
|
||||
version suffix -- versions live in git history) and are
|
||||
passed verbatim as the system prompt. The number names a
|
||||
step of the research procedure, not the file: the
|
||||
deterministic vocabulary step (step 2) has no definition
|
||||
file yet holds its own number. Zero padding is for
|
||||
sorting only -- prose says "step 1", "step 3".
|
||||
- Itemwise LLM judgments (per-song coding in step 3,
|
||||
per-keyword group selection in step 4) run the same
|
||||
definition file three times, independently, over the same
|
||||
input; a deterministic tally then assigns an item (a
|
||||
(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 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
|
||||
cycle; never patch results by hand.
|
||||
- Each run of a step is archived self-contained under the
|
||||
destination directory given explicitly on the `run-llm`
|
||||
command line (by convention `runs/<step>/run<N>/`):
|
||||
prompt snapshot, raw output, and `meta.json` (model ID,
|
||||
parameters, timestamps, batch ID). The runs of a step are
|
||||
that many separate invocations of `run-llm`. Replacing
|
||||
an existing run archive requires an explicit flag;
|
||||
superseded runs live in git history. Deterministic steps
|
||||
archive under `runs/<step>/` with no `run<N>` level.
|
||||
- Token usage and cost of every `run-llm` execution are
|
||||
recorded in `docs/run-costs.md` in the same commit as the
|
||||
run archive.
|
||||
- Scripts read the API key from the `ANTHROPIC_API_KEY`
|
||||
environment variable (`.env`, gitignored).
|
||||
|
||||
## Data rules
|
||||
|
||||
- `data/source/` holds the immutable hand-placed raw files;
|
||||
`data/captures/` is written only by the fetch commands and the
|
||||
private import script; `data/manual/` is written only by the
|
||||
user's own hand; `data/derived/` is written only by the
|
||||
`build-db` subcommand.
|
||||
- Full lyrics are copyrighted: they stay in `data/captures/lyrics/`
|
||||
(gitignored) and must never be committed or reproduced in
|
||||
full anywhere in the repo.
|
||||
|
||||
## Documents
|
||||
|
||||
- `results/` holds the final tallied tables (what the paper
|
||||
cites); `runs/` holds raw audit records. The paper cites
|
||||
`results/` only.
|
||||
- Any change to a definition file, the codebook, or the plan is
|
||||
recorded in `docs/decision-log.md` with date and reason.
|
||||
@@ -0,0 +1,396 @@
|
||||
Attribution 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution 4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution 4.0 International Public License ("Public License"). To the
|
||||
extent this Public License may be interpreted as a contract, You are
|
||||
granted the Licensed Rights in consideration of Your acceptance of
|
||||
these terms and conditions, and the Licensor grants You such rights in
|
||||
consideration of benefits the Licensor receives from making the
|
||||
Licensed Material available under these terms and conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
d. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
f. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
g. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
h. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
i. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
j. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
k. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
4. If You Share Adapted Material You produce, the Adapter's
|
||||
License You apply must not prevent recipients of the Adapted
|
||||
Material from complying with this Public License.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
||||
@@ -1,40 +1,39 @@
|
||||
# pop-fem-audit
|
||||
# 流行音樂中「女性力量」語彙的挪用與污染——以 Billboard Year-End Hot 100(2016-2025)為例的內容分析
|
||||
|
||||
流行音樂中「女性力量」語彙的挪用與污染——以 Billboard Year-End
|
||||
Hot 100(2016–2025)為例的內容分析。
|
||||
這是研究論文《流行音樂中「女性力量」語彙的挪用與污染——以 Billboard Year-End Hot 100(2016-2025)為例的內容分析》的專案資料,包括論文本身、文件、紀錄、資料、工具程式、LLM提示詞,等等。
|
||||
|
||||
台灣女性學學會 2026 年會論文之研究資料與分析程式。
|
||||
## 論文和摘要
|
||||
|
||||
## 目錄結構
|
||||
研究論文全文和摘要,請參閱 paper/ 資料夾。
|
||||
|
||||
見 `docs/project-structure.md`。研究步驟規劃見
|
||||
`docs/research-plan.md`;方法細節見 `docs/methodology.md`;
|
||||
人工編碼手冊見 `docs/codebook.md`;決策日誌見
|
||||
`docs/decision-log.md`。
|
||||
## 文件說明
|
||||
|
||||
## 重現方式
|
||||
研究方法、記錄等文件,請參閱 docs/ 資料夾。
|
||||
|
||||
1. 準備 Python 3.14+ 環境,安裝分析管線套件:
|
||||
`pip install -e tools/`。
|
||||
2. 自 `tools/.env.example` 建立 `tools/.env`,寫入
|
||||
Anthropic API 金鑰。
|
||||
3. 依 `docs/research-plan.md` 的階段順序,於 `tools/` 目錄下
|
||||
執行子命令,必要輸入以位置引數、選擇性輸入以選項給定(如
|
||||
`pop-fem-audit-tools build-db
|
||||
../data/source/yearend_hot100_2016_2025.csv
|
||||
../data/derived
|
||||
--lyrics-dir ../data/captures/lyrics
|
||||
--wikidata-csv ../data/captures/artists-wikidata.csv`)。
|
||||
LLM 步驟使用 `claude-sonnet-4-6`、temperature=0、
|
||||
thinking 關閉;輸出可逐項比對的步驟獨立執行三次,由
|
||||
程式取三票多數決定案(「三次執行+多數決」協定),
|
||||
自由生成步驟兩次執行進池。
|
||||
4. 每次執行的完整紀錄(定義檔快照、原始輸出、參數)存於
|
||||
`runs/`,可逐筆稽核。論文引用的最終資料表在 `results/`。
|
||||
## LLM提示
|
||||
|
||||
注意:歌詞受版權保護,`data/captures/lyrics/` 不隨 repo 發布,須自行
|
||||
以 `tools/` 中的抓取程式重建。
|
||||
LLM提示請參閱 prompts/ 資料夾。
|
||||
|
||||
## 輔助工具程式
|
||||
|
||||
輔助工具程式請參閱 tools/ 資料夾。
|
||||
|
||||
## 研究資料
|
||||
|
||||
研究資料請參閱 data/ 資料夾。
|
||||
|
||||
## 授權
|
||||
|
||||
(待定)
|
||||
版權所有 © 2026 楊士青。
|
||||
|
||||
除另有註明外,本專案之內容均依「CC 姓名標示 4.0 國際」授權條款提供。
|
||||
|
||||
排除物件:
|
||||
1. 本專案引用之第三方歌詞,相應權利歸各該權利人所有;
|
||||
2. tools/ 資料夾內之工具程式,依該工具程式授權條款提供。
|
||||
|
||||
## 作者
|
||||
|
||||
楊士青<br>
|
||||
imacat@mail.imacat.idv.tw<br>
|
||||
2026/8/18<br>
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -0,0 +1,69 @@
|
||||
# 常設工作規範
|
||||
|
||||
本專案的常設工作規範。原專案 `CLAUDE.md`;移置於此,
|
||||
使 Claude Code subagent 不將其繼承入 context(盲判型
|
||||
agent 不得見之)。凡於本專案工作的主會話,動手管線、
|
||||
資料或文件之前,先讀本檔。
|
||||
|
||||
## 分析管線
|
||||
|
||||
管線已跑畢;本規範適用於任何重跑或擴充。
|
||||
|
||||
- LLM 分析以 Python 腳本呼叫 Anthropic Messages API
|
||||
執行,能用 Batch API 處即用之。步驟 1 與步驟 3 以
|
||||
`claude-sonnet-4-6` 執行,`temperature=0`、thinking
|
||||
停用;步驟 4 與步驟 5 以 `claude-fable-5` 執行,該
|
||||
模型兩個參數皆不受理——步驟 4 的取樣變異由多數決
|
||||
吸收,步驟 5 由整合三份閱讀吸收。
|
||||
- 定義檔置於 `prompts/<步><次步>-<task>.md`(如
|
||||
1-tag.md、5a-read.md;次步以字母標示,與論文正文的
|
||||
步驟編號一致;不帶版本號——版本即 git 歷史),逐字
|
||||
作為 system prompt。
|
||||
- 逐項的 LLM 判斷(步驟 3 的逐首編碼、步驟 4 的逐碼
|
||||
入群判斷)以同一份定義檔、同一份輸入獨立執行三次;
|
||||
再由確定性計票將三次執行中至少兩次指派的項目(一個
|
||||
(歌,關鍵字)或(群,關鍵字)配對)收入定案
|
||||
(「三次執行+多數決」)。自由生成步驟執行兩次,
|
||||
兩份輸出進池。步驟 5 的質性閱讀兩者皆非:逐首三次
|
||||
獨立閱讀,由各自的定義檔逐首整合、跨首統整——質性
|
||||
協定,不是投票(見 docs/methodology.md)。詞彙表由
|
||||
確定性子命令建構(嵌入+分群),不經 LLM。驗證結果
|
||||
不符預期時,修訂定義檔並重複該循環;絕不手改結果。
|
||||
- 一步的每次執行皆自我完備歸檔於 `run-llm` 命令列上
|
||||
明示指定的目的目錄下(慣例為
|
||||
`data/runs/<步驟>/run<N>/`):定義檔快照、原始輸出與
|
||||
`meta.json`(model ID、參數、時間戳、batch ID)。
|
||||
一步的 N 次執行即 N 次各自的 `run-llm` 呼叫。覆蓋
|
||||
既有執行歸檔須明示旗標;被取代的執行留在 git 歷史。
|
||||
確定性步驟歸檔於 `data/runs/<步驟>/`,不分 `run<N>` 層。
|
||||
- 每次 `run-llm` 執行的 token 用量與費用記入
|
||||
`docs/run-costs.md`,與執行歸檔同一 commit。
|
||||
- 腳本自環境變數 `ANTHROPIC_API_KEY` 讀取 API key
|
||||
(`.env`,gitignored)。
|
||||
|
||||
## 資料規則
|
||||
|
||||
- `data/source/` 存手放後不動的原始檔;
|
||||
`data/captures/` 只由 fetch 命令與私人匯入腳本
|
||||
寫入;`data/manual/` 只由研究者親手寫入;
|
||||
`data/derived/` 只由 `build-db` 子命令寫入;
|
||||
`data/runs/` 存 LLM 執行的原始歸檔,只由執行程序
|
||||
寫入;`data/results/` 存論文引用的定案表,只由
|
||||
計票程序寫入。
|
||||
- 歌詞全文有版權:一律置於 `data/captures/lyrics/`
|
||||
(gitignored),絕不 commit,亦絕不於 repo 任何處
|
||||
全文重現。
|
||||
|
||||
## 文件
|
||||
|
||||
- `data/results/` 存計票後的定案表(論文所引);
|
||||
`data/runs/` 存原始稽核紀錄。論文只引 `data/results/`。
|
||||
- **Commit 判準**:凡能由「committed 的輸入+committed
|
||||
的程式」決定性再生者不 commit;凡不能者一律以文字
|
||||
格式 commit,格式跟著上文「資料規則」一節所定的
|
||||
層次走。例外:`data/results/` 定案表與
|
||||
`data/derived/` 人讀報表雖可再生仍 commit——理由是
|
||||
引用穩定性、審稿人零門檻、撰稿期數字變動可 diff;
|
||||
兩者皆與工作儲存同一動作產出,稽核鏈無中間空缺。
|
||||
- 凡定義檔或研究規劃之更動,皆記入
|
||||
`docs/decision-log.md`,註明日期與原因。
|
||||
+62
-18
@@ -99,8 +99,8 @@
|
||||
|
||||
## 2026-08-02
|
||||
|
||||
- **`import-lyrics` 不設為子命令,pilot 歌詞改以 `excludes/`
|
||||
私人腳本匯入**。理由:pilot 捕捉檔不隨論文發布,子命令
|
||||
- **`import-lyrics` 不設為子命令,pilot 歌詞改以私人腳本
|
||||
匯入**。理由:pilot 捕捉檔不隨論文發布,子命令
|
||||
形式會在發布的 CLI 裡留下讀者無法執行的死命令——要交待的
|
||||
是「沿用 pilot 捕捉」的事實(記於 lyrics-provenance.csv 與
|
||||
論文方法節),不是工具本身;工具移出專案,發布管線即
|
||||
@@ -178,8 +178,8 @@
|
||||
來源公開可稽核,快照乾淨、overrides 縮小;論文方法節揭露
|
||||
「捕捉前經研究者查證補完」。性別以公開自我認同為準,
|
||||
推測不確定且無佐證者列疑慮清單;查證屬資料策展而非
|
||||
分析,以 Claude Code 輔助、不走分析 API;QS 批次存
|
||||
`excludes/`(私人工作檔,不隨論文發布)。
|
||||
分析,以 Claude Code 輔助、不走分析 API;QS 批次以
|
||||
私人工作檔留存,不隨論文發布。
|
||||
|
||||
## 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),`excludes/`
|
||||
`prompts/<task>-v<N>.md`(如 screen-v1.md),版本庫外的
|
||||
私人工作檔一併改名;`conference_abstract.md` 改名並搬入
|
||||
`paper/`——它是本次年會實際送出的摘要,與全文同屬投稿
|
||||
血脈,不是 `docs/` 的內部工作文件。全 repo 指涉同步更新。
|
||||
@@ -583,8 +583,8 @@
|
||||
Billboard 署名 Pinkfong 為品牌(Wikidata Q55735607,型態
|
||||
brand),非演唱者;其唯一上榜曲 Baby Shark(2019#75)
|
||||
的實際演唱者為 Hope Segoine(KTVB 2019-03-06 報導、
|
||||
Songfacts、經紀簡介,出處詳
|
||||
`excludes/quickstatements/hope-segoine.md`)。藉既有的
|
||||
Songfacts、經紀簡介,出處詳私人留存的
|
||||
QuickStatements 草稿)。藉既有的
|
||||
署名正規化機制(`ArtistImporter.CANONICAL_ARTIST_NAMES`)
|
||||
指認:歌曲的署名字串維持榜單所印的 "Pinkfong",解析出
|
||||
的演出者實體為 Hope Segoine。品牌無性別可言,人有;
|
||||
@@ -637,10 +637,9 @@
|
||||
(sentence-transformers/all-mpnet-base-v2, revision
|
||||
e8c3b32e)對 `runs/02-cluster/source-keywords.txt` 的
|
||||
5,999 個關鍵字重新計算。組內一致性定義為組內成員兩兩
|
||||
餘弦相似度之平均。k=50 直接取自留存的分群結果
|
||||
(`excludes/k50/02-cluster/groups.csv`);k=30 以同參數
|
||||
重跑(確定性演算法),重算所得最大組恰為 491 詞,與
|
||||
當時粗算紀錄吻合,佐證重算與原實驗一致。數表:
|
||||
餘弦相似度之平均。k=50 直接取自私人留存的分群結果;
|
||||
k=30 以同參數重跑(確定性演算法),重算所得最大組恰為
|
||||
491 詞,與當時粗算紀錄吻合,佐證重算與原實驗一致。數表:
|
||||
|
||||
| | k=30 | k=50 | k=100 |
|
||||
|---|---|---|---|
|
||||
@@ -703,8 +702,8 @@
|
||||
力量語意即入選,women-power 群 11 碼,並產詞彙表外
|
||||
幻覺碼一筆),claude-fable-5 讀為詞彙化概念(要求女性
|
||||
標記,women-power 群 2 碼),與草稿盲選及深度閱讀輔助
|
||||
判讀同讀法;sonnet 對照執行歸檔備份於
|
||||
`excludes/experiments/`,支出留帳。claude-fable-5 不
|
||||
判讀同讀法;sonnet 對照執行歸檔另行私人備份,不入
|
||||
版本庫,支出留帳。claude-fable-5 不
|
||||
受理 temperature 與 thinking 參數(均不送出),無法釘
|
||||
temperature=0;執行間變異實測存在(run1/run2 於陽剛、
|
||||
脆弱邊緣碼分歧),由三票多數決吸收;詞彙表外輸出項
|
||||
@@ -751,9 +750,9 @@
|
||||
編碼、票數),納入重建摘要與清空範圍,供群層次查詢;
|
||||
重建命令自此帶 `--groups results/groups.csv`。
|
||||
|
||||
- **Fable 5 輔助判讀實驗總錄(非正式編碼;結果檔於
|
||||
gitignored 之 `excludes/`,本條為其版本庫內的程序
|
||||
錨點)**:2026-08-08 起以 Claude Code subagent(模型
|
||||
- **Fable 5 輔助判讀實驗總錄(非正式編碼;結果檔私人
|
||||
留存、不入版本庫,本條為其版本庫內的程序錨點)**:
|
||||
2026-08-08 起以 Claude Code subagent(模型
|
||||
Fable 5)進行七項深度閱讀實驗。共同程序:每首歌一個
|
||||
獨立會話、提示最少化且逐字統一、判讀者互不知情、不經
|
||||
三票制;定位為研究者的輔助判讀(初篩),不改動任何
|
||||
@@ -783,7 +782,7 @@
|
||||
`male-mixed-wp-fe-feminist-reading.md` 與同名 .ods)。
|
||||
此系列即論文方法節「最後編碼的結果,再由研究者與 LLM
|
||||
(Claude Code)輔助判讀」之所指;結果檔含大量歌詞引文,
|
||||
依著作權紀律留置 `excludes/`,不入版本庫。
|
||||
依著作權紀律私人留置,不入版本庫。
|
||||
|
||||
- **步驟 5:女性主義問題之質性深讀(設計定案)**:論文
|
||||
題目「挪用與污染」需要框架層的系統性證據;47 首
|
||||
@@ -899,4 +898,49 @@
|
||||
performer_gender 手工修正)、四份 results 定案表、時程
|
||||
展延一至二日與剩餘撰寫工作。仍然有效的原則(先導不
|
||||
比較、提示只定格式、歌手背景防火牆、commit 判準、
|
||||
版權規則、positionality)保留。
|
||||
版權規則)保留。
|
||||
|
||||
## 2026-08-17
|
||||
|
||||
- **先導研究的地位另立常設紀錄 `docs/pilot-study.md`**:論文
|
||||
交件後重讀投稿摘要,認清先導研究係由當時協作的 Claude Code
|
||||
設計並執行,研究者檢視的是研究問題與答案,未逐步檢視中間
|
||||
過程;摘要中的具體數字未經稽核,亦無歸檔可回溯。此地位
|
||||
先前僅零星散見於本日誌各條(歌詞沿用、women-power 來歷
|
||||
考據、粒度繼承、簿記容量),投稿摘要本身則只是產物,不足以
|
||||
記述過程。裁定:另立 `docs/pilot-study.md`,完整記述先導
|
||||
研究的執行方式、沿用與棄用的成果,以及它如何促成正式研究
|
||||
的可稽核設計;投稿摘要不於樹中另存副本,其內容留在 git
|
||||
歷史(`paper/abstract.md` 的前身)。
|
||||
|
||||
## 2026-08-18
|
||||
|
||||
- **工序編號改與論文正文一致**:論文正文將五個步驟的細分
|
||||
工序以字母標示(表三「步驟3a」、表四「步驟5d」),repo
|
||||
的檔名與歸檔目錄卻沿用 `05-01`、`05-02` 這種數字次步,
|
||||
兩邊對不上。裁定:改為 `1-tag`、`2-cluster`、`3a-code`、
|
||||
`4-group`、`5a-read`、`5b-consolidate`、`5c-synthesize`、
|
||||
`5d-annotate`(`prompts/` 與 `runs/` 同步,以 `git mv`
|
||||
保留歷史),補零一併取消。`runs/*/meta.json`
|
||||
內記的 `prompt_path` 不追改——它是執行當下的實況記錄;
|
||||
本日誌的既有條目同理,維持當時的名稱。`run-costs.md` 則
|
||||
相反:它的「步驟」欄是查閱歸檔的索引,故一律換為現行
|
||||
編號(`01-01-01-tag`→`1-tag`、`03-01-code` 與
|
||||
`03-code`→`3a-code`),並新增末欄「原步驟名」保留執行
|
||||
當時的名稱——索引要指得到現在的歸檔,紀錄要留得住當時
|
||||
的形狀,兩者以兩欄並存解決。已刪除的工序(步驟 2 的
|
||||
LLM 合併嘗試 `01-02-01-merge`、步驟 3 的仲裁
|
||||
`03-02-arbitration`)其歸檔已不存在,無現行編號可指,
|
||||
不另發新名,步驟欄逕標「已廢棄」,原名存於末欄。
|
||||
|
||||
- **CLAUDE.md 移為 `docs/conventions.md`**:專案 CLAUDE.md 會
|
||||
全文自動注入每一個 Claude Code subagent 的 context(2026-07-30
|
||||
實測條),步驟 6 的 883 個盲判 agent 因此都看到了工作規範。
|
||||
規範本身無研究語意(無 women-power、無假說),污染有限,但
|
||||
「防脈絡污染」的原則應貫徹到自家工具鏈:docs/ 底下的檔案
|
||||
不會自動注入,搬移後 subagent 除非主動翻閱否則不會看到,
|
||||
盲判 agent 的定義檔並明令不得查閱專案材料。代價是主會話
|
||||
也不再自動載入,須自行先讀 `docs/conventions.md`。內容
|
||||
順帶微調:註明管線已完成、規範適用於重跑;刪去已不存在
|
||||
的 codebook 一詞。進論文的數據一律走 Anthropic API(無
|
||||
檔案系統,機制上不可能讀到),此層防線不受本次搬移影響。
|
||||
|
||||
+101
-202
@@ -1,12 +1,12 @@
|
||||
# 方法細節
|
||||
|
||||
(全文方法節底稿。演算法在執行前寫定;任何修訂記入
|
||||
`decision-log.md`。定義檔全文見 `prompts/`,執行紀錄見
|
||||
`runs/`。)
|
||||
`decision-log.md`。)
|
||||
|
||||
## 自然編碼管線總覽
|
||||
|
||||
五個步驟:步驟 1 自由標註(兩次執行進池)→ 步驟 2 詞彙表
|
||||
五個步驟:步驟 1 自由標註(`claude-sonnet-4-6`,
|
||||
temperature=0、thinking 關閉,兩次執行進池)→ 步驟 2 詞彙表
|
||||
建構(詞向量分群,確定性)→ 步驟 3 全量編碼(三次執行+
|
||||
多數決)→ 步驟 4 語意編碼群(三次執行+多數決)→ 步驟 5
|
||||
女性主義問題之質性深讀(三次閱讀+逐首整合+樣態統整)。
|
||||
@@ -14,13 +14,6 @@
|
||||
不接觸歌詞,步驟 2 亦不呼叫 LLM。設計原則見
|
||||
`research-plan.md`;本檔記載可重現的演算法細節。
|
||||
|
||||
編號的所指為**研究程序的工序**,不是定義檔:步驟 1、
|
||||
步驟 3、步驟 4 與步驟 5 有定義檔(`prompts/`;步驟 5 依
|
||||
子工序有三份),步驟 2 沒有——它是單一確定性計算,由
|
||||
`cluster-keywords` 一個子命令完成。有無定義檔的區別即
|
||||
「該步是否為 LLM 判斷」,由 `prompts/` 是否存在同號檔案
|
||||
直接可見。
|
||||
|
||||
## 步驟 2 詞彙表建構——詞向量分群
|
||||
|
||||
詞彙表由確定性程序產生,不經 LLM。完整分割(每個關鍵字
|
||||
@@ -30,8 +23,7 @@
|
||||
### 進池
|
||||
|
||||
兩次標註執行的全部關鍵字取聯集、逐字串精確去重、字典序
|
||||
排列。失敗與拒答的記錄跳過(其歌曲不貢獻關鍵字);解析
|
||||
時偵測重複鍵,違規即失敗。
|
||||
排列。失敗與拒答的記錄跳過(其歌曲不貢獻關鍵字)。
|
||||
|
||||
### 分群
|
||||
|
||||
@@ -39,14 +31,10 @@
|
||||
(釘定 revision),關鍵字的連字號先還原為空格再編碼,
|
||||
輸出 768 維向量並 L2 正規化。
|
||||
- **分群**:階層式聚合分群(Ward linkage),k=100。
|
||||
向量既已正規化,歐氏距離與餘弦相似度單調對應;三種
|
||||
linkage 實測比較,Ward 於各個 k 的組內一致性均最高
|
||||
(average 與 complete 皆產生吞噬半數語料的巨大異質
|
||||
組)。
|
||||
向量既已正規化,歐氏距離與餘弦相似度單調對應。
|
||||
- **組數的取捨**:k 太小則壓縮比過高,樹上層被迫併入
|
||||
不相干的詞,組雖大而無主題(k=30 最大組 491 詞、
|
||||
組內一致性 0.41,成員橫跨籃球、海灘、外星人綁架);
|
||||
k 太大則人工難以通覽。定於 100,理由是實測顯示雜物櫃
|
||||
不相干的詞,組雖大而無主題;k 太大則人工難以通覽。
|
||||
定於 100,理由是實測顯示雜物櫃
|
||||
組於此始裂解為有主題的組,且編碼實測未見碼數過多的
|
||||
副作用——全量三次執行下 101 個碼全數用到;模型另行
|
||||
造出的碼共 13 筆,佔 44,149 筆標籤指派的 0.03%。
|
||||
@@ -55,39 +43,23 @@
|
||||
自己產出過的關鍵字,非任何人事後撰寫。已知限制:
|
||||
組越大越異質時,medoid 只是折衷詞,可能代表不了組內
|
||||
內容(實測 `mutual-individuality` 組內一致 0.70 而
|
||||
編碼從未使用);此類碼於結果中呈現為零使用,據實
|
||||
報告,不事後改名。
|
||||
- **取捨紀錄**:曾以 LLM 單發收斂(merge/cap 兩步)
|
||||
實作本步,四種模型六次執行全部無法維持完整分割,
|
||||
已棄用(詳見 `decision-log.md` 2026-08-05;棄用的
|
||||
定義檔止於 git 歷史,見 `git log -- prompts/`)。
|
||||
- **產物**:五份,前綴分別標示來源與結果。
|
||||
`source-keywords.txt`(進池後的關鍵字,一行一個)
|
||||
記錄進來的是什麼;`result-keywords.txt`(組名,一行
|
||||
一個)與 `groups.csv`(欄位 Group、Keyword,一列一個
|
||||
成員)記錄算出來的分割;`keywords-to-merge.json`
|
||||
(`{"keywords": [...]}`)是實際交給模型的碼,即組名
|
||||
加上先驗主題詞——五份中只有這一份含研究者的介入。
|
||||
`meta.json` 記錄執行本身:進池的兩份執行歸檔與其有效
|
||||
筆數、嵌入模型與釘定 revision、分群參數與組數、外加
|
||||
的先驗詞、關鍵字總數,以及產生數字的套件版本。凡命令
|
||||
列上的選擇與環境事實皆在此,不記時間戳與輸入雜湊
|
||||
——前者使同環境重跑逐位元組可再生,後者只會重述 git
|
||||
已保證的事。
|
||||
編碼從未使用);此類碼於結果中呈現為零使用。
|
||||
- **取捨紀錄**:詞彙表分群曾比較的替代法與棄用理由,見
|
||||
`decision-log.md` 2026-08-05 條。
|
||||
- **產物**:分群輸出中,只有實際交給模型的碼表——組名
|
||||
加上先驗主題詞——含研究者的介入;其餘皆為分群過程本身
|
||||
的機械紀錄。
|
||||
- **可重現性**:同一輸入、同一釘定模型、同一參數逐次
|
||||
重現。不同 CPU/BLAS 實作的浮點尾數差異可能使邊界
|
||||
詞的歸屬翻動,屬已揭露的限制;論文所用碼表逐字
|
||||
commit,引用單位為該份定案檔案。
|
||||
詞的歸屬翻動,屬已揭露的限制。
|
||||
|
||||
### women-power 的注入
|
||||
|
||||
定案詞彙表為 100 個分群組名再加上 `women-power` 一詞,
|
||||
共 101 個碼。`women-power` 是研究者任意決定的先驗主題(即本
|
||||
論文的主題本身),不由資料產生,屬揭露的儀器介入。該詞
|
||||
於執行時以 `--extra-keyword` 明示加入,不寫死在程式裏
|
||||
——研究者的介入因此每次都出現在重現命令上,而非無聲
|
||||
發生;分群結果的兩份產物不含它,只有交給模型的碼表含
|
||||
它。
|
||||
的加入於每次執行皆為明示、可稽核的介入,而非無聲內建於
|
||||
判斷邏輯;分群結果本身不含它,只有交給模型的碼表含它。
|
||||
|
||||
注入而非另設篩選軌的理由:讓研究者的主題詞與模型自己
|
||||
收斂出的類別(分群已自行長出 `female-empowerment` 等組)
|
||||
@@ -97,24 +69,17 @@
|
||||
|
||||
## 步驟 3 編碼的三次執行與多數決
|
||||
|
||||
- **模型**:`claude-sonnet-4-6`,temperature=0、thinking 關閉。
|
||||
- **三次執行**:同一份定義檔、同一份輸入檔,獨立執行
|
||||
三次,三份歸檔並列(`runs/03-code/run1`、`run2`、
|
||||
`run3`),彼此無先後主從之別。
|
||||
三次,三份歸檔並列,彼此無先後主從之別。
|
||||
- **多數決**:一首歌的一個標籤,三次執行中至少兩次標出
|
||||
即收入定案編碼。三票不平手,裁決規則因此無例外條款,
|
||||
計票由確定性子命令完成(見交接契約)。
|
||||
- **第三票取全量**:只對前兩次分歧的標籤補問第三票,
|
||||
計票結果相同;仍採全量執行——全部歌曲、全部關鍵字
|
||||
——使三票在同一條件下取得。
|
||||
計票由確定性程序完成(見交接契約)。
|
||||
- **第三票取全量**:第三次執行同為全量——全部歌曲、
|
||||
全部關鍵字——使三票在同一條件下取得。
|
||||
- **對邊緣標籤的作用**:兩次執行只分得出「兩次皆標」與
|
||||
「僅一次標」;三次執行還分得出 3-0 與 2-1,故「定案
|
||||
編碼中有多少比例僅以一票之差成立」成為可報告的量。
|
||||
至於判定本身,兩次執行相左的標籤在何種協定下都由第三
|
||||
個判斷定奪,票數不使不確定性消失:某標籤於單次執行被
|
||||
標出的傾向若恰為一半,任何票數皆為擲幣。三票之效在
|
||||
傾向偏離一半處——多數決將判定推向該傾向本身(單次
|
||||
0.7 者為 0.78,0.9 者為 0.97),程序重跑的一致性因而
|
||||
高於單次執行,唯獨恰半處無從改善。
|
||||
|
||||
## 步驟 4 語意編碼群
|
||||
|
||||
@@ -125,103 +90,79 @@
|
||||
由 LLM 依編碼名的字面語意判斷。
|
||||
- **任務**:每筆輸入為一個群名加 101 個編碼的字母序
|
||||
清單,輸出為入選編碼的單層 JSON 陣列;定義檔
|
||||
`prompts/04-group.md` 只定格式,不含任何群的語意定義。
|
||||
- **模型**:`claude-fable-5`(步驟 1、3 為
|
||||
`claude-sonnet-4-6`)。該模型不受理 `temperature` 與
|
||||
`thinking` 參數,兩者均不送出;取樣變異由多數決吸收。
|
||||
只定格式,不含任何群的語意定義。
|
||||
- **模型**:`claude-fable-5`;取樣變異由多數決吸收;
|
||||
模型裁定的理由與對照實驗見決策日誌。
|
||||
- **三次執行**:同一份定義檔、同一份輸入檔,獨立執行
|
||||
三次,歸檔並列(`runs/04-group/run1`、`run2`、`run3`)。
|
||||
三次,歸檔並列。
|
||||
- **多數決**:一個(群,編碼)配對,三次執行中至少兩次
|
||||
入選即屬該群;不在 101 碼詞彙表內的輸出項無效,每筆
|
||||
丟棄印於標準錯誤。計票由確定性子命令 `tally-groups`
|
||||
完成:`tally-groups <執行歸檔 1> <執行歸檔 2> <執行歸檔
|
||||
3> <合法碼清單> <輸出 CSV>`,合法碼清單之產法同步驟 3。
|
||||
定案分群寫入 `results/groups.csv`,欄位 `Group`、
|
||||
`Keyword`、`Votes`,列序先依群名、再依編碼,一律以
|
||||
Unicode 碼位比較,換行為 CRLF。
|
||||
- **工作儲存**:`build-db --groups <定案分群 CSV>` 將定案
|
||||
分群逐欄照存入 `groups` 資料表(群、編碼、票數),供
|
||||
群層次查詢。
|
||||
入選即屬該群;不在 101 碼詞彙表內的輸出項無效,逐筆
|
||||
記錄後丟棄。計票由確定性計票程序完成,合法碼
|
||||
清單之產法同步驟 3,結果為定案分群表。
|
||||
|
||||
## 步驟 5 女性主義問題之質性深讀
|
||||
|
||||
本步驟之 5-1 至 5-3 為**質性閱讀,非編碼**:輸出為自由
|
||||
文字的問題閱讀報告,無可逐項機械比對的單位,故不適用
|
||||
三票多數決與仲裁;
|
||||
三次獨立閱讀為分析者三角檢核,逐首整合為整合而非裁決,
|
||||
跨首統整之產出為草稿,終審與詮釋由研究者為之。論文引用
|
||||
本步驟之 5a 至 5c 為**質性閱讀,非編碼**:輸出為自由
|
||||
文字的問題閱讀報告,無可逐項機械比對的單位,故不適用
|
||||
三票多數決與仲裁;
|
||||
三次獨立閱讀為分析者三角檢核,逐首整合為整合而非裁決,
|
||||
跨首統整之產出為草稿,終審與詮釋由研究者為之。論文引用
|
||||
本步驟時不作次數宣稱。
|
||||
|
||||
- **對象**:定案編碼含 `women-power` 或
|
||||
- **對象**:定案編碼含 `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 樣態統整**:單筆輸入為一批整合報告;歸納問題
|
||||
**樣態**——問題呈現與運作的重複形態,非問題分類,
|
||||
代表引句僅取自主清單;定義檔
|
||||
`prompts/05-03-synthesize.md`。四種輸入範圍各執行
|
||||
一次:全 145 首之基底統整(歸檔
|
||||
`runs/05-03-synthesize/run1`),及依 `performer_gender`
|
||||
(演唱聲音之性別)切分之三個發話脈絡統整——男聲
|
||||
(male,歸檔 `run2`)、女聲(female,歸檔 `run3`)、
|
||||
混合(mixed,歸檔 `run4`);基底看橫貫各脈絡之樣態,
|
||||
分組看各權力脈絡下之樣態。genderfluid 與 non-binary
|
||||
共 3 首不設群——樣本數不支持歸納——僅入基底統整,
|
||||
由研究者以個案閱讀。同一輸入不重複執行:自由歸納之
|
||||
產出無機械合併可言,其變異由 5-1 三讀、5-2 整合與
|
||||
草稿地位承接,四份草稿互為對照,由研究者終審裁決。
|
||||
- **5-4 樣態標註**:以 (歌, 樣態) 對為可逐項機械比對之
|
||||
單位,回歸「三次執行+多數決」協定。對象為「有問題」
|
||||
的歌——三讀中至多一個「無」(多數決精神;恰兩「無」
|
||||
者其整合報告主清單必為空,與 5-2 主清單規則自洽),
|
||||
計 111 首(男聲 12、女聲 69、混合 29、genderfluid 1)。
|
||||
樣態表為三份分組統整草稿原文:男聲 13 條(M1–M13)、
|
||||
女聲 14 條(F1–F14)、混合 16 條(X1–X16);基底 15 條
|
||||
- **5a 逐首閱讀**:每筆輸入為一首歌的完整歌詞逐字全文,
|
||||
不含歌名與演唱者(盲讀)。同一份定義檔、同一份輸入檔,
|
||||
獨立執行三次,歸檔並列。
|
||||
- **5b 逐首整合**:每筆輸入為該首歌的三份閱讀報告
|
||||
(不含歌詞);以問題機制為單位保守合併,標收斂註記
|
||||
((3/3)、(2/3)),主清單僅列兩讀以上提出者,單讀發現
|
||||
以一行存目;定義檔,執行一次。
|
||||
- **5c 樣態統整**:單筆輸入為一批整合報告;歸納問題
|
||||
**樣態**——問題呈現與運作的重複形態,非問題分類,
|
||||
代表引句僅取自主清單。四種輸入範圍各執行
|
||||
一次:全 145 首之基底統整,及依演唱聲音之性別切分
|
||||
之三個發話脈絡統整——男聲(male)、女聲(female)、
|
||||
混合(mixed);基底看橫貫各
|
||||
脈絡之樣態,分組看各權力脈絡下之樣態。genderfluid
|
||||
與 non-binary 共 3 首不設群——樣本數不支持歸納——
|
||||
僅入基底統整。同一輸入不重複
|
||||
執行:自由歸納之產出無機械合併可言,其變異由 5a
|
||||
三讀、5b 整合與草稿地位承接,四份草稿互為對照,由
|
||||
研究者終審裁決。
|
||||
- **5d 樣態標註**:以(歌,樣態)對為可逐項機械比對之
|
||||
單位,回歸「三次執行+多數決」協定。對象為「有問題」
|
||||
的歌——三讀中至多一個「無」(多數決精神;恰兩「無」
|
||||
者其整合報告主清單必為空,與 5b 主清單規則自洽),
|
||||
計 111 首(男聲 12、女聲 69、混合 29、genderfluid 1)。
|
||||
樣態表為三份分組統整草稿原文:男聲 13 條(M1–M13)、
|
||||
女聲 14 條(F1–F14)、混合 16 條(X1–X16);基底 15 條
|
||||
不入矩陣——全體歸納之一條樣態可能疊合不同方向的
|
||||
權力關係(男對女、女對男),實為多個樣態共用一名。
|
||||
檢驗範圍:男聲樣態不檢驗純女聲歌、女聲樣態不檢驗
|
||||
純男聲歌(發話位置範疇錯置,檢查無意義);混合樣態
|
||||
檢驗全部(其男女聲部無系統化切分方式,無意義之標註
|
||||
容忍之);genderfluid 歌三套全查(無自身透鏡,發話
|
||||
位置無法先驗決定),其歸屬引用維持個案地位。每筆
|
||||
輸入為一首歌之整合報告(「僅單獨提及」行於組裝時
|
||||
剝除,標註僅依主清單)與該首適用之樣態表;定義檔
|
||||
`prompts/05-04-annotate.md`,獨立執行三次
|
||||
(`runs/05-04-annotate/run1`~`run3`),(歌, 樣態) 對
|
||||
權力關係(男對女、女對男),實為多個樣態共用一名。
|
||||
檢驗範圍:男聲樣態不檢驗純女聲歌、女聲樣態不檢驗
|
||||
純男聲歌(發話位置範疇錯置,檢查無意義);混合樣態
|
||||
檢驗全部(其男女聲部無系統化切分方式,無意義之標註
|
||||
容忍之);genderfluid 歌三套全查(無自身透鏡,發話
|
||||
位置無法先驗決定),其歸屬引用維持個案地位。每筆
|
||||
輸入為一首歌之整合報告(「僅單獨提及」行於組裝時
|
||||
剝除,標註僅依主清單)與該首適用之樣態表;定義檔
|
||||
獨立執行三次,(歌,樣態)對
|
||||
得兩票以上者定案。
|
||||
- **模型**:`claude-fable-5`(與先導深讀同儀器;
|
||||
`temperature` 與 `thinking` 參數不適用,均不送出)。
|
||||
- **輸入組裝**:確定性行內腳本。5-1:145 首依歌曲 ID
|
||||
升序,`content` 為歌詞逐字全文;5-2:每筆
|
||||
`{"reports": [run1 輸出, run2 輸出, run3 輸出]}`;
|
||||
5-3:單筆以 `song-<ID>` 為鍵、整合報告為值之 JSON
|
||||
物件,鍵集合為該次統整之範圍(基底為全 145 首,
|
||||
分組依工作庫 `performer_gender` 切分);5-4:每筆
|
||||
`{"report": 主清單, "patterns": [{"id", "name",
|
||||
"description"}]}`,樣態條目自分組統整草稿機械切出,
|
||||
代表引句不隨附——引句出自特定歌曲,判該曲時形同
|
||||
預答。各輸入檔之 SHA-256 記入該步 meta。
|
||||
- **模型**:`claude-fable-5`。
|
||||
- **輸入組裝**:各步輸入檔由確定性程序自上游產物組裝。
|
||||
5d 之樣態條目自分組統整草稿機械切出,代表引句不
|
||||
隨附——引句出自特定歌曲,判該曲時形同預答。
|
||||
|
||||
## 女性力量候選集
|
||||
|
||||
候選集為兩類歌曲的合集:定案編碼含 `women-power` 者,
|
||||
以及定案編碼含研究者指認之女性力量概念域分群組者。
|
||||
指認於詞彙表定案後、黃金標準編碼開始前完成,指認清單
|
||||
與理由記入決策日誌。
|
||||
候選集為定案編碼含 `women-power` 或 `female-empowerment`
|
||||
(步驟 4 女性力量群的兩個編碼)之歌曲聯集:wp 66 首、
|
||||
fe 144 首,聯集 145 首。
|
||||
|
||||
## 軌跡對映(診斷用)
|
||||
|
||||
沿收斂軌跡的機械對映:原始關鍵字 →(兩份標註執行歸檔的
|
||||
`output.jsonl`)歌曲、原始關鍵字 →(分群)組,純程式查表,
|
||||
原始輸出)歌曲、原始關鍵字 →(分群)組,純機械查表,
|
||||
決定性。以其結果與步驟 3 直接編碼的差異率作為「收斂軌跡
|
||||
扭曲」的診斷量,不作主結果。
|
||||
|
||||
@@ -230,78 +171,36 @@
|
||||
每一步的輸出如何變成下一步的輸入,皆為確定性程序,規則
|
||||
明定如下:
|
||||
|
||||
- **歌詞輸入檔(步驟 1)**:`export-llm-input` 自工作
|
||||
儲存產出,每筆 `{"id": "song-<ID>", "content": <歌詞>}`,
|
||||
依歌曲 ID 升序。步驟 3 的輸入由同一子命令、同一工作
|
||||
儲存產出(見下),兩步的語料同一性由此成立;各步
|
||||
輸入檔的 SHA-256 記入該步 meta。
|
||||
- **步驟 1 → 2**:`cluster-keywords` 讀兩份執行歸檔的
|
||||
`output.jsonl`(一律以換行字元 `\n` 切行——歌詞含
|
||||
U+0085 等控制字元時,`str.splitlines()` 類的通用切行
|
||||
會截斷 JSON 字串,實測踩中),進池後直接分群,一次
|
||||
產出上列五份檔案。
|
||||
- **步驟 2 → 3 輸入檔**:`export-llm-input --extras
|
||||
<定案碼表>` 自工作儲存產出步驟 3 的輸入,每筆
|
||||
`{"id": "song-<ID>", "content": <字串>}`,`content` 為
|
||||
固定鍵序序列化的 `{"lyrics": …, "keywords": [...]}`,
|
||||
依歌曲 ID 升序。碼表以參數傳入而非填進定義檔——定義
|
||||
- **歌詞輸入檔(步驟 1)**:由確定性的匯出程序自工作
|
||||
儲存產出,一筆一首歌,依歌曲 ID 升序。步驟 3 的輸入
|
||||
由同一匯出程序、同一工作儲存產出(見下),兩步的語料
|
||||
同一性由此成立。
|
||||
- **步驟 1 → 2**:確定性的分群程序讀兩份執行歸檔的
|
||||
執行紀錄,進池後直接分群,產出詞彙表與交給
|
||||
模型的碼表。
|
||||
- **步驟 2 → 3 輸入檔**:同一匯出程序自工作儲存產出
|
||||
步驟 3 的輸入,一筆一首歌,兼含歌詞與定案碼表,依
|
||||
歌曲 ID 升序。碼表以參數傳入而非填進定義檔——定義
|
||||
檔只規定任務形狀,換詞彙表、換演算法都不必改它。
|
||||
- **步驟 3 定案**:`tally-codings <執行歸檔 1> <執行歸檔
|
||||
2> <執行歸檔 3> <輸出 CSV> --corrections <更正表>
|
||||
--valid-keywords <合法碼清單>` 讀三份執行歸檔的
|
||||
`output.jsonl`,依序套用更正表、驗證所有標籤皆在合法碼
|
||||
- **步驟 3 定案**:確定性的計票程序讀三份執行歸檔的
|
||||
執行紀錄,依序套用更正表、驗證所有標籤皆在合法碼
|
||||
清單之內、計票。
|
||||
- **更正表**:`data/manual/coding-corrections.csv`,研究者
|
||||
逐列校定的人工著作,欄位 `Song ID`、`Run`、`Type`、
|
||||
`To Be Replaced`、`Correct Term`。`Type` 為 `keyword`
|
||||
或 `evidence`,分別更正標籤與引述;`Correct Term` 為
|
||||
替代字串,或 `**REMOVE**` 表示刪去該筆標籤指派(`keyword`)
|
||||
或該句引述(`evidence`)。一筆 `evidence` 更正套用於該
|
||||
首歌該次執行的所有出現處。兩個文字欄以歌詞慣例「 / 」
|
||||
表示換行(與載入後的執行紀錄同一表示法,逐字比對、不再
|
||||
轉換),故一列一行,純文字工具可逐列處理。表中任一列若
|
||||
在資料中找不到對應者,即中止;校定的判準記於
|
||||
`decision-log.md`。
|
||||
- **合法碼清單**:純文字、一行一個碼,自詞彙表產出:
|
||||
`{ cat runs/02-cluster/result-keywords.txt; echo
|
||||
women-power; } | sort`。
|
||||
- **定案表**:`results/codings.csv`,欄位 `Song`、
|
||||
`Artist Credit`、`Keyword`、`Quote`,一列一個標籤。歌名
|
||||
與演出者名銜逐首查工作儲存取得,故本子命令須在
|
||||
`build-db` 之後執行。`Quote` 為該標籤在計票中各份執行
|
||||
所引的歌詞行:各份的引述串接後逐字去重,按 Unicode
|
||||
碼位排序,以單一 `|` 相接(三份執行彼此無先後主從之
|
||||
別,引述之序取決於引述本身);引述內的換行於執行紀錄
|
||||
載入時一次換成歌詞慣例「 / 」,此後更正表、定案表與
|
||||
工作儲存全鏈路同一表示法,不再還原。「 / 」的無歧義性
|
||||
是語料事實而非結構保證:全 883 首歌詞經窮舉查核不含
|
||||
「 / 」;換語料須重查。列序依印出的前三欄依序排:
|
||||
歌名、演出者名銜、
|
||||
標籤,一律以 Unicode 碼位比較,換行為 CRLF(同專案
|
||||
其他 CSV)。
|
||||
- **序列化通則**:所有中間檔為 UTF-8,欄序、鍵序與元素
|
||||
序皆依上列規則明定,無時間戳、無隨機成分;JSON 解析
|
||||
一律偵測重複鍵,違規即失敗。人讀為主的產物採純文字或
|
||||
CSV(CSV 依 RFC 4180,標題列字首大寫),機器交接檔採
|
||||
JSON。給定相同的 LLM 執行輸出,全部交接產物逐位元組
|
||||
可再生。
|
||||
- **更正表**:研究者逐列校定的人工著作,逐筆更正標籤
|
||||
或引述——以替代字串取代,或刪去該筆標籤指派或該句
|
||||
引述。一筆引述更正套用於該首歌該次執行的所有出現處。
|
||||
表中任一列若在資料中找不到對應者,即中止;校定的
|
||||
判準記於 `decision-log.md`。
|
||||
- **合法碼清單**:自詞彙表產出:分群組名加上
|
||||
`women-power`。
|
||||
- **定案編碼表**:歌名與演出者名銜逐首查工作儲存取得。
|
||||
每個定案標籤隨附其在計票中各份執行所引的
|
||||
歌詞行,供逐碼查核(三份執行彼此無先後主從之別)。
|
||||
|
||||
## 執行與稽核
|
||||
|
||||
- LLM 步驟以 `run-llm <定義檔> <輸入檔> <歸檔目錄>`
|
||||
執行;一步的 N 次執行=重現命令清單上的 N 行命令,
|
||||
各自歸檔(`runs/<步驟>/run1`、`run2`,三票制步驟另有
|
||||
`run3`)。
|
||||
- 確定性步驟(進池、分群、計票、對映)為子命令,其
|
||||
輸入輸出檔同隨 `runs/` 歸檔;因無執行變異,歸檔目錄
|
||||
下不分 `run<N>` 層。
|
||||
- LLM 步驟以批次執行程序執行,一份定義檔配一份
|
||||
輸入檔;一步的 N 次執行為 N 次各自獨立的呼叫,各自
|
||||
歸檔自我完備。
|
||||
- Batch API 的每筆請求自含全部脈絡且互不可見(平台
|
||||
契約),歌與歌之間的獨立性由此成立;各次執行的獨立
|
||||
性由「一次呼叫、一個批次、一份歸檔」的執行結構自明。
|
||||
- 每次 `run-llm` 執行的 token 用量與費用記入
|
||||
`run-costs.md`,被取代的執行一併保留供總支出核算。
|
||||
|
||||
## 映射分析方法
|
||||
|
||||
(依 2026-07-30 決策,於看到結果前寫定;待黃金標準
|
||||
編碼展開前補入。)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# LLM 輸出的契約查核
|
||||
|
||||
(2026-08-06 量測。對象為步驟 3 的三份執行歸檔
|
||||
`runs/03-code/run1`–`run3`,共 883 首歌、44,149 筆標籤
|
||||
`data/runs/3a-code/run1`–`run3`,共 883 首歌、44,149 筆標籤
|
||||
指派、44,146 句引述。歌詞以模型實際看到的那一份為準,即
|
||||
`tools/instance/llm-input-code.jsonl`。)
|
||||
|
||||
定義檔 `prompts/03-code.md` 對輸出下了四條明確要求:只用
|
||||
定義檔 `prompts/3a-code.md` 對輸出下了四條明確要求:只用
|
||||
給定的碼且拼寫照給、每個標出的碼恰引一行歌詞、引述逐字、
|
||||
輸出為合法 JSON 且無其他文字。本檔記錄這四條各自被遵守到
|
||||
什麼程度。
|
||||
@@ -46,9 +46,8 @@ song-750 run3: -use=[] -abuse=["I got a thing for the hard
|
||||
liquor on ice"]
|
||||
```
|
||||
|
||||
模型寫錯後綴、已輸出的 token 收不回,遂以空陣列收束該鍵,
|
||||
再於正確的鍵補上引述。song-750 的 run1 與 run2 則整筆使用
|
||||
錯拼的鍵並附上引述,故該首的三票分裂於兩種拼寫之間。
|
||||
song-750 的 run1 與 run2 則整筆使用錯拼的鍵並附上引述,
|
||||
故該首的三票分裂於兩種拼寫之間。
|
||||
|
||||
## 引述的存在
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
# 先導研究的來歷與地位
|
||||
|
||||
(2026-08-17 認清並記錄。本檔記述正式研究之前的先導研究:
|
||||
它做了什麼、研究者檢視到哪一層、哪些成果被沿用、哪些被
|
||||
棄用,以及它如何促成正式研究的設計。)
|
||||
|
||||
## 一、先導研究是什麼
|
||||
|
||||
正式研究之前,研究者曾以 Claude Code 對 Billboard Year-End
|
||||
Hot 100(2018–2025、684 首)的歌詞做過一輪探索性分析,檢視
|
||||
「女性力量」語彙的使用狀況,並附帶分析 pussy 一詞作為女性
|
||||
代稱的修辭。2026 年 4 月投出的研討會摘要即根據該輪分析撰寫。
|
||||
|
||||
## 二、它實際的執行方式
|
||||
|
||||
**研究問題與方向由研究者提出**:女性力量語彙被父權框架取用、
|
||||
pussy 作為代稱的跨性別使用,都是研究者長期關注的問題。
|
||||
|
||||
**設計與執行由 Claude Code 進行**:分析管線、分類架構(genuine
|
||||
/peripheral/fake 三分類)、五種「假女性力量」類型、以及
|
||||
frame-aware 提示修正實驗,均由當時協作的 Claude Code 設計並
|
||||
執行。
|
||||
|
||||
**研究者檢視的是問題與答案,不是中間過程**:研究者確認研究
|
||||
問題的方向正確、答案值得追究,即據以投稿;分類類目如何產生、
|
||||
提示詞如何下、數字如何算出,並未逐步檢視。投稿摘要中的具體
|
||||
數字(如「44% 屬於假女性力量」、62 首的三分類、53 首的 pussy
|
||||
修辭分類、假率由 44% 降至 5% 以下)研究者未曾稽核,其產生
|
||||
過程亦無歸檔可回溯。
|
||||
|
||||
**當時的判斷**:投稿未上即罷;若上,正式研究由研究者自行
|
||||
設計與執行。事實上正式研究即是如此重做的。
|
||||
|
||||
## 三、被沿用的成果
|
||||
|
||||
- **歌詞捕捉檔**:先導研究蒐集的 lyrics.json(684 首,
|
||||
2018–2025)以私人腳本(不入版本庫)匯入歌詞快取,只取
|
||||
識別欄位與歌詞本文,先導的分析欄位一概不匯入;出處記於
|
||||
`data/captures/lyrics-provenance.csv`
|
||||
(見 `decision-log.md` 2026-07-31、08-02 條)。
|
||||
- **假說方向**:女性力量語彙的挪用與污染,成為正式研究的
|
||||
研究問題。
|
||||
- **粒度選擇**:正式研究鎖定 thematic keywords 這一粒度,
|
||||
係繼承先導研究三種粒度的比較結果(keywords 過碎、themes
|
||||
過早抽象)。
|
||||
- **`women-power` 一詞的來歷**:考據先導研究的 local agent
|
||||
存檔可知,其第一步指令含數十個範例 thematic keywords,
|
||||
其中即有 women-power——為當時協作的 Claude Code 依研究者
|
||||
長期表達的關注主動加入(研究者端播種,非明示指定);先導
|
||||
的標籤 `women-power-and-empowerment` 則是第三步強制合併
|
||||
兩個關鍵字的管線人工產物(見 `decision-log.md` 2026-08-04
|
||||
條)。
|
||||
- **簿記容量的教訓**:先導研究九百餘詞可以在單一回應內完成
|
||||
分組;此法未沿用,詞彙表改由確定性程序產生(見
|
||||
`decision-log.md` 2026-08-06 條)。
|
||||
|
||||
## 四、被棄用的成果
|
||||
|
||||
以下先導研究的產物未進入正式研究,論文亦未引用:
|
||||
|
||||
- **genuine/peripheral/fake 三分類與「44% 假女性力量」**:
|
||||
構念與分母均未經稽核回溯,未沿用。
|
||||
- **五種「假女性力量」類型(A–E)**:未沿用。
|
||||
- **pussy 一詞的修辭分類**:未沿用。
|
||||
- **frame-aware(框架感知)提示修正法**:先導研究以框架判準
|
||||
寫進提示以提高準確率;未沿用。
|
||||
- **三個獨立 LLM subagent+人工仲裁的流程**:未沿用,原因見
|
||||
`decision-log.md` 2026-07-30 條。
|
||||
|
||||
## 五、它促成了可稽核的設計
|
||||
|
||||
先導研究的根本限制不在結論對錯,而在**不可稽核**:沒有定義檔
|
||||
快照、沒有原始輸出歸檔、沒有參數紀錄,因此任何一個數字都無法
|
||||
回溯到產生它的那一次執行。正式研究的可稽核設計,正是針對這一點
|
||||
而立。
|
||||
|
||||
換言之,正式研究對 LLM 輸出所採取的「不信任、須查核」立場,
|
||||
其第一個案例就是先導研究本身。
|
||||
|
||||
## 六、現存的紀錄
|
||||
|
||||
- 投稿時的先導研究摘要:已於 git 歷史中(`paper/abstract.md`
|
||||
的前身),樹中不另存副本——摘要只是產物,不足以記述過程,
|
||||
故另立本檔。
|
||||
- 先導研究的歌詞捕捉檔沿用事實:`data/captures/lyrics-provenance.csv`。
|
||||
@@ -1,114 +0,0 @@
|
||||
# 專案目錄結構
|
||||
|
||||
(2026-07-30 討論定案;2026-07-31 更新為 tools/ 子專案與
|
||||
SQLite 工作儲存架構)
|
||||
|
||||
```
|
||||
pop-fem-audit/
|
||||
├── README.md # 專案說明、重現步驟
|
||||
├── CLAUDE.md # 極簡工作規範(subagent 會讀到,
|
||||
│ # 絕不放理論、codebook、預期結果)
|
||||
├── .gitignore # captures/lyrics/、.env、scratch
|
||||
├── data/ # 依生命週期分層(文字格式)
|
||||
│ ├── source/ # 源頭:手放後不動
|
||||
│ │ └── yearend_hot100_2016_2025.csv # 原始榜單
|
||||
│ ├── captures/ # 外部捕捉:只由 fetch 命令與
|
||||
│ │ │ # 私人匯入腳本寫入
|
||||
│ │ ├── artists-wikidata.csv # Wikidata 快照
|
||||
│ │ ├── lyrics-provenance.csv # 歌詞出處
|
||||
│ │ └── lyrics/ # 歌詞 .txt 快取
|
||||
│ │ # (gitignored,版權)
|
||||
│ ├── manual/ # 人工著作:只由研究者手寫
|
||||
│ │ # (黃金標準編碼等)
|
||||
│ └── derived/ # 衍生:只由 build-db 寫入
|
||||
│ ├── songs.csv # 歌曲報表(人讀;進 git)
|
||||
│ └── artists.csv # 歌手報表(人讀;進 git)
|
||||
├── prompts/ # LLM 定義檔(逐字作為 system prompt)
|
||||
│ └── <步>-<次步>-<task>.md # 01-tag.md、03-code.md
|
||||
│ # (步內僅一個執行時省略次步)
|
||||
│ # 不帶版本號,版本即 git 歷史
|
||||
│ # (編號的所指是工序:確定性
|
||||
│ # 的步驟 2 無定義檔仍佔一號;
|
||||
│ # 補零只為排序)
|
||||
├── tools/ # 輔助工具子專案(src-layout)
|
||||
│ ├── pyproject.toml # 發行名 pop-fem-audit-tools;
|
||||
│ │ # pip install -e tools/ 安裝
|
||||
│ ├── README.rst LICENSE MANIFEST.in .env.example .gitignore
|
||||
│ ├── docs/ # Sphinx API 文件
|
||||
│ ├── instance/ # SQLite 工作儲存(generated、
|
||||
│ │ # gitignored;含歌詞全文)
|
||||
│ ├── src/pop_fem_audit_tools/
|
||||
│ │ ├── __main__.py # 套件 CLI 進入點(分派子命令)
|
||||
│ │ ├── commands/ # CLI 子命令模組(登記於 __init__)
|
||||
│ │ │ ├── build_db.py # build the SQLite working store
|
||||
│ │ │ │ # from the inputs
|
||||
│ │ │ ├── export_llm_input.py # export the LLM input JSONL
|
||||
│ │ │ │ # (lyrics only) from the
|
||||
│ │ │ │ # working store
|
||||
│ │ │ ├── fetch_artists.py # fetch artist metadata from
|
||||
│ │ │ │ # Wikidata into the snapshot CSV
|
||||
│ │ │ ├── fetch_lyrics.py # fetch missing lyrics from the
|
||||
│ │ │ │ # public APIs into the lyrics dir
|
||||
│ │ │ ├── cluster_keywords.py # pool the tagging runs'
|
||||
│ │ │ │ # keywords and cluster them
|
||||
│ │ │ │ # into the codes (step 2)
|
||||
│ │ │ └── run_llm.py # API 執行器:一份定義檔+一份輸入
|
||||
│ │ │ # →歸檔至指定目錄(Batch API);
|
||||
│ │ │ # 多次執行的計票由獨立子命令承擔
|
||||
│ │ ├── config.py # pydantic-settings 設定(.env)
|
||||
│ │ ├── database.py # SQLAlchemy engine / session / Base
|
||||
│ │ ├── models.py # SQLAlchemy ORM 資料模型
|
||||
│ │ └── utils.py # 共用工具(format_duration)
|
||||
│ └── tests/ # 單元測試(unittest)
|
||||
├── runs/ # 現行執行的完整稽核紀錄(進 git;
|
||||
│ │ # 重跑同一 run 須明示 --replace)
|
||||
│ ├── <步驟名>/ # 一步一個目錄(如 03-code)
|
||||
│ │ └── run<N>/ # LLM 步驟:每個 run 一份自我
|
||||
│ │ ├── prompt.md # 完備歸檔(定義檔快照)
|
||||
│ │ ├── output.jsonl # 該次執行原始輸出
|
||||
│ │ └── meta.json # model ID、temperature、時間戳、
|
||||
│ │ # batch ID、token 用量
|
||||
│ └── 02-cluster/ # 確定性步驟:無執行變異,
|
||||
│ # 不分 run<N> 層
|
||||
├── results/ # 論文引用的報表 CSV(export 產出;
|
||||
│ # 「可再生仍 commit」的唯一例外)
|
||||
├── docs/
|
||||
│ ├── research-plan.md # 研究步驟規劃(本檔之姊妹篇)
|
||||
│ ├── project-structure.md # 本檔
|
||||
│ ├── codebook.md # 人工編碼手冊(版本由 git 管理)
|
||||
│ ├── decision-log.md # 決策日誌:每次改定義檔的原因
|
||||
│ ├── run-costs.md # 每次執行的 token 用量與費用
|
||||
│ └── methodology.md # 方法細節(全文方法節底稿;
|
||||
│ # 映射分析方法須在看結果前寫定)
|
||||
└── paper/
|
||||
├── conference-abstract.md # pilot 摘要(投稿版)
|
||||
└── full-paper.md # 全文
|
||||
```
|
||||
|
||||
## 設計理由
|
||||
|
||||
- **`runs/` 自我完備**:每個執行目錄含定義檔快照 + 原始輸出 +
|
||||
meta,讀者不需 git 考古即可稽核任一筆結果。
|
||||
- **`runs/`(原始稽核資料)與 `results/`(最終表)分離**:
|
||||
論文只引 `results/`,其來源可回溯至 `runs/`。
|
||||
- **`prompts/` 檔名不帶版本號**:版本即 git 歷史,失敗的
|
||||
版本不保留;論文引用的單位是 `runs/` 內隨執行保存的定義檔
|
||||
快照(每個執行目錄自我完備),不需檔名可指的版本名。
|
||||
- **工作儲存的資料表**:`songs`、`chart_entries`、`artists`、
|
||||
`song_artists`、`codings`(定案編碼:一歌一標籤一列,`quotes`
|
||||
存該標籤所據的歌詞引述,多句以 `|` 相接)。定案表
|
||||
`results/codings.csv` 經 `build-db --codings` 匯入,與其餘資料
|
||||
同一交易,儲存不會半建;詳見 `research-plan.md`「資料儲存與
|
||||
模型」。
|
||||
- **Commit 判準**:能由「committed 輸入+程式」決定性再生者不
|
||||
commit(SQLite 工作儲存、LLM 輸入檔);源頭、捕捉、人工著作
|
||||
一律以文字 commit。「可再生仍 commit」的例外有二:
|
||||
`results/` 報表(引用穩定性、審稿人零門檻、撰稿期可 diff)
|
||||
與 `data/derived/` 人讀報表(與工作儲存同一動作產出,稽核
|
||||
鏈無中間空缺)。詳見 `research-plan.md`「資料儲存與模型」。
|
||||
- **設定**經 pydantic-settings 統一:`.env`(gitignored,範本
|
||||
`tools/.env.example`)供應 `SQLALCHEMY_DATABASE_URL` 與
|
||||
`ANTHROPIC_API_KEY`,絕不寫入 repo。
|
||||
- **CLAUDE.md 極簡**:實測證實 Claude Code subagent 會繼承專案
|
||||
CLAUDE.md 全文,故其中只放工作流程規則,領域知識一律放
|
||||
`docs/`(subagent 不會自動讀到)。
|
||||
@@ -0,0 +1,150 @@
|
||||
# 信度:量測方式與結果
|
||||
|
||||
(2026-08-16 量測。對象為步驟 3a 與步驟 5d 各三次執行的
|
||||
原始輸出;數字由原始輸出直接計算。)
|
||||
|
||||
## 一、本研究的信度是什麼
|
||||
|
||||
**信度(reliability)** 問的是:同一個量測重複做,會不會得到
|
||||
同樣的結果。它管的是**一致性**,不管對錯。一把每次都少兩公斤
|
||||
的秤,信度很好、效度很差。**效度(validity)** 問的則是:量到
|
||||
的是不是想量的東西。
|
||||
|
||||
Krippendorff 依產生資料的設計,把信度分成三型
|
||||
(Krippendorff, 2004;Hayes & Krippendorff, 2007):
|
||||
|
||||
- **穩定性(stability)**:同一位觀察者、同樣的材料,重複
|
||||
量測是否一致(test–retest,即 intra-observer)。
|
||||
- **可複製性(reproducibility)**:不同觀察者各自獨立量測
|
||||
是否一致,即一般所稱的**編碼者間信度**
|
||||
(inter-coder reliability)。Krippendorff 認為這是內容
|
||||
分析中最強、也最可行的一型,因為它排除了「這些類目只是
|
||||
某一個人特異的讀法」的疑慮。
|
||||
- **準確性(accuracy)**:與已知標準比對。
|
||||
|
||||
**本研究三次獨立執行量到的是第一型。**同一個模型、同一份
|
||||
定義檔、同一批輸入,重複三次,量到的是這個編碼者自己前後
|
||||
一不一致。第二型在本設計中**結構上不存在**:編碼者只有一位,
|
||||
不同的模型版本(Sonnet 4.6、Fable 5)也不是「不同的編碼者」,
|
||||
而是不同的儀器。第三型**未量測**:沒有黃金標準可比。
|
||||
|
||||
以工程的語言說更精確:這裏量的是**儀器的重複性
|
||||
(repeatability)**,亦即**隨機性有多大**;計量學上稱之為
|
||||
**精密度(precision)**,而**準確度(accuracy)** 未經量測。
|
||||
若儀器是確定性的,重複性無須量測;但 LLM 不是——同樣的提示、
|
||||
同樣的輸入,三次會給出不同結果,因此重複性是必須報告的儀器
|
||||
規格。
|
||||
|
||||
## 二、三個常用指標
|
||||
|
||||
以「這首歌有沒有這個碼」這種是非題為例:
|
||||
|
||||
- **百分比一致率**:兩次判斷相同的格子佔全部格子的比例。
|
||||
最直觀,但會被「碰巧同意」灌水——當九成五的格子都是
|
||||
「無」,兩次隨便判也會有九成以上一致。
|
||||
- **Cohen's κ(kappa)**:把「碰巧同意」的部分扣掉之後的
|
||||
一致度,兩位編碼者用。0 表示與隨機無異,1 表示完全一致。
|
||||
慣例上 0.61–0.80 稱為 substantial、0.81 以上稱為
|
||||
almost perfect(Landis & Koch 1977 的分級)。
|
||||
- **Krippendorff's α**:可處理兩位以上編碼者、缺漏值與
|
||||
不同尺度,是內容分析文獻最常被要求的指標。慣例門檻為
|
||||
α ≥ 0.800 可作結論、0.667–0.800 只能作暫定結論
|
||||
(Krippendorff 的建議)。
|
||||
|
||||
三者裏,**百分比一致率會高估、κ 與 α 才是可比較的數字**。
|
||||
|
||||
補充一個常被誤解的方向:κ 的著名「悖論」
|
||||
(Feinstein & Cicchetti, 1990)是**類別分佈極不平衡時,
|
||||
高一致率反而算出很低的 κ**——偏斜會壓低 κ,不會抬高它。
|
||||
本研究的正例只佔 16.5%(89,183 格中約 14,700 格有碼),
|
||||
在這種偏斜下 κ 仍達 0.93,屬於保守估計,不是被大量「雙方
|
||||
都判無」灌出來的。
|
||||
|
||||
## 三、實測結果
|
||||
|
||||
### 步驟 3a(編碼:883 首 × 101 個碼 = 89,183 格,執行三次)
|
||||
|
||||
| 兩次執行 | 百分比一致率 | Cohen's κ | Jaccard |
|
||||
|---|---:|---:|---:|
|
||||
| run1 × run2 | 98.10% | 0.931 | 0.891 |
|
||||
| run1 × run3 | 98.09% | 0.931 | 0.891 |
|
||||
| run2 × run3 | 98.26% | 0.937 | 0.900 |
|
||||
|
||||
**Krippendorff's α = 0.933**(三次執行合計)。
|
||||
|
||||
三票計票的分佈:三票全同 13,500 格、兩票 1,163 格、
|
||||
僅一票 1,310 格(未達門檻而剔除)。**定案的 14,663 個編碼
|
||||
中,92.1% 是三次全數同意的**。
|
||||
|
||||
(此處由原始輸出計算,未套用 936 筆人工校對表;論文引用的
|
||||
定案數 14,664 為校對後的結果,差 1 筆。)
|
||||
|
||||
### 步驟 5d(樣態標註:111 首 × 各自適用樣態 = 3,708 格,執行三次)
|
||||
|
||||
| 兩次執行 | 百分比一致率 | Cohen's κ | Jaccard |
|
||||
|---|---:|---:|---:|
|
||||
| run1 × run2 | 97.87% | 0.933 | 0.898 |
|
||||
| run1 × run3 | 98.17% | 0.942 | 0.911 |
|
||||
| run2 × run3 | 97.87% | 0.933 | 0.898 |
|
||||
|
||||
**Krippendorff's α = 0.936**。三票全同 675 格、兩票 62 格、
|
||||
僅一票 51 格;**定案的 737 筆歸屬中,91.6% 三次全同**。
|
||||
|
||||
### 怎麼讀這些數字
|
||||
|
||||
κ 與 α 都在 0.93 上下,以慣例分級屬於 almost perfect,
|
||||
也高於 α ≥ 0.800 的門檻。用白話說:**這個編碼者重複三次,
|
||||
判斷幾乎不變;會左右搖擺的,是那一成左右的邊緣案例,而
|
||||
三票多數決正是為它們設計的**。
|
||||
|
||||
Jaccard(只看「有標到」的格子,忽略雙方都沒標的)約 0.89–0.91,
|
||||
比百分比一致率低而更誠實——因為 82% 的格子是雙方都判「無」,
|
||||
那些一致並不費力。
|
||||
|
||||
## 四、隨機性的規模
|
||||
|
||||
信度數字回答的實際問題是:**這台儀器的隨機性,大到會不會
|
||||
改變結論?**
|
||||
|
||||
步驟 3a 的 89,183 格中,搖擺的格子共 2,473 格(兩票 1,163、
|
||||
一票 1,310),佔 2.8%。若只執行一次即定案,這批格子當中約
|
||||
一半會成為誤收、另一半會成為漏收。三票多數決把兩票以上者
|
||||
收入、一票者剔除,處理的正是這一批。
|
||||
|
||||
以此規模判斷,結論層的三條帶狀結構(女性力量與陽剛群共現、
|
||||
與脆弱群互斥、與厭女群獨立)不可能由這個量級的雜訊翻轉。
|
||||
反過來說,若一致率只有 0.6,同一組結論就不能採信——信度
|
||||
數字的用途在此,而不在滿足慣例。
|
||||
|
||||
## 五、這些數字證明了什麼、不能證明什麼
|
||||
|
||||
**能證明**:量測是穩定的,結果不是單次抽樣的偶然;
|
||||
三票多數決確實只在少數邊緣格子上發揮作用(約 3%)。
|
||||
|
||||
**不能證明**:判斷是正確的。三次共用同一個模型與同一份
|
||||
先驗,能濾掉隨機噪音,濾不掉系統性偏誤。本研究已發現三個
|
||||
三次一致的錯誤可作實例:Sonnet 4.6 穩定地將 Women Power
|
||||
讀為 Women+Power;深讀階段將〈Cowgirls〉中握韁繩者判反、
|
||||
將〈Happen To Me〉分屬兩段的引文接成同一動機。一把每次都
|
||||
量出同樣偏差的尺,重複性滿分,準確度為零。
|
||||
|
||||
**結構上沒有**:編碼者間信度。要有它,需要第二個獨立的
|
||||
觀察者——另一個模型,或研究者人工編一小批對照。本研究
|
||||
未做,列為限制。
|
||||
|
||||
## 六、計算方式與依據
|
||||
|
||||
- **分析單位**:每一個「(歌曲, 編碼)」格為一個單位,是非題
|
||||
(有標/無標)。步驟 3a 為 883 首 × 101 碼 = 89,183 格;
|
||||
步驟 5d 為各歌適用樣態數合計 3,708 格。
|
||||
- **Cohen's κ**:兩次執行的 2×2 表,κ=(p_o−p_e)/(1−p_e),
|
||||
p_e 由兩次各自的邊際比例相乘求得。
|
||||
- **Krippendorff's α(名目、三位「編碼者」、無缺漏)**:
|
||||
α=1−D_o/D_e;某單位若有 v 次標為「有」,其不一致配對數為
|
||||
v(3−v),D_o 為其總和除以總配對數,D_e 由整體「有/無」的
|
||||
邊際比例求得。
|
||||
- **門檻依據**:κ 的分級為 Landis & Koch (1977)
|
||||
(0.61–0.80 substantial、0.81–1.00 almost perfect);
|
||||
α 的門檻為 Krippendorff 的建議(≥0.800 可作結論、
|
||||
0.667–0.800 僅能作暫定結論)。
|
||||
- 數字由原始執行輸出直接計算,未套用 936 筆人工校對表。
|
||||
+24
-88
@@ -8,84 +8,36 @@
|
||||
|
||||
- **研究敘事**:全文為獨立完整的正式研究(2016–2025 十年
|
||||
語料共 1000 筆榜單紀錄、883 首歌,凍結程序後全量執行),
|
||||
**不與先導研究(paper/conference-abstract.md)做比較**;
|
||||
**不與先導研究做比較**;
|
||||
全文數字一律以正式研究結果為準。先導研究僅作為假說的
|
||||
內部來源,記於決策日誌,不進入論文敘事。
|
||||
- **執行原則**:主會話只做討論;所有分析由 deterministic
|
||||
script 執行。LLM 步驟以 Python script 呼叫 Anthropic
|
||||
Messages API(個人 Console 帳號、Batch API 五折),定義
|
||||
檔逐字作為 system prompt。可逐項機械比對的判斷(步驟 3
|
||||
編碼、步驟 4 選群、步驟 5-4 樣態標註)採「同一定義檔
|
||||
獨立執行三次+多數決」,計票由確定性子命令完成。自由
|
||||
生成(步驟 1 自由標註)兩次執行全數進池。步驟 5-1 至
|
||||
5-3 為質性閱讀協定:三次獨立閱讀為分析者三角檢核、
|
||||
逐首整合、樣態統整產出草稿,不適用投票與仲裁。詞彙表
|
||||
不經 LLM,由詞向量嵌入+確定性分群產生。驗證結果不符
|
||||
預期則修訂定義檔重跑該循環,絕不手改結果。
|
||||
- **執行原則**:主會話只做討論,分析一律由確定性程序
|
||||
執行。可逐項機械比對的判斷(步驟 3 編碼、步驟 4 選群、
|
||||
步驟 5d 樣態標註)採「三次獨立執行+多數決」定案,
|
||||
自由生成(步驟 1 自由標註)採兩次執行全數進池,步驟
|
||||
5a 至 5c 定為質性閱讀協定;程序細節見 `methodology.md`,
|
||||
工作規範見 `conventions.md`。
|
||||
- **提示詞只定格式、不定語意**:研究對象是通用 LLM 以其
|
||||
網路語料知識背景所做的自然編碼與閱讀,其結果本身是
|
||||
批判對象。定義檔只規定任務形狀(輸入、數量範圍、輸出
|
||||
格式),不給任何主題的定義、判準或範例。LLM 判斷一律
|
||||
要求逐項引述歌詞原句,作為檢視偏差的依據。
|
||||
- **模型**:步驟 1、3 用 `claude-sonnet-4-6`(temperature=0、
|
||||
thinking 關閉);步驟 4、5 用 `claude-fable-5`(兩參數
|
||||
不適用,均不送出;取樣變異由多數決或整合吸收)——實測
|
||||
發現 sonnet 將「Women Power」拆讀為 women+power 的組合
|
||||
語意,fable-5 讀為詞彙化概念,語意層任務因此換用
|
||||
fable-5(經過見決策日誌)。
|
||||
- **模型**:步驟 1、3 用 `claude-sonnet-4-6`;步驟 4、5
|
||||
用 `claude-fable-5`——實測發現 sonnet 將「Women Power」
|
||||
拆讀為 women+power 的組合語意,fable-5 讀為詞彙化
|
||||
概念,語意層任務因此換用 fable-5(經過見決策日誌)。
|
||||
- **信度與效度**:三次獨立執行量測穩定性(intra-rater
|
||||
reliability,可報告兩兩一致率);封閉母體全量檢查取代
|
||||
抽樣防衛。可重現性定義為「程序透明+可稽核」:公開定義
|
||||
檔、記錄 model ID 與執行時間、保存全部原始輸出。
|
||||
|
||||
## 資料儲存與模型
|
||||
## 範圍性定案
|
||||
|
||||
- **Commit 判準**:凡能由「committed 的輸入+committed 的
|
||||
程式」決定性再生者,不 commit;凡不能者——源頭資料、
|
||||
外部世界的捕捉(Wikidata 快照、LLM 原始輸出)、人工
|
||||
著作——一律以文字格式 commit。格式跟著層次走。
|
||||
- **分層**:
|
||||
- 源頭:原始榜單 CSV(進 git)。
|
||||
- 捕捉:Wikidata 快照 CSV、`runs/` JSONL(皆進 git);
|
||||
歌詞 `.txt` 快取(版權因素 gitignored,為已知的稽核
|
||||
缺口)。
|
||||
- 人工:`data/manual/`(僅研究者親手寫入:編碼修正、
|
||||
演唱者性別修正)。
|
||||
- 工作儲存:SQLite 單檔(`tools/instance/`,generated、
|
||||
不進 git),SQLAlchemy 2.0 typed ORM 定義 schema,
|
||||
設定經 pydantic-settings(`.env` 供應
|
||||
`SQLALCHEMY_DATABASE_URL` 與 `ANTHROPIC_API_KEY`)。
|
||||
歌詞全文入 DB(不進 git 故無版權疑慮)。
|
||||
- 衍生:`build-db` 建置工作儲存的同一動作產出人讀報表
|
||||
(`data/derived/`,進 git),與 SQLite 同交易語意。
|
||||
- 報表:論文引用的定案表進 `results/`——
|
||||
`codings.csv`(步驟 3 定案編碼)、`groups.csv`
|
||||
(步驟 4 定案編碼群)、`patterns.csv`(步驟 5-3 定案
|
||||
樣態表)、`annotations.csv`(步驟 5-4 定案歌×樣態
|
||||
矩陣)。衍生與報表為「可再生仍 commit」的例外,理由:
|
||||
引用穩定性、審稿人零門檻、撰稿期數字變動可 diff。
|
||||
- **資料模型**:`songs`(含 lyrics、`performer_gender`——
|
||||
演唱聲音之性別,由署名藝人之 Wikidata 性別推導後套用
|
||||
`data/manual/performer-gender-corrections.csv` 手工修正)、
|
||||
`chart_entries`、`artists`、`song_artists`、`codings`、
|
||||
`groups`(語意編碼群)、`patterns`(深讀樣態)、
|
||||
`annotations`(歌×樣態定案矩陣)。領域不變量(恰 1000
|
||||
筆榜單、每歌至少一 primary 歌手等)檢查內建於
|
||||
`build-db`,違規即建置失敗。
|
||||
- **歌手背景防火牆**:歌手背景資料只進人工解讀階段,
|
||||
**絕不進 LLM 輸入**——LLM 任務的 user message 維持
|
||||
歌詞-only 或管線中間產物-only,避免光環偏誤。
|
||||
- **Pilot 歌詞沿用(私人匯入,不進發布管線)**:先導研究
|
||||
捕捉檔(lyrics.json,684 首,2018–2025)以 `excludes/`
|
||||
的私人腳本匯入歌詞快取;讀者的重現路徑純粹是
|
||||
`fetch-lyrics`;沿用之事實記於
|
||||
`data/captures/lyrics-provenance.csv`(進 git)。
|
||||
- **子命令**(`pop-fem-audit-tools <cmd>`):`build-db`
|
||||
(`--codings`、`--groups`、`--gender-corrections`、
|
||||
`--patterns`、`--annotations`)、`cluster-keywords`、
|
||||
`export-llm-input`、`fetch-artists`、`fetch-lyrics`、
|
||||
`run-llm`(`--model` 於模型登錄表中擇一)、
|
||||
`tally-codings`、`tally-groups`、`tally-annotations`。
|
||||
- **Pilot 歌詞沿用**:先導歌詞沿用之來歷與細節詳見該檔
|
||||
(`pilot-study.md`)。
|
||||
|
||||
## 分析管線(五步驟,全部完成)
|
||||
|
||||
@@ -96,26 +48,19 @@
|
||||
階層式聚合分群 k=100,組名取 medoid;再併入研究者先驗
|
||||
主題詞 `women-power`(據實揭露的儀器介入),共 101 碼。
|
||||
3. **編碼(步驟 3)**:以定稿詞彙表對全 883 首編碼,逐
|
||||
標籤附引述,×3+多數決(`tally-codings`),定案
|
||||
`results/codings.csv`。「女性力量」候選集(wp 66 首、
|
||||
fe 144 首、wp∪fe 145 首)由此浮現。
|
||||
標籤附引述,×3+多數決,產出定案編碼表。「女性力量」
|
||||
候選集(wp 66 首、fe 144 首、wp∪fe 145 首)由此浮現。
|
||||
4. **語意編碼群(步驟 4)**:LLM 依編碼字面語意將 101 碼
|
||||
選入研究者指定的四個主題群(women-power/misogyny/
|
||||
masculine/vulnerable),×3+多數決(`tally-groups`),
|
||||
定案 `results/groups.csv`;wp/fe 與各編碼、各編碼群之
|
||||
關聯統計(BH-FDR 校正)入論文。
|
||||
masculine/vulnerable),×3+多數決,產出定案分群表;
|
||||
wp/fe 與各編碼、各編碼群之關聯統計(BH-FDR 校正)入
|
||||
論文。
|
||||
5. **女性主義問題之質性深讀(步驟 5)**:對 wp∪fe 145 首
|
||||
——5-1 逐首盲讀(僅歌詞全文)×3;5-2 逐首整合(收斂
|
||||
註記、主清單限兩讀以上);5-3 樣態統整(全體基底+
|
||||
男聲/女聲/混合三個發話脈絡分組);5-4 樣態標註——
|
||||
以分組樣態表逐首標註「有問題」的 111 首,×3+多數決
|
||||
(`tally-annotations`),定案 `results/patterns.csv` 與
|
||||
`results/annotations.csv`。
|
||||
|
||||
定義檔命名 `prompts/<步>-<次步>-<task>.md`,編號的所指是
|
||||
工序而非定義檔(確定性的第 2 步無定義檔仍佔編號);檔名
|
||||
不帶版本號——版本即 git 歷史;每次執行的定義檔快照隨
|
||||
`runs/` 自我完備,token 費用逐筆記於 `docs/run-costs.md`。
|
||||
——5a 逐首盲讀(僅歌詞全文)×3;5b 逐首整合(收斂
|
||||
註記、主清單限兩讀以上);5c 樣態統整(全體基底+
|
||||
男聲/女聲/混合三個發話脈絡分組);5d 樣態標註——
|
||||
以分組樣態表逐首標註「有問題」的 111 首,×3+多數決,
|
||||
產出定案樣態表與歌×樣態定案矩陣。
|
||||
|
||||
## 時程與剩餘工作
|
||||
|
||||
@@ -124,12 +69,3 @@
|
||||
污染」結論(步驟 5 素材已備)、信度說明、fe 與新自由
|
||||
主義敘事之詮釋標註。
|
||||
|
||||
## 其他已定案事項
|
||||
|
||||
- 歌詞受版權保護:完整歌詞不進 git
|
||||
(`data/captures/lyrics/` gitignored),論文與 repo 只留
|
||||
分析所引摘錄。
|
||||
- 工程支援(寫 script、style check、審稿)用公司訂閱的
|
||||
Claude Code;進論文的分析 token 由個人 API 帳號支付。
|
||||
- Positionality statement 寫入論文(53 歲、長年婦運者、
|
||||
資深工程師、離開學術圈多年、因整理榜單而起)。
|
||||
|
||||
+55
-51
@@ -10,57 +10,61 @@ $3/$15、opus-4-6 $5/$25、opus-5 與 fable-5 $10/$50)
|
||||
被 `--replace` 取代的執行以「已取代」標記,數字保留供
|
||||
總支出核算。
|
||||
|
||||
| 日期 | 步驟 | 執行 | 模型 | 批次 ID | 耗時 | input | output | 費用 (USD) | 狀態 |
|
||||
|---|---|---|---|---|---|---:|---:|---:|---|
|
||||
| 2026-08-04 | 01-01-01-tag | run1 | claude-sonnet-4-6 | msgbatch_01PTACDQMr8M6ahnshbedjtB | 6 分 27 秒 | 763,318 | 338,661 | $3.68 | 已取代(浮水印清洗與防圍欄修訂後重跑) |
|
||||
| 2026-08-05 | 01-01-01-tag | run1 | claude-sonnet-4-6 | msgbatch_01TikJNd2pZVxzQ8SaybVthu | 4 分 57 秒 | 774,604 | 323,651 | $3.59 | 已取代(合法 JSON 修訂後重跑) |
|
||||
| 2026-08-05 | 01-01-01-tag | run1 | claude-sonnet-4-6 | msgbatch_01JFBCNqnu1cwXyqmEKLHQYF | 4 分 30 秒 | 790,370 | 328,227 | $3.65 | 已取代(song-288 平台失敗,整批重跑驗證) |
|
||||
| 2026-08-05 | 01-01-01-tag | run1 | claude-sonnet-4-6 | msgbatch_01VSDneWuSbf8mShA32jiWrX | 6 分 15 秒 | 790,370 | 326,193 | $3.63 | 已取代(措辭修訂後全體重跑) |
|
||||
| 2026-08-05 | 01-01-01-tag | run1-rescue-288 | claude-sonnet-4-6 | msgbatch_019Hq6bNVXVmp4DjRZ2cgVda | 2 分 5 秒 | 1,015 | 376 | $0.01 | 已取代(措辭修訂後全體重跑,該首原生通過)|
|
||||
| 2026-08-05 | 01-01-01-tag | run1 | claude-sonnet-4-6 | msgbatch_01VgZ77KAPGWmuu3PnQFqZ7Q | 7 分 1 秒 | 794,913 | 326,435 | $3.64 | 現行 |
|
||||
| 2026-08-05 | 01-01-01-tag | run2 | claude-sonnet-4-6 | msgbatch_01TLFey3L4fimKxcebTZQGYn | 4 分 21 秒 | 794,913 | 328,324 | $3.65 | 現行 |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-sonnet-4-6 | msgbatch_01BvYMFmH8zrUq9SNxWSNba7 | 9 分 14 秒 | 46,454 | 60,974 | $0.53 | 已取代(完整分割驗證不過:漏 366、重複分派 511、撞名 4) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-opus-5 | msgbatch_018TkYpdT3DsZqq2q94FQCUN | — | 0 | 0 | $0.00 | 拒收(temperature 已棄用) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-opus-4-8 | msgbatch_018Wuux4adz5mWSvzJjfgLxb | — | 0 | 0 | $0.00 | 拒收(temperature 已棄用) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-opus-4-6 | msgbatch_01Lmt2j1Txyof9CctUK7CbHA | 12 分 19 秒 | 46,454 | 54,864 | $0.80 | 已取代(圍欄違規;漏 190、發明 151、重複 11) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-opus-5 | msgbatch_012SEfebTnjU5uWN6hhfnhhh | 8 分 45 秒 | 63,368 | 64,000 | $1.92 | 已取代(64k 截斷) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-opus-5 | msgbatch_01Wi9xEoQKCy1nZK6myVNg77 | 11 分 34 秒 | 63,368 | 70,175 | $2.07 | 已取代(驗證不過:漏 59、發明 140、重複 3) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-fable-5 | msgbatch_01M15hUs8P9FDTqWvAHdc1cA | 32 分 45 秒 | 63,368 | 107,721 | $3.01 | 現行歸檔(JSON 語法毀損,驗證不過) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-fable-5 | msgbatch_012stRP28uuQDQwobm41HMLh | — | 0 | 0 | $0.00 | 拒收(thinking.type.enabled 不支援) |
|
||||
| 2026-08-05 | 01-02-01-merge | run1 | claude-fable-5 | msgbatch_01KpS7AMx1zAHTcNujgGsouJ | 26 分 28 秒 | 63,368 | 128,000 | $3.52 | 現行歸檔(effort max:128k 全耗於推理,正文空白) |
|
||||
| 2026-08-05 | 03-01-code | run1 | claude-sonnet-4-6 | msgbatch_01L7VepTxSNz5vruvzzjuL2c | 6 分 36 秒 | 1,247,264 | 492,730 | $5.57 | 36 首輸出遭內容過濾攔阻,待修訂重跑 |
|
||||
| 2026-08-05 | 03-01-code | 引述減量實驗(36 首)| claude-sonnet-4-6 | msgbatch_01Hskdhi2DkudYmgZhhgFts7 | 3 分 51 秒 | 56,458 | 11,074 | $0.17 | 實驗:每碼一行引述,36 首全數通過過濾;歸檔不入 repo |
|
||||
| 2026-08-05 | 03-01-code | run1 | claude-sonnet-4-6 | msgbatch_01GG5Ez9KT1pPwtQaY4sW7tv | 4 分 35 秒 | 1,293,724 | 269,166 | $3.96 | 過濾零攔阻;song-168、song-590 因餘額用盡失敗,song-775 拒答 |
|
||||
| 2026-08-05 | 03-01-code | 101 碼樹狀探測(148 首)| claude-sonnet-4-6 | msgbatch_017jo3E5gWVks9b39iWMTqz3 | 2 小時 11 分 | 385,270 | 79,690 | $0.87 | 實驗:k=100 葉碼+women-power;零違規碼; 歸檔不入 repo |
|
||||
| 2026-08-06 | 命名實驗(100 組)| — | claude-sonnet-4-6 | msgbatch_01XSi1YtWzdVyYUzYh7DQRWg | 3 分 5 秒 | 55,090 | 1,168 | $0.09 | 實驗:LLM 命名對照 medoid,未採用;歸檔不入 repo |
|
||||
| 2026-08-06 | 命名實驗(100 組)| — | claude-fable-5 | msgbatch_01Y8SJj1h1ZuSQRErhqkvgZE | 3 分 2 秒 | 76,211 | 2,049 | $0.43 | 實驗:同上,加禁用 themes;未採用;歸檔不入 repo |
|
||||
| 2026-08-06 | 03-01-code | run1 | claude-sonnet-4-6 | msgbatch_01GS1opvurvsf62oknnQxhtx | 3 分 46 秒 | 1,625,458 | 362,759 | $5.16 | 現行(101 碼;883 首全數有效,零攔阻) |
|
||||
| 2026-08-06 | 03-01-code | run2 | claude-sonnet-4-6 | msgbatch_01CxnwNLWzZbRpZK7UAdpb8i | 5 分 22 秒 | 1,625,458 | 364,098 | $5.17 | 現行(101 碼;883 首全數有效,零攔阻) |
|
||||
| 2026-08-06 | 03-02-arbitration | — | claude-sonnet-4-6 | msgbatch_019xcQXwrbwDGFc9nE5M8AjE | 4 分 0 秒 | 763,193 | 42,389 | $1.46 | 已取代(2 首遭內容過濾攔阻、13 首輸出夾帶散文;定義檔修訂後重跑) |
|
||||
| 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 筆;歸檔備份於 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 群;零違規碼) |
|
||||
| 2026-08-15 | 05-01-read | run1 | claude-fable-5 | msgbatch_018NJejke75o7kzKyjZeeKwi | 2 分 12 秒 | 189,607 | 181,299 | $5.48 | 現行(144/145 有效;song-444 平台錯誤,單筆補送) |
|
||||
| 2026-08-15 | 05-01-read | run1-rescue-444 | claude-fable-5 | msgbatch_01DgygMm6iYn2qEnyqHkTMfa | 1 分 52 秒 | 1,852 | 1,557 | $0.05 | 現行(run1 之 song-444 單筆補送,成功) |
|
||||
| 2026-08-15 | 05-01-read | run2 | claude-fable-5 | msgbatch_011txWpWDtdkNXNiPA74ZUfQ | 15 分 25 秒 | 191,459 | 185,630 | $5.60 | 現行(145/145 有效) |
|
||||
| 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-18 一律換為現行編號(見
|
||||
`decision-log.md` 當日條目),執行當時的名稱記於末欄
|
||||
「原步驟名」,未曾改名者留空。已刪除的工序——步驟 2 的
|
||||
LLM 合併嘗試(`01-02-01-merge`,詞彙表改採詞向量分群時
|
||||
放棄)與步驟 3 的仲裁(`03-02-arbitration`,改採三票
|
||||
多數決時刪除)——不另發新名,步驟欄標「已廢棄」,僅存
|
||||
本表供總支出核算。
|
||||
|
||||
| 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,零截斷) |
|
||||
| 日期 | 步驟 | 執行 | 模型 | 批次 ID | 耗時 | input | output | 費用 (USD) | 狀態 | 原步驟名 |
|
||||
|---|---|---|---|---|---|---:|---:|---:|---|---|
|
||||
| 2026-08-04 | 1-tag | run1 | claude-sonnet-4-6 | msgbatch_01PTACDQMr8M6ahnshbedjtB | 6 分 27 秒 | 763,318 | 338,661 | $3.68 | 已取代(浮水印清洗與防圍欄修訂後重跑) | 01-01-01-tag |
|
||||
| 2026-08-05 | 1-tag | run1 | claude-sonnet-4-6 | msgbatch_01TikJNd2pZVxzQ8SaybVthu | 4 分 57 秒 | 774,604 | 323,651 | $3.59 | 已取代(合法 JSON 修訂後重跑) | 01-01-01-tag |
|
||||
| 2026-08-05 | 1-tag | run1 | claude-sonnet-4-6 | msgbatch_01JFBCNqnu1cwXyqmEKLHQYF | 4 分 30 秒 | 790,370 | 328,227 | $3.65 | 已取代(song-288 平台失敗,整批重跑驗證) | 01-01-01-tag |
|
||||
| 2026-08-05 | 1-tag | run1 | claude-sonnet-4-6 | msgbatch_01VSDneWuSbf8mShA32jiWrX | 6 分 15 秒 | 790,370 | 326,193 | $3.63 | 已取代(措辭修訂後全體重跑) | 01-01-01-tag |
|
||||
| 2026-08-05 | 1-tag | run1-rescue-288 | claude-sonnet-4-6 | msgbatch_019Hq6bNVXVmp4DjRZ2cgVda | 2 分 5 秒 | 1,015 | 376 | $0.01 | 已取代(措辭修訂後全體重跑,該首原生通過)| 01-01-01-tag |
|
||||
| 2026-08-05 | 1-tag | run1 | claude-sonnet-4-6 | msgbatch_01VgZ77KAPGWmuu3PnQFqZ7Q | 7 分 1 秒 | 794,913 | 326,435 | $3.64 | 現行 | 01-01-01-tag |
|
||||
| 2026-08-05 | 1-tag | run2 | claude-sonnet-4-6 | msgbatch_01TLFey3L4fimKxcebTZQGYn | 4 分 21 秒 | 794,913 | 328,324 | $3.65 | 現行 | 01-01-01-tag |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-sonnet-4-6 | msgbatch_01BvYMFmH8zrUq9SNxWSNba7 | 9 分 14 秒 | 46,454 | 60,974 | $0.53 | 已取代(完整分割驗證不過:漏 366、重複分派 511、撞名 4) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-opus-5 | msgbatch_018TkYpdT3DsZqq2q94FQCUN | — | 0 | 0 | $0.00 | 拒收(temperature 已棄用) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-opus-4-8 | msgbatch_018Wuux4adz5mWSvzJjfgLxb | — | 0 | 0 | $0.00 | 拒收(temperature 已棄用) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-opus-4-6 | msgbatch_01Lmt2j1Txyof9CctUK7CbHA | 12 分 19 秒 | 46,454 | 54,864 | $0.80 | 已取代(圍欄違規;漏 190、發明 151、重複 11) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-opus-5 | msgbatch_012SEfebTnjU5uWN6hhfnhhh | 8 分 45 秒 | 63,368 | 64,000 | $1.92 | 已取代(64k 截斷) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-opus-5 | msgbatch_01Wi9xEoQKCy1nZK6myVNg77 | 11 分 34 秒 | 63,368 | 70,175 | $2.07 | 已取代(驗證不過:漏 59、發明 140、重複 3) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-fable-5 | msgbatch_01M15hUs8P9FDTqWvAHdc1cA | 32 分 45 秒 | 63,368 | 107,721 | $3.01 | 現行歸檔(JSON 語法毀損,驗證不過) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-fable-5 | msgbatch_012stRP28uuQDQwobm41HMLh | — | 0 | 0 | $0.00 | 拒收(thinking.type.enabled 不支援) | 01-02-01-merge |
|
||||
| 2026-08-05 | 已廢棄 | run1 | claude-fable-5 | msgbatch_01KpS7AMx1zAHTcNujgGsouJ | 26 分 28 秒 | 63,368 | 128,000 | $3.52 | 現行歸檔(effort max:128k 全耗於推理,正文空白) | 01-02-01-merge |
|
||||
| 2026-08-05 | 3a-code | run1 | claude-sonnet-4-6 | msgbatch_01L7VepTxSNz5vruvzzjuL2c | 6 分 36 秒 | 1,247,264 | 492,730 | $5.57 | 36 首輸出遭內容過濾攔阻,待修訂重跑 | 03-01-code |
|
||||
| 2026-08-05 | 3a-code | 引述減量實驗(36 首)| claude-sonnet-4-6 | msgbatch_01Hskdhi2DkudYmgZhhgFts7 | 3 分 51 秒 | 56,458 | 11,074 | $0.17 | 實驗:每碼一行引述,36 首全數通過過濾;歸檔不入 repo | 03-01-code |
|
||||
| 2026-08-05 | 3a-code | run1 | claude-sonnet-4-6 | msgbatch_01GG5Ez9KT1pPwtQaY4sW7tv | 4 分 35 秒 | 1,293,724 | 269,166 | $3.96 | 過濾零攔阻;song-168、song-590 因餘額用盡失敗,song-775 拒答 | 03-01-code |
|
||||
| 2026-08-05 | 3a-code | 101 碼樹狀探測(148 首)| claude-sonnet-4-6 | msgbatch_017jo3E5gWVks9b39iWMTqz3 | 2 小時 11 分 | 385,270 | 79,690 | $0.87 | 實驗:k=100 葉碼+women-power;零違規碼; 歸檔不入 repo | 03-01-code |
|
||||
| 2026-08-06 | 命名實驗(100 組)| — | claude-sonnet-4-6 | msgbatch_01XSi1YtWzdVyYUzYh7DQRWg | 3 分 5 秒 | 55,090 | 1,168 | $0.09 | 實驗:LLM 命名對照 medoid,未採用;歸檔不入 repo | |
|
||||
| 2026-08-06 | 命名實驗(100 組)| — | claude-fable-5 | msgbatch_01Y8SJj1h1ZuSQRErhqkvgZE | 3 分 2 秒 | 76,211 | 2,049 | $0.43 | 實驗:同上,加禁用 themes;未採用;歸檔不入 repo | |
|
||||
| 2026-08-06 | 3a-code | run1 | claude-sonnet-4-6 | msgbatch_01GS1opvurvsf62oknnQxhtx | 3 分 46 秒 | 1,625,458 | 362,759 | $5.16 | 現行(101 碼;883 首全數有效,零攔阻) | 03-01-code |
|
||||
| 2026-08-06 | 3a-code | run2 | claude-sonnet-4-6 | msgbatch_01CxnwNLWzZbRpZK7UAdpb8i | 5 分 22 秒 | 1,625,458 | 364,098 | $5.17 | 現行(101 碼;883 首全數有效,零攔阻) | 03-01-code |
|
||||
| 2026-08-06 | 已廢棄 | — | claude-sonnet-4-6 | msgbatch_019xcQXwrbwDGFc9nE5M8AjE | 4 分 0 秒 | 763,193 | 42,389 | $1.46 | 已取代(2 首遭內容過濾攔阻、13 首輸出夾帶散文;定義檔修訂後重跑) | 03-02-arbitration |
|
||||
| 2026-08-06 | 已廢棄 | — | claude-sonnet-4-6 | msgbatch_01N7bDbXRSfAVUzzaj2thKeR | 4 分 20 秒 | 781,037 | 39,315 | $1.47 | 現行(644 首全數有效,零攔阻;保留 1,481/送裁 1,699) | 03-02-arbitration |
|
||||
| 2026-08-06 | 3a-code | run3 | claude-sonnet-4-6 | msgbatch_01KnkCaGETnFJrPddrxZTYHA | 6 分 26 秒 | 1,625,458 | 363,840 | $5.17 | 現行(101 碼;883 首全數有效,零攔阻) | 03-code |
|
||||
| 2026-08-14 | 4-group | run1 | claude-sonnet-4-6 | msgbatch_01UPNedog6feQzJ9WVfSAxBD | 1 分 1 秒 | 3,129 | 470 | $0.01 | 已取代(僅 3 群;改納 women-power 群後重跑) | 04-group |
|
||||
| 2026-08-14 | 4-group | run1 | claude-sonnet-4-6 | msgbatch_01KntJgxdicStaMjNL12P3zi | 1 分 25 秒 | 4,170 | 558 | $0.01 | 已取代(改以 claude-fable-5 執行;vulnerable 輸出含詞彙表外碼 1 筆;歸檔另行私人備份,不入版本庫) | 04-group |
|
||||
| 2026-08-14 | 4-group | run1 | claude-fable-5 | msgbatch_01Mr6goBb2Efa4YrqCprbP4U | 55 秒 | 5,553 | 2,049 | $0.08 | 現行(4 群;零違規碼;temperature 與 thinking 參數不適用於本模型,未送出) | 04-group |
|
||||
| 2026-08-14 | 4-group | run2 | claude-fable-5 | msgbatch_01C17xW3YBefThTYZ83g7KkL | 1 分 21 秒 | 5,553 | 1,891 | $0.08 | 現行(4 群;零違規碼) | 04-group |
|
||||
| 2026-08-14 | 4-group | run3 | claude-fable-5 | msgbatch_01DveEMYyjCAYe6wxpcCD87V | 2 分 9 秒 | 5,553 | 1,975 | $0.08 | 現行(4 群;零違規碼) | 04-group |
|
||||
| 2026-08-15 | 5a-read | run1 | claude-fable-5 | msgbatch_018NJejke75o7kzKyjZeeKwi | 2 分 12 秒 | 189,607 | 181,299 | $5.48 | 現行(144/145 有效;song-444 平台錯誤,單筆補送) | 05-01-read |
|
||||
| 2026-08-15 | 5a-read | run1-rescue-444 | claude-fable-5 | msgbatch_01DgygMm6iYn2qEnyqHkTMfa | 1 分 52 秒 | 1,852 | 1,557 | $0.05 | 現行(run1 之 song-444 單筆補送,成功) | 05-01-read |
|
||||
| 2026-08-15 | 5a-read | run2 | claude-fable-5 | msgbatch_011txWpWDtdkNXNiPA74ZUfQ | 15 分 25 秒 | 191,459 | 185,630 | $5.60 | 現行(145/145 有效) | 05-01-read |
|
||||
| 2026-08-15 | 5a-read | run3 | claude-fable-5 | msgbatch_01Unn7C7WCnuVoLraJRXksoG | 7 分 59 秒 | 191,459 | 190,433 | $5.72 | 現行(145/145 有效) | 05-01-read |
|
||||
| 2026-08-15 | 5b-consolidate | run1 | claude-fable-5 | msgbatch_01WPyH4pCCiieHs4yU3xtHzN | 2 分 28 秒 | 326,287 | 242,785 | $7.70 | 現行(145/145 有效) | 05-02-consolidate |
|
||||
| 2026-08-15 | 5c-synthesize | run1 | claude-fable-5 | msgbatch_01XbNQb1SFrUxhk2ZWF7epPA | 3 分 0 秒 | 103,888 | 9,982 | $0.77 | 現行(15 個樣態;研究者審定用草稿) | 05-03-synthesize |
|
||||
| 2026-08-15 | 5c-synthesize | run2 | claude-fable-5 | msgbatch_01FKqq8U6m5HLLsx7KpQES26 | 3 分 4 秒 | 13,573 | 6,883 | $0.24 | 現行(男聲群 14 首;13 個樣態) | 05-03-synthesize |
|
||||
| 2026-08-15 | 5c-synthesize | run3 | claude-fable-5 | msgbatch_017tfhiRTnaxqCp6YFyoivsu | 4 分 4 秒 | 60,727 | 8,519 | $0.52 | 現行(女聲群 98 首;14 個樣態) | 05-03-synthesize |
|
||||
| 2026-08-15 | 5c-synthesize | run4 | claude-fable-5 | msgbatch_01SNjTLiNPEba4LW2tcUAcTJ | 4 分 3 秒 | 29,958 | 9,793 | $0.39 | 現行(混合群 30 首;16 個樣態) | 05-03-synthesize |
|
||||
| 2026-08-15 | 5d-annotate | run1 | claude-fable-5 | msgbatch_01H9gXXhNbhZG6gzZtvMHxhh | 3 分 9 秒 | 815,492 | 300,901 | $11.60 | 現行(109/111 有效;song-177、song-199 遭 max_tokens 截斷,單筆補送) | 05-04-annotate |
|
||||
| 2026-08-15 | 5d-annotate | run1-rescue-177-199 | claude-fable-5 | msgbatch_01YEdroZ51b8btPfG1aqPFCD | 3 分 5 秒 | 17,802 | 11,601 | $0.38 | 現行(run1 之 2 筆補送,max_tokens 提為 16000,成功) | 05-04-annotate |
|
||||
| 2026-08-15 | 5d-annotate | — | claude-fable-5 | msgbatch_01G67STqZsHpnhedat2HRU85 | 3 分 0 秒 | 17,802 | 14,162 | $0.44 | 誤送(補送批次輪詢中斷後誤判死亡而重送;原批次自行完成並歸檔為現行,本批次取消不及、兩筆皆完成,結果棄用) | 05-04-annotate |
|
||||
| 2026-08-15 | 5d-annotate | run2 | claude-fable-5 | msgbatch_01VVJpsfidNtF66GnHQdWnGR | 9 分 16 秒 | 815,492 | 306,582 | $11.74 | 現行(111/111 有效;max_tokens 16000,零截斷) | 05-04-annotate |
|
||||
| 2026-08-15 | 5d-annotate | run3 | claude-fable-5 | msgbatch_01AsYvZd8rsTYVfUYLzWfeMK | 4 分 12 秒 | 815,492 | 298,512 | $11.54 | 現行(111/111 有效;max_tokens 16000,零截斷) | 05-04-annotate |
|
||||
|
||||
累計支出:$125.65。
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# 流行音樂中「女性力量」語彙的挪用與污染——以 Billboard Year-End Hot 100(2016-2025)為例的內容分析
|
||||
|
||||
以美國市場為主的西洋流行音樂樂壇,一直是不同主流與另類文化實驗競爭的場域:傳統與創新,保守與進步。研究者在西洋流行音樂中,發現「女性力量」的語彙在歌曲中被挪用,融入父權框架中。為瞭解在西洋流行音樂中,「女性力量」語彙挪用與污染的樣態,本研究取2016-2025十年間的告示牌年終排行榜,共1,000個榜單位置,整理出883首不重複的歌曲,469位不同的表演者。使用人工智慧大型語言模型(AI LLM,Artificial 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) 內容分析
|
||||
@@ -1,309 +0,0 @@
|
||||
# 流行音樂中「女性力量」語彙的挪用與污染
|
||||
|
||||
## ── 以 Billboard Year-End Hot 100(2018–2025)為例的內容分析
|
||||
|
||||
**投稿類別**:研究論文/口頭報告
|
||||
**關鍵字**:女性主義內容分析、流行音樂、empowerment、商品化、AI 文本分析、語言挪用
|
||||
|
||||
---
|
||||
|
||||
## 摘要
|
||||
|
||||
本研究以 2018–2025 年 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(年度終榜),2018–2025 年
|
||||
- **總數**:684 首歌(含跨年榜重複的歌曲算一筆)
|
||||
- **歌詞抓取**:Lyrics.ovh、LRCLIB API
|
||||
- **元資料**:演唱者性別(男 / 女 / 混合團體)、年份、排名、合作署名
|
||||
|
||||
### 2.2 主題標籤抽取流程
|
||||
|
||||
採用四步驟混合式 AI pipeline:
|
||||
|
||||
1. **逐首抽取主題關鍵字**(5–10 個 / 首,由 LLM agent 完成)
|
||||
2. **同義詞合併**(1982 個原始關鍵字 → 718 個 canonical)
|
||||
3. **主題分群**(718 個 canonical → 33 個 thematic element bucket)
|
||||
4. **三角驗證 tagging**:
|
||||
- **由下而上路徑**(bottom-up):透過第 1–3 步歸納
|
||||
- **由上而下路徑**(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% |
|
||||
| Peripheral(pro-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 首假歌曲,其標籤來源分布:
|
||||
|
||||
| 標籤來源 | 數量 |
|
||||
|---|---:|
|
||||
| **由下而上 + 由上而下兩條路徑都同意**(直接進入 agreed,judge 看不到) | **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. **跨文化遷移**:本研究的「假女性力量」類型主要出自美國黑人女
|
||||
饒舌歌手脈絡,其結構與台灣/華語流行音樂中的相應現象有何異同,
|
||||
是後續研究的重要方向。
|
||||
|
||||
## 七、結論
|
||||
|
||||
主流商業流行音樂中的「女性力量」標籤已被市場語彙化到與女性主義原
|
||||
初內涵嚴重脫鉤的程度。在 2018–2025 年 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 schema(v1):`theme_extraction/v1_schema.json`
|
||||
- v1.1 修正後全量重跑統計:`theme_extraction/v1_1_summary.json`
|
||||
|
||||
## 投稿資訊(待確認)
|
||||
|
||||
- **目標研討會**:女學會年會
|
||||
- **論文長度**:(依會議要求調整,本檔約 3,400 字,可作為 extended
|
||||
abstract 或論文初稿大綱)
|
||||
- **作者**:(待補)
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
# Authors:
|
||||
# imacat@mail.imacat.idv.tw (imacat), 2026/7/31
|
||||
|
||||
# The SQLAlchemy database URL.
|
||||
SQLALCHEMY_DATABASE_URL="postgresql://user:password@host/db"
|
||||
# The SQLAlchemy database URI.
|
||||
SQLALCHEMY_DATABASE_URI="postgresql://user:password@host/db"
|
||||
# The Anthropic API key
|
||||
ANTHROPIC_API_KEY=sk-ant-...
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
Change Log
|
||||
==========
|
||||
|
||||
|
||||
version 1.0.0
|
||||
-------------
|
||||
|
||||
Released 2026/8/19
|
||||
|
||||
Initial release.
|
||||
@@ -13,6 +13,8 @@ This is a collection of supporting tools for the conference paper "流行音樂
|
||||
:maxdepth: 2
|
||||
:caption: Contents:
|
||||
|
||||
changelog
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
"""Tools for A Feminist Audit of Pop Music."""
|
||||
|
||||
|
||||
VERSION: str = "0.0.0"
|
||||
VERSION: str = "1.0.0"
|
||||
"""The package version."""
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -24,8 +24,7 @@ keyword set for ``export-llm-input --extras`` is written as a JSON
|
||||
file holding the group name keywords plus every extra a-priori
|
||||
keyword the caller gives with the repeatable ``--extra-keyword``
|
||||
command-line option, as
|
||||
:attr:`KeywordsToMerge.KEYWORDS_TO_MERGE_JSON`; with no
|
||||
``--extra-keyword``, it holds the group names alone. No default
|
||||
:attr:`KeywordsToMerge.KEYWORDS_TO_MERGE_JSON`. No default
|
||||
extra keyword is ever injected; the caller supplies each one
|
||||
consciously. Finally, the command-line choices and the
|
||||
environment that produced the numbers -- neither recoverable from
|
||||
@@ -160,15 +159,8 @@ class KeywordPooler:
|
||||
if line.strip() == "":
|
||||
continue
|
||||
record: Any = json.loads(line)
|
||||
if not isinstance(record, dict) or "id" not in record:
|
||||
raise ValueError(
|
||||
f"{path}: record without \"id\": {line}")
|
||||
if "error" in record:
|
||||
continue
|
||||
if "text" not in record:
|
||||
raise ValueError(
|
||||
f"{path}: id {record['id']}: record without"
|
||||
" \"text\" or \"error\"")
|
||||
song_id: int = cls.__parse_song_id(record["id"], path)
|
||||
try:
|
||||
keywords: Any = json.loads(
|
||||
@@ -297,7 +289,8 @@ class KeywordGroups:
|
||||
class KeywordClusterer:
|
||||
"""The clusterer of the pooled keywords into coding groups."""
|
||||
|
||||
DEFAULT_MODEL: str = "sentence-transformers/all-mpnet-base-v2"
|
||||
DEFAULT_MODEL: ClassVar[str] \
|
||||
= "sentence-transformers/all-mpnet-base-v2"
|
||||
"""The sentence embedding model used when the caller names
|
||||
none."""
|
||||
|
||||
@@ -668,11 +661,7 @@ def parse_args(argv: list[str] | None) -> argparse.Namespace:
|
||||
parser.add_argument(
|
||||
"output_dir", type=Path,
|
||||
help="the output directory, created if missing, that"
|
||||
f" receives {PooledKeywords.SOURCE_KEYWORDS_TXT},"
|
||||
f" {KeywordGroups.RESULT_KEYWORDS_TXT},"
|
||||
f" {KeywordGroups.RESULT_GROUPS_CSV},"
|
||||
f" {KeywordsToMerge.KEYWORDS_TO_MERGE_JSON},"
|
||||
f" and {RunMeta.META_JSON}")
|
||||
" receives the run's output artifacts")
|
||||
parser.add_argument(
|
||||
"--model", default=model,
|
||||
help=f"the sentence embedding model (default \"{model}\")")
|
||||
@@ -698,16 +687,9 @@ def parse_args(argv: list[str] | None) -> argparse.Namespace:
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
"""Pool the two tagging runs' keywords and cluster them.
|
||||
|
||||
Writes the five fixed-named artifacts under the output
|
||||
directory, creating it (with parents) if it does not exist:
|
||||
the pooled keyword text file; then the group membership CSV
|
||||
file, holding the clustering result alone; the group name
|
||||
keyword text file, holding the same group names as a readable
|
||||
list; the coding keyword set JSON file, holding the group
|
||||
names plus every extra keyword given via ``--extra-keyword``;
|
||||
and the run metadata JSON file, recording the command-line
|
||||
choices and the environment. Each file is written as soon as
|
||||
its content is computed, so when the input is rejected, or an
|
||||
Creates the output directory (with parents) if it does not
|
||||
exist. Each output artifact is written as soon as its
|
||||
content is computed, so when the input is rejected, or an
|
||||
extra keyword duplicates a group name or another extra
|
||||
keyword, the output directory holds whatever the steps before
|
||||
the failing one produced, and the error message names what
|
||||
@@ -719,8 +701,8 @@ def main(argv: list[str] | None = None) -> int:
|
||||
"""
|
||||
started: float = time.monotonic()
|
||||
args: argparse.Namespace = parse_args(argv)
|
||||
args.output_dir.mkdir(parents=True, exist_ok=True)
|
||||
try:
|
||||
args.output_dir.mkdir(parents=True, exist_ok=True)
|
||||
source: PooledKeywords = KeywordPooler(
|
||||
args.run_dir_1, args.run_dir_2, args.output_dir).run()
|
||||
clusters: KeywordGroups = KeywordClusterer(
|
||||
@@ -735,7 +717,7 @@ def main(argv: list[str] | None = None) -> int:
|
||||
f"Done. Clustered {len(source.keywords)} keywords into"
|
||||
f" {len(clusters.names)}. {elapsed} elapsed.",
|
||||
file=sys.stderr)
|
||||
except ClusterError as error:
|
||||
except (ClusterError, OSError) as error:
|
||||
print(f"error: {error}", file=sys.stderr)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user