Skip to content

Latest commit

 

History

History
113 lines (90 loc) · 7.44 KB

File metadata and controls

113 lines (90 loc) · 7.44 KB

OpenGrad — Scope & Schema v1

本文档是项目的唯一权威设计文档。所有实现必须以此为准;要改先改这里。

项目一句话

自动化管线持续抓取美国硕士项目的官网信息,用 LLM 做结构化抽取,带逐字段准确率评测和数据新鲜度监测,最终以可查询网站呈现。

Scope v1

做:

  • 垂直:美国 CS/DS 方向硕士(MSCS / MSDS / MSIS / MEng-CS 等)
  • 阶段一(pilot):10 所学校端到端跑通;阶段二:扩到 50–100 所(清单从 OpenCSApp 冷启动)
  • 只抓学校官网可验证的客观信息
  • 产出:爬取+抽取管线、逐字段 eval、定期重爬 + diff 监测、简单查询网站

不做(v1 明确排除):

  • 录取案例、选校推荐、排名、论坛内容、文书相关
  • BA 垂直(第二期,作为 vertical-agnostic 架构的验证)
  • 用户系统 / 登录

设计约束:

  • Schema 与管线必须 vertical-agnostic:新增垂直(如 BA)只应新增配置(项目清单),不改代码结构
  • 记录粒度:一条记录 = 一个具体 program("CMU MSCS",不是"CMU")。同一大学不同学院的同类项目是不同记录(如 NYU Tandon vs Courant)

垂直边界裁决(2026-07-23,适用于 pilot 种子清单)

纳入(计算为核心的硕士学位):CS、DS/Analytics、AI/ML、软件工程、网络安全、信息系统/信息管理(IS/IM/MISM)、机器人/CV/NLP(含计算语言学)。

排除(v1 一律不收):

  1. 领域交叉型 DS 学位("X 领域 + Data Science"双域项目,如 Healthcare/Environmental/Public Policy/Spatial/Econ/Communication/Law + DS)
  2. HCI / 设计导向项目(MHCID、MSHCI、HCDE 等)
  3. Computer Engineering / EE 学科的学位(含 ECE 下的 ML 方向)。排除依据是学位学科而非开设院系:纳入学科的学位挂在 ECE 等院系下不受影响(例:CMU ECE 的 MS in Software Engineering 保留)
  4. 政策/战略/管理导向项目(如 CMU MITS);但 IS/IM 家族保留
  5. 属于更大学位下的 track / option / concentration,而非独立招生学位(如 UIUC MEng Autonomy 方向、UW-Madison Stats 的 DS option)
  6. 面向在职人群的非常规学位形态(MAS 等)
  7. 页面明示已停招的项目
  8. 非美国校区(含加拿大分校);UW 指西雅图主校区,Bothell/Tacoma 不在 pilot 内

粒度规则(修订):一条记录 = 一个独立招生的学位项目。校区/授课方式变体只有在"独立招生 + 有自己的官方页面"时才拆分(GT on-campus/OMSCS、UIUC MCS 三变体、Columbia 线上线下均符合)。多校区共用一次招生的(如 NEU Align),粒度保持 program,多校区问题记为已知限制、v2 处理。共享同一 URL 的两条记录必须核实"确为独立招生的两个学位"方可保留。

Schema v1.3

字段 类型 说明
school string 学校名
program_name string 项目名
degree_type enum MS / MEng / MCS / MSc …
department string 所属学院/系
official_url url 项目官网主页
location string 保留官网使用的地名(如 Silicon Valley,不得换算为 San Jose);州信息仅在页面明示时保留;多校区以 ; 分隔;纯线上项目为 Online
duration_months int 或 {min, max} 标准时长;页面给区间时保留整数月区间
stem_designated bool 是否 STEM
total_credits int 毕业学分
track_options enum thesis / coursework / both / project
deadlines array round 用小写下划线;dateYYYY-MM-DD,原文无年份时用 MM-DD,滚动录取用 rolling
application_fee object 申请费;amount 为 number 或 {min, max},并带币种
tuition object total 或 per_credit + 币种;amount 为 number 或 {min, max}
toefl_min / ielts_min number 语言最低分
gre_policy enum required / optional / not_accepted
gpa_min number 若官方明示
prerequisites string[] 先修要求

内容字段对象: {value, evidence, confidence, source_url}source_url 是 evidence 所在页面;not_found 时 evidence 与 source_url 均为 null。身份字段 直接来自 seed,保留 source: "seed"、evidence 为 null,source_url 指向 seed 记录对应的项目主页。 scraped_atextracted_at 与模型信息保留为记录级元数据。

设计原则:

  1. 能用枚举就不用自由文本——枚举才能精确算 eval 准确率
  2. 每个值可溯源——用户和 eval 随时能点回原网页核对
  3. 抽不到 ≠ 抽错。字段值允许 not_found,且 eval 中区分这两种情况
  4. 格式约束只规范已有事实,绝不能成为补出事实的理由;地点不得做地理别名换算,官网页脚、校区生活等位置出现的校区地名也可作为来源

Eval 归一规则:

  • 文本比较忽略大小写与多余空白;location 按校区集合比较,pilot 所涉州的全名/缩写等价,同城一方缺州时仍可匹配,但双方都有州时必须一致
  • deadlines 先解析日期并规范 round 词元,再一对一匹配 (round, date);仅一方缺年份时按同月日匹配,部分条目匹配记为 partial_correct
  • prerequisites 双方均有值但清单不一致时记为 needs_adjudication,不直接计错且不进入 accuracy 分母;missedhallucinated 仍照常保留
  • data/eval/adjudications.yaml 中命中的 (target_id, field) 由 owner 裁决为 correct,并以正交指标 adjudicated 单独计数

增量监测约束

  • 每轮刷新抓取全部已知主页与 aux 页面,继续遵守 robots.txt、同域限速、挑战识别和同日缓存。
  • 页面变化以 clean_html 后的正文文本 hash 判定,不能用原始 HTML hash;每份成功 snapshot 的 meta 同时保存 raw 与 clean hash。
  • 页面按 URL 分为 unchangedchangednewgone;历史成功但本轮失败必须记为 gone,不得静默丢失。
  • 同一 URL 可属于多个项目;该页面变化时,所有关联项目都标为 dirty。
  • dirty 项目用其当轮全部可用页面整项目重抽;unchanged 项目不调用 LLM,直接沿用最近结果。
  • 展示分桶与最近一次历史快照比较;是否触发重抽则与最近一次已完成抽取所对应的快照比较,避免 dry-run 后页面不再变化时永久漏抽。Task 4b 已排除的本科 aux 仍可抓取和展示,但不触发重抽。
  • 每轮生成字段级 JSON 与 Markdown diff,列出项目、字段、旧值、新值和新 evidence,并汇总页面、项目、字段变更数及 LLM 成本。
  • --dry-run 只完成抓取与页面分桶,不调用 LLM,供 owner 先检查变化面;使用独立的 .dry-run 报告,不覆盖同日正式 diff。

Pilot 学校(10 所)

难例(故意挑的):

  1. CMU — 一校多个相似项目(MSCS/MCDS/MSAII/MIIS…),考验 program 区分
  2. NYU — Tandon 与 Courant 两学院各有 CS 硕士,考验记录粒度
  3. Northeastern — 多校区 + Align 项目,信息结构混乱
  4. USC — 项目数量多

常规例: 5. Georgia Tech 6. UIUC 7. UW (University of Washington) 8. UCSD 9. Columbia 10. Wisconsin-Madison

成功标准(pilot 阶段)

  • 10 所学校的全部目标 program 入库
  • 逐字段抽取准确率有数字(对照人工核对的 ground truth;CS 垂直可借助 OpenCSApp 数据)
  • 管线可重复执行:重跑能产出 diff 报告