Files

125 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 课题组采集方法(活的方法件)
> 这份是**方法论**,不是某一校的报告。任务书从这里引用,**不要再各写一套**。
> 立此件的起因:用户指出「做事情不可能依次去枚举所有的 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 所以所有学校都这样"的推广,都在巴斯被证伪了**)