Files

8.0 KiB
Raw Permalink Blame History

data/real —— 真实公开数据集接入

本目录存放从公开数据集加工而来的真实评测/演示数据,与 data/testset/(合成测试集) 分开报告、不混算。源数据位于 datasets/XH-202621/data/(只读),全部产物可由 scripts/build_real_dataset.py(random.seed=2026 固定)复现重建。

目录结构与来源

目录 来源 授权 内容
autoweaks_jd/ AutoWeakS(北大/人大,arXiv:2012.14234)Tecent_job_phrase.txt(2820 行腾讯 JD)、JD_job_phrase.txt(706 行京东 JD) 论文公开语料(研究用途) 200 条真实 JD 样本(腾讯 160/京东 40,≈4:1 与源行数比一致)+ silver gold;全量 jd_full.jsonl 2215 条 + 500 条分层评测集 jd_eval_500.jsonl(含原 200 条样本)
aistudio_resumes/ AIStudio 中文简历标注集 train.json(2000 条) CC0 200 份简历 txt(保留 PII,用于验证脱敏链路)+ 字段级 gold
chinese_resume → batch_demo_resumes/ Chinese_resume_data.csv(5001 条结构化简历,含 PII) 公开数据集(研究用途) 32 份渲染后经 app.match.resume.mask_text 脱敏的 txt;原始 CSV 与未脱敏文本一律不写入 data/
esco_reference/ ISCO/ESCO 国际职业分类 ESCO 为 EU 公开分类 只拷 4 个关键 labels 锚点文件(未整目录拷贝),供岗位归类对齐参考

处理口径

autoweaks_jd(真实 JD 测试集 / 语料)

  • 去分词:源文件为词级分词格式(词间单空格)。CJK 之间、CJK 与拉丁 token 之间 去空格,拉丁-拉丁保留单空格(detokenize(),如 熟悉 hadoop spark 开发 → 熟悉hadoop spark开发)。
  • 技术岗过滤:命中 Python|Java|JavaScript|前端|后端|软件|算法|数据|开发|云|AI|机器学习| 测试|运维|Android|iOS|Go 等关键词,且至少命中 1 个词表技能;全文去重。
  • JDRecord 兼容 JSONL:jid(AW0001~AW0200)/job_title(启发式)/company(腾讯|京东)/ publish_date(2019 随机)/source("autoweaks")/url(空)/text。
  • job_title 为启发式标注:真实 JD 无"岗位名称:"行,按文本前 200 字关键词归类 (算法/前端/后端/测试/运维/数据分析等),评测中该字段只作参考,主指标是技能 F1。
  • gold 为 silver 标准(初标+抽检):
    1. 初标 = SkillMatcher 全文扫描(required_skills)+ 场景词表(scenarios); 真实 JD 无编号版面,responsibilities/preferred_skills 口径为空,不参与评分; 即使抽取器从正文"优先考虑"等字样产出加分候选,preferred_skills 也不计入 (gold 无该字段标注,避免真实语料口径漂移);
    2. 人工抽检 30 条(每 7 条取 1 + 随机补 1):初标与人工复核一致 29/30(96.7%); 唯一不一致 AW0001 漏抽 Node.js/React(源文本写作 nodeJS/reactJS),定位为词表别名 缺失——已给词表补 NodeJS/ReactJS 别名并重新初标,未为过指标修改 gold。
    3. 抽检另发现 1 处真实抽取器局限(非 gold 错误):AW0050 自由文本中混入"任职资格" 字样触发版面区域切分,导致区域前的 RTOS 漏抽——gold 保留正确答案,评测如实 反映(recall −0.12%)。
  • 已知局限:词表(179 项)未覆盖的真实技能(Ruby/Perl/Memcached/JVM/Sass/大数据/ OpenStack 等)不在 gold 口径内;源文本错别字(如 pathon=python)不做纠正。 词表扩至 179 项后新增命中(SLAM/ROS 各 1-2 条、路径规划 1 条)为 gold 未覆盖口径, 影响约 0.1 个百分点,未为过指标修改 gold。

数据扩产记录(scripts/expand_real_dataset.py,T1-T5)

在 build_real_dataset.py(200 条样本基线)基础上扩产,random.seed=2026 可复现:

  • T1 AutoWeakS 全量(jd_full.jsonl):去分词 → 技术岗过滤 → 全文去重后, 腾讯池 1850 条、京东池 365 条,共 2215 条唯一文本;全量 = 原 200 条样本 (jid/原文逐字保留)+ 新增 2015 条(腾讯 1690 / 京东 325,jid 接续 AW0201~AW2215)。 日期策略:源数据无发布日期,新增条目统一 publish_date=2019-06-01,原样本保留 其既有随机日期;该子集整体不参与演化分析,仅作语料/评测。
  • T2 真实 JD 评测集 500 条(jd_eval_500.jsonl + gold_answers_500.json): 包含原 200 条样本,另按岗位类别分层补 300 条,优先补齐样本覆盖少的类别; gold 沿用"SkillMatcher 初标"口径(responsibilities/preferred_skills 为空, 不参与评分)。一致性自检:500 条 gold 的每个技能均可回溯到原文(SkillMatcher 以原文命中生成,脚本内断言通过);人工抽检 ≥50 条由团队在提交前执行并补记。
  • T3 AIStudio 简历 50 → 200:按"工作/项目经历含技术内容 + 电话合法 + 有姓名" 过滤,从剩余候选中抽 150 条渲染为 aistudio_051~200.txt,gold.json 同步扩展 (姓名/电话/词表技能/源 source_id)。该目录保留 PII 属既有约定,仅用于验证脱敏链路。
  • T4 批量演示 12 → 32:从 Chinese_resume_data.csv(筛选结果=通过)再抽 20 条, 优先覆盖既有文件未覆盖的意向岗位;落盘前必须过 mask_text,测试守卫确认 无 1[3-9]\d{9} 手机明文与邮箱明文。
  • T5 英文数据集(data_jobs/djinni/jd_en/careercorpus/jobhop)未接入:赛题为中文 岗位场景,英文 JD 对演示与指标无实质价值;方法可迁移性由 ESCO 参考文件与中文评测 佐证,不引入英文语料到主目录。

aistudio_resumes(真实简历集)

  • 抽 200 条:优先工作经历/项目经历含技术内容、电话合法(1[3-9]\d{9})、有姓名。
  • 渲染为本工程简历文本格式:姓名/电话/学历/籍贯 + 教育经历/工作经历/项目经历分节。 保留 PII(姓名、手机号明文),用于验证解析即脱敏链路;gold 按脱敏形态比对。
  • gold.json:每份给 姓名、电话、词表技能清单(SkillMatcher 扫描初标 + 人工抽检 10 条复核,10/10 一致)。
  • 脏数据实录(源集本身为众包标注合成,未做清洗,如实保留):
    • 职务与工作内容常不匹配(如职务"司机"但工作内容是后端开发);
    • 学位/毕业时间逻辑混乱(一人多个博士学位、时间倒挂);
    • 项目名称多为社科课题名,与技术内容无关;
    • 技能标注口径 = "文本中出现的词表技能",与简历主人实际水平无关。

batch_demo_resumes(批量演示素材)

  • 从 5001 条中按"筛选结果=通过"过滤,覆盖 10+ 类意向岗位(算法/前端/后端/测试/数据/ 运维/云计算/移动开发/全栈/数据分析等)抽 32 条;
  • 按 姓名/性别/手机/邮箱/求职意向/教育背景/技能清单(技术栈+熟练度)/自我评价 渲染;
  • 落盘前过 mask_text:手机→150****79、邮箱→j***@gmail.com、姓名→张*。 原始 CSV 与未脱敏文本一律不得写入 data/(有测试守卫)。

评测

scripts/evaluate.py 新增两个独立维度(控制台分行打印,reports/metrics.json 新增 real_jd / real_jd_500 / real_resume 小节):

  • 真实 JD(AutoWeakS 初标+抽检):jd_sample.jsonl 重新抽取 vs gold_answers.json, 字段级 micro-F1(required_skills 0.7 / preferred_skills 0.2 / scenarios 0.1, 空口径字段不参与并按剩余权重归一);
  • 真实 JD(500 条分层):jd_eval_500.jsonl 重新抽取 vs gold_answers_500.json, 同一口径,包含原 200 条,另按岗位类别分层补 300 条;
  • 真实简历(AIStudio CC0):200 份解析 vs gold.json,姓名/电话命中率(脱敏形态比对)
    • 技能 F1(双方均无词表技能的简历记完全一致 F1=1)。

实测:真实 JD 技能 F1 ≈ 99.9%(目标 ≥80%),真实姓名命中 100%、电话命中 100%。