Skip to content

Should José Silva Júnior read Júnior as a suffix, as José Silva Junior does, and where do Filho, Neto and Sobrinho belong? #843

Open

Description

@derek73

Measured on the local corpus tse-donors (PR #841: TSE candidates' receipts from individuals, 2022 and 2024 elections, data as of 2026-10-18 / 2026-10-22; 848,443 distinct filed names, nearly all in capitals). Counts of filed names ENDING in the word, and where default parse() puts it:

last word names read as
JUNIOR 13,829 suffix in all
JÚNIOR 991 family in 990
JR / JR. 1,634 / 16 suffix in all
FILHO 10,979 family in 10,949
NETO 8,439 family in 8,420
NETTO 432 family in 431
SOBRINHO 955 family in 953
FILHA / NETA / SOBRINHA 66 / 152 / 5 family

1. Júnior is not in the vocabulary (a defect, probably)

>>> parse("José Silva Junior")   # given José, family Silva, suffix Junior
>>> parse("José Silva Júnior")   # given José, middle Silva, family Júnior

tools/vocab/query.py --word júnior finds nothing; junior is in en.toml as a generation word (same_as='jr'). The accented spelling is the standard Portuguese one, and the same donors are written both ways: in 983 records the campaign filed JÚNIOR where the tax registry's name for the same CPF ends JUNIOR. The fix looks like a pt.toml entry (generation, same_as='jr'), but run the vocabulary steps first (tools/name_usage.py Júnior for bearers as a given or family name; Júnior is also used as a given name in Brazil), and check the predicates that test a member's spelling (AGENTS.md: the first accented member of a set; starts_a_credential_run was isascii() once).

2. Filho, Neto, Sobrinho: suffix or family? (a design question)

These are Brazilian agnomens: legally part of the surname on the birth certificate, sorted with it in Brazilian practice, and functionally generational like Junior. The parser reads them as the family name today, which puts the real surname in the middle name (Pedro Alves Filho → given Pedro, middle Alves, family Filho). Three readings to choose between:

  • Leave as is (family Filho): consistent with "legally part of the surname", but family alone then never holds the surname anyone would look the person up by.
  • Suffix, as Junior (family Alves, suffix Filho): matches how Junior already reads and how the registry pairs show them used (the filer dropped FILHO in 1,679 records where the registry has it, NETO in 969, SOBRINHO in 142, as filers drop suffixes) — but contradicts the legal-surname view, and Neto/Sobrinho are also ordinary surnames standing alone.
  • Family including the agnomen (family Alves Filho): the Brazilian legal reading, but needs a new rule (an agnomen joins the word before it), not just vocabulary.

Collisions to weigh: Neto and Sobrinho are borne as plain surnames (and Neto as a given name in Portugal); Segundo (107 names here, all family) is a Spanish given name and surname. Ordinal endings (Segundo, Terceiro) are a smaller second question.

Packs: this is the kind of word docs/design says a language pack settles (v3 language-packs thinking, #747), so one answer is "pt/BR pack only".

The registry pairs make this measurable: every record carries both the filed name and the registry's name, so a candidate rule can be scored on how often it reads the two forms of one person the same way.

Activity

  1. derek73 commented on Oct 23, 2026

    @derek73
    OwnerAuthor

    The same corpus pairs each filed name with the tax registry's name for the same donor, which shows how the agnomens are abbreviated in typed data (records fetched 2026-10-22, where the registry's name ends in the word and the filed name ends in another spelling of it):

    registry filed as records
    JUNIOR JR 1,601
    JUNIOR JÚNIOR 982
    FILHO FH 784
    NETO NT 457
    FILHO FO 159
    SOBRINHO SB 13

    None of FH, FO, NT, SB is in the vocabulary in any reading (tools/vocab/query.py), so each reads as the family name today (PEDRO ALVES FH → family FH, middle ALVES). Whatever this issue decides for the full word should probably cover these spellings too, after a collision check (NT and SB as credentials, for a start). Truncations (JUNIO 47, SOBR 50, FILH 20) and single initials (F, J, N) look like noise rather than conventions and are left out.

  2. self-assigned this
    on Oct 23, 2026
  3. derek73 commented on Oct 23, 2026

    @derek73
    OwnerAuthor

    A related accent case turned up in the same corpus, though the word is not an agnomen. local_corpora.py pairs tse-donors --agreement (#852) parses both spellings of each donor and compares the surnames. Among the pairs whose two spellings differ only by accents (fetch of 2026-10-22), 1,310 of 43,724 read different surnames: JÚNIOR/JUNIOR in 866 (this issue), and SÁ/SA in 255.

    sa is in the vocabulary as a credential (en.toml, with NOT may_be_name, and a military reading, Seaman Apprentice), so the unaccented spelling of the Portuguese surname Sá is read as a suffix:

    parse("MARIA DE SÁ")   # given MARIA, family DE SÁ
    parse("MARIA DE SA")   # given MARIA, family DE, suffix SA
    parse("JOAO SA")       # given JOAO, family '', suffix SA
    

    AGENTS.md already counts sa among the suffix acronyms borne as surnames (measured 2026-08-23). The tse pairs give a figure for how often it is written unaccented: 255 donors whose filed name ends in SÁ are registered as SA. That may be a separate question (whether sa should be may_be_name, as ba became under decisions/suffix-acronym-collisions) rather than part of this one. It is noted here because it is the same accent-sensitivity, and the same corpus measures it.

  4. added this to the 2.6 milestone on Oct 23, 2026
  5. added a commit that references this issue on Oct 23, 2026
  6. modified the milestones: 2.6, 2.7 on Oct 25, 2026
  7. derek73 commented on Oct 25, 2026

    @derek73
    OwnerAuthor

    #890 (phase 2h of #752) reads the agnomens as suffixes, gated by the word count. With a word to spare, Pedro Alves Filho gives family Alves, suffix Filho. A two-word name keeps the agnomen as its family name (Ana Neto, PEDRO FILHO). The words covered are Filho, Filha, Neto, Neta, Netto, Sobrinho and Sobrinha. #890 references this issue without closing it, because two things are still open here.

    1. The filed abbreviations. On tse-donors, a filed name that abbreviates the agnomen still reads it as the family name. The registry spelling of the same donor now reads the agnomen as the suffix, so those pairs read differently. Pairs whose only difference is the abbreviated last word, measured 2026-10-25:

    Filed Registry Pairs
    FH FILHO 229
    NT NETO 119
    FO FILHO 99
    SOBR SOBRINHO 19
    FILH FILHO 16
    F FILHO 15
    NET NETO 12
    SB SOBRINHO 11

    There are smaller ones as well (FIL, N, NE, FI, SOB, FL), and misspellings (FIILHO, FIHO). Listing an abbreviation as an agnomen spelling has to weigh what else the short capitals are. FH, NT and SB are also initials run together and credential-shaped, and F and N are single letters, which rules/T5 reads as initials.

    2. Shapes the gate reads that may be worth a second look. Each is recorded as an accepted cost in rules/S11:

    • An initial straight before the agnomen is read as the family name: Pedro J. Neto gives family J.. 568 tse names have this shape, and the initial most often abbreviates the surname.
    • A generation word or a credential straight before it joins the suffix run, which leaves no family name: PEDRO JUNIOR FILHO gives suffix JUNIOR FILHO. 5 tse names.
    • After a comma, the ambiguity report on an agnomen says "read as a credential", which is the acronym class's wording. The field it names is right.

    Agnomens as such are decided: rules/S11 and decisions/S11 hold the measurements, and decisions/generational-words' Standing line now points at them.

  8. derek73 commented on Oct 25, 2026

    @derek73
    OwnerAuthor

    Abbreviated agnomens, now that #890 has landed. #890 reads Filho, Neto, Sobrinho and the feminines as gated generation readings, counted by words to spare. TSE's donor filings often abbreviate them, and the abbreviations are still read as the family name, so those filed/registry pairs still disagree.

    Counted 2026-10-25 over tse-donors pairs that are identical except for the last word, where the registry spells the agnomen and the filed name abbreviates it:

    Agnomen Filed spellings (pairs)
    FILHO FH 230, FO 99, FILH 17, F 15, FIL 10
    NETO NT 122, NET 12, N 6, NE 5
    SOBRINHO SOBR 19, SB 11, SOB 4
    NETTO, NETA NT 6 and 2, NET 1

    Questions

    1. Should the common abbreviations be listed as agnomen spellings, each same_as its full word, under the same count-only gate? Candidates are FH, FO, NT, SOBR and maybe FILH and NET. Each needs a check against bearers, as any vocabulary addition does (name_usage.py, and NPPES for a credential reading). For example, FO and NT may collide with surnames or credentials elsewhere.
    2. The single letters F and N are written exactly as an initial is, so nothing in the writing tells the two apart. By Gate generation readings by kind: fils, the Brazilian agnomens, default = false (#752, phase 2h) #890's rule they would be default = false, a pack question for phase 3, or simply left as they are.
    3. Do only Brazilian filings write these? If so, they belong in pt-BR.toml, beside netto.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

questionvocabularyPer-word vocabulary model and language packs

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions