Files
doctoral-research-groups/method/METHOD.md
T

6.7 KiB
Raw Blame History

课题组采集方法(活的方法件)

这份是方法论,不是某一校的报告。任务书从这里引用,不要再各写一套。 立此件的起因:用户指出「做事情不可能依次去枚举所有的 URL」—— 对。 我此前把爱丁堡跑出来的结果(跟了 117 个子域)写成了要求,导致 worker 去 sitemap 拉上万个 URL。 那是蛮力,不是方法。


0. 目标

每所学校产出一份「导师带的组」清单,五字段: 课题组名称 · 所在大学及研究中心 · 研究方向 · 联系邮箱 · 最近五年论文数(暂 null)


1. 方法:入口发现(有限),不是 URL 全量枚举(几万)

数量级对照(实测)

做法 入口数 例
✅ 官方院系导航 → 各院系 /research/ → 组目录 20–60 / 校 Bristol 216 个入口 URL;Edinburgh 几十个
❌ sitemap 全量枚举 上万 / 校 Monash 13,568 个 URL —— 绝大部分是新闻/课程/人员页

步骤

  1. 找学校官方的院系导航 …/faculties/、…/schools-departments/、…/about/structure、…/colleges-schools-and-departments ⇒ 拿到该校的院系全清单(通常 10–60 个)。这就是完备性的分母。

  2. 每个院系进它的 /research(或 /research/、/our-research、/research-and-innovation)

  3. ⭐ 在院系 research 页上找「组目录」 —— 这是整个方法的核心 识别特征(链接文字 / 页面标题 / 路径):

    • research-groups · research-centres · centres · groups · institutes · labs
    • 最高价值:每个组由一位 PI 带 的目录(表格或多行列表,几十到几百行)
      • 页面原话常写作 "each led by a Principal Investigator" / "our research groups"
      • 爱丁堡 Biology 这一个目录 = 140 条(占全校 643 的近 1/4)
  4. 目录条目 → 组自己的页面 → 取五字段

  5. 子域/外站:只在院系站的链接指向它时才跟(如 biology.ed.ac.uk、bristolmathsresearch.org)。 不是去 sitemap 里搜子域列表。爱丁堡那 117 个子域是跟出来的结果,不是要去枚举的目标。


2. 判据:什么算「一个组」

打开页面像人一样看:这是不是一个「导师带的做研究的团队」? 粒度上限 = 一个导师能带的规模。

收 不收
Bristol Cyber Security Group · Clark group Intelligent Systems Laboratory(自述 150+ 人、七个单位的联邦)
Bristol Glaciology Centre 校级研究所(Cabot / Brigstow / Quantum …)
有具名负责人 + 方向 + 一个导师能带的规模 Chemistry/Physics 的 theme、cluster
大一级下面挂着的内层组 只有方向文字 + 一长串人员链接、无具名负责人的方向页

不是组:服务设施 · 研讨会系列 · 项目 · 学生培养计划 · 单项研究 · 空页重定向 · 主题页。 共性是页面上有一句「非团队自述」—— 你去看那句话。

字段取法

字段 取法
课题组名称 该组自己页面的 H1(无 H1 用 <title>;JS 渲染/表格行用目录里的官方组名并标 _name_source)
所在大学及研究中心 大学 + 真实上级研究单位;⚠️ 上级是系/院/学部的不许当研究中心写,没有真上级就只写大学
研究方向 该组页上的方向文字。没有 ⇒ 不要(用户裁)
联系邮箱 只接受本组页 / 本组负责人页的邮箱;不接受学院总邮箱
最近五年论文数 null(用户裁:先留空)

3. 完备性门槛(交付门槛,不是"尽量")

  1. 院系台账:院系(全部)| research 入口 URL | 状态(取到/取不到+原因) | 组数 —— 缺一行就是没做完;未取页 = 0
  2. 合理性校验:组数 ÷ 院系数 —— 比值荒谬地低 ⇒ 大概率漏了「组目录」这一层,回头找目录(不是去爬更多 URL)
  3. 基准:Bristol ≈5.8/系 · Edinburgh ≈25.7/系(因校而异,只看是否荒谬地低)

4. 质量:抽样验,不逐页核(用户裁)

  1. 启发式自动抽(全量,不逐条判)
  2. 随机抽 30 条逐条开页面核 → 准确率 + 假阳性类型
  3. 准确率 ≥90% 且类型集中 ⇒ 定点修那一类,全量直接用 ⇒ 不要再逐页核("逐页核 643 条"是迂腐;改成抽样,一个数量级更快)
  4. 省下的时间全部用来把院系覆盖做全 —— 那才是真正的缺口

5. 并行安全(出过事故)

5 个 worker 曾挤在同一个 Space 的同一个 page 上,297 页跨校串页、整批作废。

  • 每个 worker 自己新建 TaskSpace(不要复用别人已有的)
  • 每个 URL 独占 newPage(),不要共用 p1
  • 每取一页校验 page.url() 与目标一致;不一致 ⇒ 废掉重取
  • 成功收尾调一次 await task.finish({ keep: [] });因错误停止就别调,把 spaceId 报上来

6. 反面清单(不要做)

  • ❌ 从 sitemap 全量枚举 URL(上万个,绝大部分无关)
  • ❌ 逐页核每一条(用抽样代替)
  • ❌ 在解析器里写死「哪些名字算组」「哪些学校跳过」的名单(判据必须来自源站结构/页面内容)
  • ❌ 把 Pure 当主源或唯一源(⚠️ 2026-09-24 修正,见下)
    • 已实证:ANU 的 Pure 最细是 Department,导师个人页的 organisations 只有 1 个行政单位 ⇒ 对 ANU 这类,Pure 里根本没有"组"这一层,抽出来的全是组织架构
    • 但同样已实证(巴斯):有 11 个组只存在于 Pure(RaCE / EMaCS / BathCTI / CSCT / CEI / CREA / ADBL / MENASP / REVEAL …),主站 sitemap 里没有任何对应页面。 照"不用 Pure"字面执行会漏 11 组(119→108,−9.2%)
    • ⇒ 正确规则(条件式): 主源是院系站(院系导航 → /research/ → 组目录); Pure 作为补充源 —— 只在同时满足时收:① 源站 type ∈ 研究类 ② 页面有具名负责人 ③ 粒度是一个导师能带的规模。 既不当主源,也不整个不用。
    • 判别某校该不该用 Pure 补充:看它 Pure 的 type facet 里有没有研究类 type(Bristol/Bath 有; ANU/Monash 没有)。没有 ⇒ 该校 Pure 对"组"零贡献。
  • ❌ 用一条绝对规则套所有学校(每一次"ANU 所以所有学校都这样"的推广,都在巴斯被证伪了)