返回博客

从关键词到语义空间:BERT 如何改变人岗匹配

从关键词到语义空间:BERT 如何改变人岗匹配

招聘搜索中最常见的漏召回,并不是候选人没有相关能力,而是双方没有使用同一组词。职位写“商业智能”,简历写“经营分析看板”;职位要求“自然语言处理”,候选人描述“文本分类与实体识别”;“客户成功”和“售后运营”在不同公司也可能承担相近工作。

关键词系统擅长找相同字符串,却很难判断不同表达是否指向相近能力。2018 年以来,以 BERT 为代表的预训练语言模型开始把句子放进由上下文决定的语义空间,让匹配从“出现了哪些词”转向“这段经历表达了什么”。但这并不意味着把职位和简历分别编码、计算一个余弦相似度,人岗匹配就完成了。

关键词系统错过了哪一层信息

传统搜索通常由分词、倒排索引和相关性打分组成。它速度快、结果可解释,对证书名称、公司名、工具版本等精确条件仍然非常有效。问题出在三类表达差异:同义词与缩写、上下位概念,以及需要结合上下文才能判断的技能。

例如“负责搭建推荐模型”中的“推荐”是一类算法任务,而“由同事推荐加入公司”中的“推荐”不是技能。词袋模型可能给两者相似权重;上下文化表示则试图区分词在具体句子中的含义。

关键词、上下文表示与领域匹配形成的人岗匹配演进
关键词、上下文表示与领域匹配形成的人岗匹配演进

BERT 带来的不是词表扩张,而是上下文表示

BERT 通过在大规模文本上进行双向预训练,使同一个词的表示受到左右上下文共同影响。对于招聘文本,这意味着岗位、技能和职责不必完全依赖人工维护的同义词表;模型可以通过句子上下文学习“Python”在数据分析经历和“Python 课程”中的不同证据强度。

但原始 BERT 更适合把两个文本拼接后做分类或相关性判断。若把一个职位与十万份简历逐一组成文本对,模型必须运行十万次,在线搜索成本很高。它很会精细比较,却不适合直接承担大规模候选召回。

2019 年的 Sentence-BERT 采用孪生网络结构,将句子预先编码成可比较的稠密向量。论文用一个直观例子说明效率差异:在约一万条句子中寻找最相似句对,普通 BERT 交叉比较需要大量推理,而预先生成句向量后可显著缩短搜索时间。对人才库而言,这为“离线编码候选人、在线编码职位、近邻召回”提供了可行基础。

双塔召回与交叉编码器各做一半

语义匹配常见的两种结构,本质上在效率与精度之间取舍。

双塔模型负责大规模召回,交叉编码器负责精细重排
双塔模型负责大规模召回,交叉编码器负责精细重排

双塔模型分别编码职位和候选人,向量可以提前计算并建立近邻索引,适合从大库中快速召回几百人。它的局限是两边在编码时没有逐词交互,容易忽略细小但关键的条件。交叉编码器把职位与简历片段一起输入,让注意力直接比较双方内容,通常更精细,却难以对全库逐一计算。

更现实的架构是分阶段处理:先用关键词、规则与语义向量做混合召回,再用交叉编码器或专用匹配模型重排较小的候选集合。硬性条件在召回前过滤,最终结果保留命中的经历证据,而不是只输出一个不可解释的相似度。

招聘领域不能只依赖通用语义

“文本意思相近”与“人岗适合”不是同一个任务。职位要求“管理十人团队”,候选人写“参与十人团队项目”,两句话共享大量词,但责任层级不同;“熟悉 Kubernetes”与“负责生产集群治理”语义相关,能力深度却不同。

2019 年关于 Person-Job Fit 领域迁移 的研究直接指出了招聘匹配的数据困难:真实申请与录用数据往往稀缺,并且不同岗位领域的文本分布不同。作者探索从有数据的职位类别迁移到数据较少类别。这提醒工程团队,通用预训练只是起点,岗位层级、技能关系和招聘行为仍需领域数据校准。

训练标签也不能简单把“投递”当作适配、把“未录用”当作不适配。候选人可能海投,未录用可能源于名额、薪资、地点或流程中断;历史录用还会继承过去的招聘偏好。若标签含义不清,模型会高效复现噪声。

把职位与简历拆成可比较的证据

整份简历与整份 JD 各压成一个向量,容易让不相关内容互相稀释。更稳妥的做法是先恢复结构,再比较对应证据:职位职责与工作经历匹配,必需技能与项目证据匹配,学历和地点走独立约束,职业年限由时间线计算。

一个可解释的评分可以由多部分组成,而不是假装存在唯一“客观适配度”:

  • 必要资格是否满足,作为过滤或单独展示;
  • 核心技能与最近经历的语义相关度;
  • 技能使用的时长、最近性和职责深度;
  • 职位层级与候选人责任范围是否一致;
  • 可选能力和行业经验作为加分项;
  • 每一项分数对应到原始职位要求和简历证据。

权重应由招聘团队按岗位校正,并允许查看变化,而不是藏在模型里。对高影响决策,语义排名更适合帮助人找到可能遗漏的候选人,而不是自动作出淘汰结论。

评估不能只看一组相似句

离线评估至少分三层。召回层看合格候选人是否进入前 K 名;排序层看相关候选人的相对位置,可使用 MRR、NDCG 等指标;业务层则看招聘人员是否更快找到有证据的人、是否扩大了有效候选集合,以及不同岗位群体上的错误是否集中。

测试集必须包含“词相同但不匹配”和“词不同但匹配”的困难对。前者检查模型是否只学会词面重合,后者检查语义召回是否真正补足关键词。还应按岗位类别、资历层级、语言和数据来源分层,避免总体指标被大样本岗位掩盖。

关键词不会被 BERT 淘汰。精确过滤、可审计规则和罕见实体仍然需要关键词;语义模型的价值,是在它们之外建立一条发现同义表达和隐含能力的通道。真正可靠的人岗匹配,是精确检索、语义召回、领域重排与人工判断共同组成的系统。

资料来源

返回博客申请试用