Skip to content

柯洁 reads as one family name under locales.ZH: should the Chinese surname list go past the census top 100? #695

Open

Description

@derek73

What happens today. The ZH pack segments only surnames in its list, the 2020 PRC census top 100 plus the Hundred Family Surnames compounds (nameparser/locales/zh.py). Its docstring calls this "a coverage floor, not a census roster". Any other surname leaves the name whole:

parser_for(locales.ZH).parse("柯洁")   →  given '', family '柯洁'
parser_for(locales.ZH).parse("欧阳修") →  given '修', family '欧阳'

Evidence. On 80 real unspaced Chinese names from Wikidata (#693), ZH agrees on 74. All 6 misses are surnames outside the list: 詹 (詹桓), 卫 (卫惠林), 柯 (柯洁, the Go player), 茅 (茅祖權), 华 (华楠) and 文 (文强). The CLDR locale view, which uses invented names, never showed this; its 42/96 fails for other reasons. That is a 7.5% miss rate on public figures, who skew toward common surnames, so ordinary data likely misses more.

Proposed statement. Extend the single-character list to a larger published roster (top 300 or top 500), keeping the census rank order and the existing annotations.

Open questions:

  • Source. The 2020 census publication gives only the top 100. Which openly licensed roster goes further? Candidates to check: the 2019 Ministry of Public Security surname release, and Wikipedia's 中国姓氏排行 page and its sources.
  • Collision cost. Rarer surnames are more often also given-name characters (文 and 华 are common given-name characters). A two-character name whose first character is a listed surname is split either way, so the real cost is a non-Chinese Han name split wrongly, such as Japanese kanji read without JA. The pack is already opt-in against that. Measure against the CLDR ja rows under ZH before and after.
  • Traditional forms. Should 衛 and similar be added in both scripts, as the current list does?

Exclusions. This does not change the default (ZH stays opt-in), and does not touch compound surnames beyond the existing list.

Activity

  1. self-assigned this
    on Oct 17, 2026
  2. derek73 commented on Oct 19, 2026

    @derek73
    OwnerAuthor

    Folding in #657, which is the same gap: the ZH list stops at what it ships. Two kinds of misses, re-measured 2026-10-18 on 16ee285 with parser_for(locales.ZH):

    Single-character surnames outside the top 100 leave the name whole, like 柯洁 above:

    关小凤   →  family '关小凤', given ''
    温小凤   →  family '温小凤', given ''
    

    On Wikidata 关 has 504 family-name bearers and 温 613 (from #657), more than many surnames already listed.

    Missing compounds are worse, because the first character is listed, so the name splits at the wrong place:

    钟离小凤  →  family '钟', given '离小凤'   (compound 钟离 missing)
    段干小凤  →  family '段', given '干小凤'   (compound 段干 missing)
    欧阳修    →  family '欧阳', given '修'     (listed compound: works)
    

    Longest match already works (欧阳修), so this half is data only: add the Hundred Family Surnames compounds still in use that the list leaves out. That makes the Exclusions line above ("does not touch compound surnames beyond the existing list") too narrow. Whoever takes this should cover both halves.

    #657 also named another source to check beside the ones above: Taiwan's MOI surname table (Government Open Data License v1).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions