Skip to content

Should Parser.suggest read AM Hoy as initials and a surname? A given-first byline list (AM Hoy, GH Yoon) is suggested FAMILY_FIRST #1355

Open

Description

@derek73

The suggester's capitals signal reads a word written wholly in capitals, in a mixed-case name, as the family name. In a byline written initials first, the capitals word is the initials (AM for a given and a middle name), so each such name votes family-first, and a list of them is turned the wrong way. decisions/group-suggestion lists this under Open: "with no issue yet"; that line should be given this issue's link.

Measured on master 670b349, 2026-11-12:

>>> Parser().suggest(["AM Hoy", "JK Larsen", "RP Huntley", "MT Okafor", "GH Yoon", "SL Perrin"])
  name_order  FAMILY_FIRST  5 for, 0 against, 1 contested, 0 no evidence
      capitals FAMILY_FIRST  6
      surname GIVEN_FIRST  1
List (six names) Suggested order Votes The suggested parser reads AM Hoy
AM Hoy, JK Larsen, … FAMILY_FIRST capitals 6 (family-first), surname 1 (given-first) given Hoy, family AM
A M Hoy, J K Larsen, … unchanged (given-first) surname 1 given A, middle M, family Hoy
A.M. Hoy, J.K. Larsen, … unchanged (given-first) surname 1 given A., middle M., family Hoy

Only the bare joined capitals are affected. The base parser reads AM Hoy as given AM, family Hoy, which has the family right; the suggestion makes it wrong.

How often: uv run python tools/differential/suggest_measure.py --wrong-words 12 (2026-11-12, 300 trials a cell, seed 20261110). Its orcid-byline population is 2,215 ORCID credit names written as a byline, the holder's own boxes confirming which word is the family. Share of groups suggested right, at 2 / 3 / 4 / 5 / 10 / 20 / 50 / 200 names:

written base 2 3 4 5 10 20 50 200
given-first given-first (the anti-goal row) 96% 85% 76% 67% 27% 9% 0% 0%
given-first family-first 0% 0% 0% 0% 0% 0% 0% 0%
family-first given-first 0% 35% 68% 84% 83% 91% 98% 100%
family-first family-first 100% 100% 100% 100% 100% 100% 100% 100%

Every other population's same-order rows stay at 95% or more at every size; this is the one row the anti-goal fails, and decisions/group-suggestion's 2026-11-11 TRAILING INITIAL entry records that it failed the same way before PR #1345's gate.

Per name, written given-first: 42 names vote right, 535 wrong, 44 contested, 1,594 cast no vote. By signal: capitals 0 right, 566 wrong; surname 82 right, 73 wrong; given-name 4 right, 9 wrong.

What the capitals words are. Of the population's 2,215 names, the given part is written as one word of two or three bare capitals in 644 (AM), one letter in 954, a joined dotted run in 408 (A.M.), spaced letters in 202, other in 7. The capitals signal's wrong votes are the 644 group. The commonest words in a wrong capitals vote are pairs of initials: MA 30, JM 13, MM 10, MC 8, AA 7, AP 7. Some also spell a romanized surname, so the surname signal votes wrong on the same word (MA 30, MI 5, NA 5).

Why it is not simply dropped. The same shape, a two- or three-letter capitals word, is a real surname in lists that write the family in capitals: Zhi LI, Jason NG, Ali KAYA. A 2026-11-11 working note (scripts outside the repository, a dated snapshot) measured the two together: counting bare capitals as initials read byline lists 95–100% right but made 34–76% of Zhi LI-style groups worse.

#659 and how it interacts. #659's last comment (decided 2026-11-11) makes family-in-capitals an opt-in Policy switch, which the suggester turns on "for a list that writes its families in capitals consistently", with capitals words of two or three letters counting as the family under the switch and staying "out of the suggester's evidence, as today". Two things follow:

Options:

  • (A) A capitals word of two or three letters casts no order vote.
    • When: the only capitals word of a mixed-case name is two or three letters with no full stop.
    • Then: the capitals signal does not vote on that name; the other signals still do.
    • Because: the shape is a pair of initials or a short surname, and nothing in the word says which.
    • Accepted: a list of short capitals surnames (Zhi LI, Wei WU) loses its capitals votes and is decided by the surname table or not at all. suggest_measure.py would show the cost on PatentsView's and PSC's Chinese, Korean and Vietnamese rows.
  • (B) Position decides the short word. A two- or three-letter capitals word opening a name whose other word is mixed case is initials (no vote, or a given-first vote); ending it, it is a surname as today. This reads AM Hoy right and keeps Zhi LI; it gives up LI Zhi, which the surname table still votes on.
  • (C) Ask the group. The short word votes only where the list also holds a longer capitals word in the same position (Jean DUPONT beside Zhi LI), i.e. where the list shows the family-in-capitals convention independently.
  • (D) Leave it, documented as it is in Parser.suggest's docstring and docs/suggest.rst, and tell callers with byline lists to set the order themselves.

Open:

  1. Which option, and should it be measured with --set-style variants on a scratch tree first, as Gate the suggester's trailing-initial vote on the group's share; fix a title-only name's crash #1345's gate was?
  2. Does Should an ALL-CAPS word in a mixed-case name mark the family name? DUPONT Jean gives given DUPONT #659's item 7 mean two- and three-letter words cast no order vote? Today they do.
  3. Should the surname table's two-letter entries (MA, MI, NA) vote on a word written in capitals that could be initials?
  4. If the row cannot be brought to 95%, does the anti-goal's exception stay recorded as now?

🤖 Generated with Claude Code

Activity

  1. self-assigned this
    on Nov 12, 2026
  2. added
    name-orderName order, family-first and two family names (rules/O)
    initialsReading initials and the initials() view (rules/T)
    on Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

initialsReading initials and the initials() view (rules/T)name-orderName order, family-first and two family names (rules/O)

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions