Add the natural-coding definition files with single-pass convergence

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 23:23:25 +08:00
co-authored by Claude Fable 5
parent aa65f6a3b3
commit cbc91047b5
12 changed files with 393 additions and 29 deletions
+23
View File
@@ -0,0 +1,23 @@
You are annotating song lyrics for a content-analysis corpus.
Input: the complete lyrics of one song.
Task: list the thematic keywords of this song — short labels
naming the themes the lyrics express, chosen by your own
reading of the lyrics.
Rules:
- Give between 5 and 10 thematic keywords.
- Each keyword is a short lowercase phrase with the words
joined by hyphens.
- For each keyword, quote 1 to 3 verbatim lines of the lyrics
that ground it; do not give a keyword you cannot ground.
Output a single JSON object mapping each keyword to its list
of quotes, and nothing else:
{
"first-keyword": ["quoted line", "another quoted line"],
"second-keyword": ["quoted line"]
}
+26
View File
@@ -0,0 +1,26 @@
You are consolidating a vocabulary of thematic keywords that
were independently annotated on the songs of a corpus.
Input: a JSON array of thematic keywords, deduplicated and
unordered.
Task: merge keywords that express the same or nearly the same
theme, by your own understanding of what the keywords mean.
Rules:
- Every input keyword must appear in exactly one group.
- Do not invent keywords that are not in the input.
- Merge only what you consider the same theme; a group may be
a single keyword.
- Name each group with a short lowercase phrase, words joined
by hyphens, that best names the theme it gathers. Group
names must be unique.
Output a single JSON object mapping each group name to the
list of its member keywords, and nothing else:
{
"first-group-name": ["member-keyword", "another-member"],
"second-group-name": ["member-keyword"]
}
+29
View File
@@ -0,0 +1,29 @@
You are consolidating a vocabulary of thematic keywords
from a song corpus further, to a fixed maximum number of
themes.
Input: a JSON array of thematic keywords, deduplicated and
unordered.
Task: merge keywords that express the same or a similar
theme, by your own understanding of what the keywords mean,
until at most 50 groups remain.
Rules:
- Every input keyword must appear in exactly one group.
- Do not invent keywords that are not in the input.
- Merge the keywords that are closest in meaning first; keep
clearly distinct themes apart as far as the limit allows.
A group may be a single keyword.
- Name each group with a short lowercase phrase, words joined
by hyphens, that best names the theme it gathers. Group
names must be unique.
Output a single JSON object mapping each group name to the
list of its member keywords, and nothing else:
{
"first-group-name": ["member-keyword", "another-member"],
"second-group-name": ["member-keyword"]
}
+31
View File
@@ -0,0 +1,31 @@
You are coding song lyrics against a fixed vocabulary of
thematic keywords.
Vocabulary — the complete set of codes; use these and no
others:
(TO BE INSERTED VERBATIM WHEN THE VOCABULARY IS FINALIZED —
this file must not be used in a run before then.)
Input: the complete lyrics of one song.
Task: list every vocabulary keyword whose theme this song
expresses, by your own reading of the lyrics.
Rules:
- Use only keywords from the vocabulary, spelled exactly as
given.
- A song may match any number of keywords, including none.
- For each keyword you assign, quote 1 to 3 verbatim lines of
the lyrics that ground it; do not assign a keyword you
cannot ground.
Output a single JSON object mapping each assigned keyword to
its list of quotes (an empty object when no keyword applies),
and nothing else:
{
"first-keyword": ["quoted line", "another quoted line"],
"second-keyword": ["quoted line"]
}
+39
View File
@@ -0,0 +1,39 @@
You are arbitrating between two independent codings of the
same song against the same fixed vocabulary of thematic
keywords.
The keywords the two codings agree on have been settled by
script and are not shown. You rule only on the
disagreements: the keywords assigned by one coding but not
the other.
Input: a JSON object with the lyrics of the song and the
disagreements — each disagreement maps a keyword to the lyric
quotes the assigning coding gave as evidence:
{
"lyrics": "...",
"disagreements": {
"first-keyword": ["quoted line", "another quoted line"],
"second-keyword": ["quoted line"]
}
}
Task: for each disagreement keyword, decide whether the song
expresses that theme, by your own reading of the lyrics and
of the quoted evidence.
Rules:
- Rule on every listed keyword: keep it or drop it.
- Keep a keyword only when you can ground it in verbatim
lines of the lyrics; quote them.
- Do not add any keyword that is not listed.
Output a single JSON object mapping each kept keyword to your
list of quotes, and nothing else. A dropped keyword is simply
left out; output an empty object when nothing is kept:
{
"kept-keyword": ["quoted line", "another quoted line"]
}
+19
View File
@@ -0,0 +1,19 @@
You are screening song lyrics for one specific theme.
Input: the complete lyrics of one song.
Task: judge whether this song expresses the theme
"women-power", by your own understanding of
that label.
Rules:
- If the song expresses the theme, quote 1 to 3 verbatim
lines of the lyrics that ground the judgment; if you cannot
ground it in a quote, the answer is no.
Output a single JSON array and nothing else: the quoted
lines when the song expresses the theme, or an empty array
when it does not:
["quoted line", "another quoted line"]
+28
View File
@@ -0,0 +1,28 @@
You are arbitrating a screening of song lyrics for one
specific theme: two independent screenings of the same song
disagreed on whether it expresses the theme
"women-power".
Input: a JSON object with the lyrics of the song and the
lyric quotes that the affirming screening gave as evidence:
{
"lyrics": "...",
"evidence": ["quoted line", "another quoted line"]
}
Task: decide whether the song expresses the theme, by your
own understanding of the label, reading the lyrics and the
quoted evidence.
Rules:
- If the song expresses the theme, quote 1 to 3 verbatim
lines of the lyrics that ground the judgment; if you cannot
ground it in a quote, the answer is no.
Output a single JSON array and nothing else: the quoted
lines when the song expresses the theme, or an empty array
when it does not:
["quoted line", "another quoted line"]