继续 → 概览
← 全部技术笔记

中文姓名性别判断:汉字、拼音与批量 API

阅读约 3 分钟 中文姓名性别判断 汉字 拼音

中文姓名性别判断不是一个简单的字典查询。中文名字可以自由组合一到两个汉字,性别信号更多来自字义和使用倾向,而不是一个封闭的男女姓名列表。因此,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"
}

像“静”这样的字符可以在不同性别中使用。此时 probabilitygender 更重要,因为它能区分明显倾向和接近平均的结果。

姓在前是最容易被忽略的解析错误

中文姓名通常按“姓 + 名”书写。汉字 张伟 的姓是张,名是伟。罗马字 Zhang Wei 如果进入一个默认西方顺序的解析器,可能会把 Zhang 当作名字。

这个错误很隐蔽,因为姓氏在真实数据中也可能出现轻微性别偏差,系统仍会返回一个看起来合理的答案。检查响应中的 name 字段可以发现它实际分类的是 Zhang 还是 Wei

推荐顺序如下:

  1. 优先发送独立的名字字段。
  2. 无法拆分时发送原始汉字全名。
  3. 使用拼音全名时明确姓和名的顺序。
  4. 对响应中的 namefirst_namelast_name 做一致性检查。

单个汉字可能就是完整名字

拉丁文本处理器常把单个字符视为首字母并删除。这个规则不能直接应用到 CJK 数据,因为伟、静等单个汉字可以构成完整名字。清洗流程必须先识别文字系统,再决定是否删除短字符。

批量任务中的质量控制

批量姓名性别识别不应只有一个“已完成”状态。至少输出:

  • 成功匹配数量
  • gender: null 数量
  • 低概率或未验证结果数量
  • 汉字、拼音和混合输入各自的匹配率
  • 实际被分类的 name 与原始 query 不一致的行

如果数据用于汇总分析,可以保留全部结果并把未知值作为独立类别。如果结果将影响单个人,应要求更高阈值或直接询问本人。姓名预测不适合招聘、医疗、金融、保险、法律和资格决定。

接口示例和认证方式见中文 API 文档,可复现的测试方法见基准测试方法

你可以使用自己的姓名数据检查本文中的结论。免费额度足够完成小规模验证。