Skip to content

Should the group suggester read common surnames outside East Asia? (Smith John, Jones David, Brown James gets no suggestion in either order) #1364

Open

Description

@derek73

Parser.suggest reads a surname only from its romanized Chinese, Korean and Vietnamese table (ROMANIZED_SURNAMES in nameparser/config/_order_names.py, 341 entries). Every other list is decided by the given-name table, or not at all. decisions/group-suggestion's 2026-11-10 TABLES entry marks the surname lists "proposed, for review" for the first version, and its DECLINED entry does not decline a wider surname table; it was not considered.

Measured on master 2b39f23, 2026-11-12, Parser().suggest(...):

List, written family first Suggested Votes
Smith John, Jones David, Brown James, Taylor Robert, Clark Thomas, Wilson Paul nothing no evidence
García López Ana, Martínez Ruiz José, Fernández Díaz Luis FAMILY_FIRST 3 for
Müller Hans, Schmidt Anna, Schneider Peter, Fischer Julia FAMILY_FIRST 4 for
Rossi Marco, Russo Giulia, Ferrari Luca, Esposito Sara FAMILY_FIRST 3 for, 1 no evidence

The Spanish, German and Italian lists are decided by their given names. The English list is not: its given names are also surnames, so the given-name table's family-share filter drops them (#1357), and no table knows Smith. Written given first, the same English list also gets no evidence, so a FAMILY_FIRST base would not be corrected either.

What a surname table would add. A vote from the other end of the name: a common surname at one end and not at the other says the family name is written there. It reaches the lists #1357 describes without loosening the given-name filter, and it would decide short lists sooner. decisions/group-suggestion's table (2026-11-11) has a family-first Spanish list read right in 27% of groups of two and 84% of groups of five, all from given names.

The obvious recipe does not work as it stands. The given-name table keeps a name ORCID holders wrote in the family box at most 5% of the time. The mirror, a family word written in the given box at most 5% of the time, measured over orcid-researchers/raw.jsonl (1,831,533 records, words folded with _suggest.fold, at least 100 family-box uses):

  • 1,776 family words reach 100 uses; 578 have a given share of 5% or less; 565 of those are new to both tables.
  • The 25 commonest kept are all Spanish: rodriguez, gonzalez, garcia, lopez, perez, martinez, hernandez, sanchez, …
word family box given box given share kept at 5%
garcia 6,818 305 4.3% yes
lopez 6,016 272 4.3% yes
fernandez 3,108 123 3.8% yes
brown 396 28 6.6% no
rossi 199 22 10.0% no
silva 5,281 628 10.6% no
smith 715 92 11.4% no
santos 3,358 453 11.9% no
jones 364 69 15.9% no
khan 2,607 552 17.5% no
taylor 319 115 26.5% no
singh 1,304 494 27.5% no
martin 1,048 4,311 80.4% no
thomas 546 2,918 84.2% no

Two things show in it. ORCID's sample holds about ten times as many Garcia records as Smith, so a use floor favours Spanish. And a given share of 11% for Smith is not people named Smith: it is bylines and swapped boxes (Smith J), which the filter cannot tell from a real given name. The filter does its job on martin, thomas and james.

Another source for English. The US Census 2010 surname list is already cached for tools/name_usage.py (162,253 surnames and a row for all others). Of its 1,000 commonest, 36 are already in the romanized table (lee, nguyen, kim, long, tran, …) and 12 are in the given-name table (alexander, daniel, patrick, anthony, christian, michael, …). Its 100 commonest cover 17.3% of the people counted and its 1,000 commonest 41.0% (the file's own cumulative column), which is far from the closed sets the East Asian table rests on.

Options:

  • (A) A derived surname table, one source pair per language, the mirror of the given-name table: a country's commonest surnames from a census-style list (US Census 2010; Spain's INE surnames, also cached for name_usage.py), less any word a given-name source for the same country ranks as a common given name, less any word in the given-name table.
    • When: a name has a listed surname at one end and not at the other.
    • Then: it votes that the family name is written at that end, as a romanized surname does.
    • Because: the surname is evidence in the name itself, and it is the only evidence in a list whose given names are also surnames.
    • Except: a word in both tables votes in neither. A one-letter word and a two- or three-letter capitals word ending a name stay out, as today.
    • Accepted: to be measured. A surname that is a given name in another language (Santiago, Cruz, Alonso; Kelly, Jordan, Morgan) votes wrong where it is the given name.
  • (B) The ORCID mirror alone, with the 5% share. Cheap, no new source, but it adds Spanish surnames to lists that already decide and leaves Smith out.
  • (C) Raise the given-name share instead (Should the group suggester know John, David and James as given names? A list of Smith John, Jones David gets no suggestion #1357's option A) and add no surname table. It reaches Smith John through John.
  • (D) Leave it: a caller with such a list declares the order.

What a measurement needs to show, with tools/differential/suggest_measure.py --base:

  1. Every same-order row at 95% or more at every size. A surname table can only add votes, so the risk is a given-first list moved to family-first by surnames that are also given names.
  2. The rows written against their base at 2 to 5 names, where the table should help, for the British, US, Spanish, German and Italian populations.
  3. Lists outside the table's languages (Indian, Nigerian, Turkish), where a listed surname may be a given name.
  4. (A) against (C), since they answer the same lists. The sources must not be the populations the tool tests on (PatentsView and PSC), as the given-name table's are not.

Open:

  1. (A), (B), (C) or (D), or (A) and (C) together?
  2. Which languages first? English is the measured gap; Spanish, German and Italian lists already decide from three or four names.
  3. Licences: the Census list is a US government work; INE's terms and whether a table derived from it may be committed need checking against the project's source notes before anything ships. ORCID's public data file is CC0 and already filters the given-name table.
  4. Size: the given-name table holds 4,262 names. How many surnames per country are worth shipping, given that 1,000 US surnames cover 41%?
  5. Should the table be private to the suggester, as the two existing ones are (no parse reads them, so no snapshot moves)?

🤖 Generated with Claude Code

Activity

  1. self-assigned this
    on Nov 12, 2026
  2. added
    vocabularyFixed by a word-list entry: per-word vocabulary and language packs
    name-orderName order, family-first and two family names (rules/O)
    suggesterThe group suggester: Parser.suggest() and its signals
    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

name-orderName order, family-first and two family names (rules/O)suggesterThe group suggester: Parser.suggest() and its signalsvocabularyFixed by a word-list entry: per-word vocabulary and language packs

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions