中文姓名性别判断:汉字、拼音与批量 API
中文姓名性别判断不是一个简单的字典查询。中文名字可以自由组合一到两个汉字,性别信号更多来自字义和使用倾向,而不是一个封闭的男女姓名列表。因此,API 可以覆盖大部分输入,但仍必须公开概率和错误范围。
在 NameGender 发布的固定测试集中,Han 文字组包含 222 个姓名。覆盖率为 99.5%,在给出答案的姓名中准确率为 86.9%,端到端准确率为 86.5%。这是可复现的产品测试,不是中国人口普查,也不能代表所有地区和年代。
覆盖率高不代表结果一定正确
| 文字系统 | 测试姓名 | 覆盖率 | 回答后的准确率 | 端到端准确率 |
|---|---|---|---|---|
| 拉丁字母 | 3,195 | 98.0% | 97.3% | 95.3% |
| Han | 222 | 99.5% | 86.9% | 86.5% |
| Hangul | 200 | 99.5% | 92.0% | 91.5% |
Han 的覆盖率比拉丁字母更高,但准确率更低。对中文数据只看“是否返回了性别”会得出错误结论。应该把覆盖率、回答后的准确率和端到端准确率分开记录。
汉字比拼音保留更多信息
无声调拼音会同时丢失声调和字符身份。例如 wei 可能来自伟、薇、微、威或唯。API 看到的只是合并后的拉丁字符串,而原始汉字中的区别已经无法恢复。
数据源中有汉字时,直接发送汉字。只有拼音时,应降低自动采用结果的阈值,并把输入类型写入审计记录。
{
"name": "静",
"country": "CN"
}
像“静”这样的字符可以在不同性别中使用。此时 probability 比 gender 更重要,因为它能区分明显倾向和接近平均的结果。
姓在前是最容易被忽略的解析错误
中文姓名通常按“姓 + 名”书写。汉字 张伟 的姓是张,名是伟。罗马字 Zhang Wei 如果进入一个默认西方顺序的解析器,可能会把 Zhang 当作名字。
这个错误很隐蔽,因为姓氏在真实数据中也可能出现轻微性别偏差,系统仍会返回一个看起来合理的答案。检查响应中的 name 字段可以发现它实际分类的是 Zhang 还是 Wei。
推荐顺序如下:
- 优先发送独立的名字字段。
- 无法拆分时发送原始汉字全名。
- 使用拼音全名时明确姓和名的顺序。
- 对响应中的
name、first_name和last_name做一致性检查。
单个汉字可能就是完整名字
拉丁文本处理器常把单个字符视为首字母并删除。这个规则不能直接应用到 CJK 数据,因为伟、静等单个汉字可以构成完整名字。清洗流程必须先识别文字系统,再决定是否删除短字符。
批量任务中的质量控制
批量姓名性别识别不应只有一个“已完成”状态。至少输出:
- 成功匹配数量
gender: null数量- 低概率或未验证结果数量
- 汉字、拼音和混合输入各自的匹配率
- 实际被分类的
name与原始query不一致的行
如果数据用于汇总分析,可以保留全部结果并把未知值作为独立类别。如果结果将影响单个人,应要求更高阈值或直接询问本人。姓名预测不适合招聘、医疗、金融、保险、法律和资格决定。
你可以使用自己的姓名数据检查本文中的结论。免费额度足够完成小规模验证。