跳转至

阶段 2:概念抽取

此阶段有两个子阶段协同工作,从出版物中识别和抽取技术概念。

阶段 2a:OpenAlex 概念富化

模块: src/openalex_enricher.py

目标

通过 OpenAlex API 为每篇论文补充结构化的概念和主题数据,提供领域/学科分类。

处理流程

  1. 对每篇有 OpenAlex work ID 的论文,查询 OpenAlex API
  2. 提取 concepts(概念)、topics(主题)和主要 field(领域)分类
  3. 本地缓存响应以避免重复 API 调用
  4. 将富化列添加到论文 DataFrame

新增列

列名 类型 说明
openalex_concepts string (JSON) 含分数的概念列表
openalex_topics string (JSON) 主题分类
openalex_field string 主要领域(如 "Physics"、"Chemistry")

运行

uv run python main.py --phase 2    # 运行 2a 和 2b
uv run python -m src.openalex_enricher  # 独立运行

阶段 2b:LLM 概念抽取

模块: src/concept_extractor.py

目标

使用 GPT-4o-mini 从论文标题、摘要和关键词中抽取结构化技术概念。这是核心智能层,识别论文引入了什么概念与应用了什么概念。

分层策略

层级 选择标准 方法 论文数
Tier 1 获奖相关 + 引用 ≥ 500 LLM 深度抽取 ~1,000
Tier 2 引用 ≥ 50 关键词 + OpenAlex 概念 ~30,000
Tier 3 其余 仅关键词粗粒度标注 其余

LLM 抽取结构

对每篇论文,LLM 返回结构化 JSON:

{
  "concepts": [
    {
      "name": "Ubiquitin-Proteasome Pathway",
      "field": "Biology",
      "subfield": "Molecular Biology",
      "relationship": "INTRODUCES",
      "confidence": 0.95,
      "cross_discipline_source": null
    },
    {
      "name": "Protein Degradation",
      "field": "Biology",
      "subfield": "Biochemistry",
      "relationship": "APPLIES",
      "confidence": 0.85,
      "cross_discipline_source": "Chemistry"
    }
  ]
}

关键字段

字段 说明
name 概念名称(标准化)
field 主要学科领域
subfield 更细分的子学科
relationship INTRODUCES(论文提出)或 APPLIES(论文应用)
confidence 抽取置信度分数(0-1)
cross_discipline_source 如果概念源自其他领域

输出文件

文件 位置 说明
llm_extraction_raw.json output/concepts/ 所有处理论文的 LLM 原始响应
concepts.parquet output/concepts/ 扁平化的概念表

运行

uv run python main.py --phase 2      # 2a 和 2b
uv run python main.py --skip-llm     # 跳过 LLM(仅 2b)
uv run python -m src.concept_extractor  # 独立 LLM 抽取

API 成本

LLM 抽取需要 OpenAI API 密钥并产生 API 费用。分层策略将 Tier 1 限制在 ~1,000 篇论文,以保持成本可控(使用 GPT-4o-mini 约 $2-5)。