Commit d33e018
committed
Emit a Contact header for footer contact blocks: rField 0.741 -> 0.753
Ranking every field by score (calibration/worst_fields.py) put Contact
sections at the very bottom of the corpus: 4448680 0.099, gasimova 0.280,
10890106 0.282. All the same miss, diagnosed last session: a contact block
carries an email/phone/URL, so the font-size header heuristic refuses to
promote it (its `not _is_contact` guard is exactly what a contact block
trips), it lands in the body with no "## Contact" header, and a small
ground-truth Contact section then scores against a large body chunk.
Emit the header ourselves. A block in the bottom of the page (below
0.55*page_h, so a corresponding-author email in the top byline is left
alone) carrying an email, a phone number, or a "Contact:"/"Correspondence:"
label opens a "## Contact" section. Gated on email/phone/label rather than a
bare URL so a references or links block (URLs and DOIs, no email) is not
mislabeled. One header per page: if the poster already printed its own
contact heading (caught by the section-keyword rule, sometimes with a name
line between it and the details), the details are appended as body so they
join that section instead of splitting off under a duplicate -- which is
what an intermediate version did to 4519718 (1.000 -> 0.867, now back to
1.000).
Result: Contact fields 4448680 0.099 -> 0.968, 10890106 0.282 -> 1.000,
gasimova 0.280 -> 0.793, plus small collateral gains on adjacent sections
that had been absorbing the contact text. Nine fields changed, every one an
improvement, zero regressions. Corpus rField 0.741 -> 0.753, w 0.976 ->
0.977, rGlobal unchanged, 20/21 acceptable and 13/13 logic-OK held, suite
green (260 passed), lookup keys (author/affiliation) unchanged.
Adds worst_fields.py, which ranks fields by score to find rField leverage;
it puts the current ceiling at 0.840 if every field reached 0.70.1 parent 8a8c95a commit d33e018
3 files changed
Lines changed: 1346 additions & 0 deletions
0 commit comments