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 |
论文数据,包含键:title、abstract、keywords、year |
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 流水线:
- 加载
publications.parquet和awards.parquet - 使用
settings.yaml配置初始化 OpenAI 客户端 - 遍历论文,调用 LLM 进行概念抽取
- 保存原始响应到
output/concepts/llm_extraction_raw.json - 扁平化并保存到
output/concepts/concepts.parquet
前置条件
需要设置 OPENAI_API_KEY 环境变量。