Add results from Claude eval of variants - #11
Conversation
Update — end-to-end pipeline, and an adjudication tool that reviews the end of itStage 3 — LLM evidence, replacing string matchingThe old app picked quotes by first occurrence in the document: Stage 4 — normalization, and the answer to "does verbatim drift matter?"
The headline result: running all four effort cells through normalization and re-applying the
Normalization removes 55% of cross-cell disagreements (65% on the 3,047 instances where every Per-field collapse: The deterministic layer was most of the win, and it belongs in the mapSeed coverage went 27% → 67% on two observations, neither of which needed a model:
These wins currently live in The review app now judges the end of the pipeline
Normalized value is the judged value where a vocabulary applies, with verbatim and the evidence Supporting: |
Next steps1. Adjudicate 12 papers (~1.4 h). 2. Spot-read 10 evidence sentences (10 min). 81.9% 3. Fix the nuisance-regressor prompt. The biggest expressivity gap — 28 of 60 papers — is 4. Move the deterministic mappings into the map and decide on the six proposed targets. 5. Then the vocabulary additions the unmapped list is asking for — Gaps worth naming
|
Don't necessarily need to commit all this.
These are Claude's results of evaluating the various variations of extraction pipelines — stages 2
and 3 against
neuroimaging-study-extraction.yaml, on 20 PMC OA papers + 40 neurometabench paperswith NiMADS gold. ~1,400 calls, $8.86, all
gpt-5.6-luna.Details:
RESULTS.md·EXPRESSIVITY-GAPS.md·EVAL-PLAN.md(accuracy eval, not yet run).Recommendation
linkedmode, evidence excluded from the schema pass, low reasoning on both passes(provisional — see caveat). $0.0084/paper for stages 2–3, ~$0.015 for all four.
Why that shape — six variants, 60 papers each
analysesat all, withfinish_reason: stop— not truncation. It's 12th of 14 inStudy, behind 31-fieldGroup.Reordering helps (19%→5%) but creates 97 dangling
local_idrefs.is load-bearing; treat a stage-1 regression as a stage-2 outage.
recall 94→98%, invented fields 21→0, fill 45→48%, cost $0.0110→$0.0084. Evidence is 57% of
output tokens; only 24% of emitted tokens are content.
Reasoning effort changed nothing measurable, but that isn't the same as no effect. 2×2 on
effort, 60 papers/cell: priority-0 fill was 48% in all four; recall 98→100%, dangling refs
4/60→2/60, at 1.7–2.3× cost. Fill rate is coverage, not correctness — better values at the same
fill rate would be invisible here. Deciding this needs the human field ratings, and the
adjudication app already shows all four cells per field, so that comparison comes free with the
review. Low effort is a cost-based default for now, not a result.
Constrained decoding is impossible as written. Strict mode caps
$refnesting at 5; thisschema hits 13, and
ExtractedValue → Evidence → EvidenceSet → EvidenceSpanis 6 on its own. Sojson_object+ post-hoc validation. If we want constrained decoding, the evidence wrapper has tomove.
Schema findings
83% of papers (50/60) hit something the schema couldn't hold — mined free from the schema's own
model_representation_notes. But 10 of 15 gaps are guidance problems, where the field existsand wasn't used (all verified present in the YAML):
Analysis.termswithrole: nuisance.Biggest gap, pure prompt fix.
ModelEstimation.hrf_model· filtering/autocorrelation — 10 →ModelEstimation.model_settingsReal gaps: structured factorial design and factor scope — 9 papers (no
field encodes a factor's within/between scope, levels, crossing); then masking (4), connectivity
lag settings (2), bootstrap metadata (1), DCM architecture (1).
14% of filled values are
value_source: generated—Term.type,Term.role,Term.variation_level,Condition.condition_kind,Assessment.assessment_type,Group.species.These cannot be verbatim; no paper says "variation_level is within_subject." Worth saying so in
the field descriptions, since evidence spans can never validate them. Separately,
Analysis.mediation_pathis the only one of 128 fields never filled — scope is good, the problemis distortion.
Not established
build_field_review.pybuilds the adjudication app: 3,650 priority-0 fields, 1,871 withcross-cell disagreement, ~6 h of review.
linkedrecall is partly true by construction(stage 1's names are the input). The valid comparison is between linked arms.
gpt-5-mini, not luna.