跳转至

src/concept_extractor

阶段 2b 模块,基于 LLM 的技术概念抽取。

常量

CONCEPT_EXTRACTION_PROMPT

GPT-4o-mini 的系统提示模板,指导模型:

  • 为每篇论文抽取 1-3 个关键技术概念
  • 将每个概念分类为 INTRODUCES(论文提出)或 APPLIES(论文应用)
  • 识别领域和子领域
  • 检测跨学科来源
  • 返回结构化 JSON

函数

extract_concepts_llm(paper: dict, client: OpenAI, model: str) → list[dict]

使用 LLM 从单篇论文中抽取结构化技术概念。

参数:

名称 类型 说明
paper dict 论文数据,包含键:titleabstractkeywordsyear
client OpenAI 已初始化的 OpenAI 客户端
model str 模型名称(如 gpt-4o-mini

返回值: 概念字典列表,每个包含:

{
    "name": str,              # 概念名称
    "field": str,             # 主要领域
    "subfield": str,          # 子学科
    "relationship": str,      # "INTRODUCES" | "APPLIES"
    "confidence": float,      # 0.0 - 1.0
    "cross_discipline_source": str | None  # 跨学科来源领域
}

异常处理: API 错误时返回空列表。


run() → None

执行完整的阶段 2b 流水线:

  1. 加载 publications.parquetawards.parquet
  2. 使用 settings.yaml 配置初始化 OpenAI 客户端
  3. 遍历论文,调用 LLM 进行概念抽取
  4. 保存原始响应到 output/concepts/llm_extraction_raw.json
  5. 扁平化并保存到 output/concepts/concepts.parquet

前置条件

需要设置 OPENAI_API_KEY 环境变量。