8.0 KiB
8.0 KiB
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 标准(初标+抽检):
- 初标 = SkillMatcher 全文扫描(required_skills)+ 场景词表(scenarios); 真实 JD 无编号版面,responsibilities/preferred_skills 口径为空,不参与评分; 即使抽取器从正文"优先考虑"等字样产出加分候选,preferred_skills 也不计入 (gold 无该字段标注,避免真实语料口径漂移);
- 人工抽检 30 条(每 7 条取 1 + 随机补 1):初标与人工复核一致 29/30(96.7%);
唯一不一致 AW0001 漏抽 Node.js/React(源文本写作 nodeJS/reactJS),定位为词表别名
缺失——已给词表补
NodeJS/ReactJS别名并重新初标,未为过指标修改 gold。 - 抽检另发现 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%。