流水线概览¶
诺贝尔奖知识图谱通过 6 阶段流水线构建,每个阶段处理数据转换过程的特定方面。
流水线阶段¶
flowchart LR
P1[阶段 1<br>数据加载] --> P15[阶段 1.5<br>内容富化]
P15 --> P2a[阶段 2a<br>OpenAlex 富化]
P2a --> P2b[阶段 2b<br>LLM 抽取]
P2b --> P34[阶段 3+4<br>图谱构建]
P34 --> P5[阶段 5<br>可视化]
P34 --> P6[阶段 6<br>洞见分析]
| 阶段 | 模块 | 预计耗时 | 说明 |
|---|---|---|---|
| 1 | data_loader.py |
~2 天 | 加载 CSV/JSON,解码摘要,清洗并输出 Parquet |
| 1.5 | content_enricher.py |
~1 天 | 通过 Semantic Scholar、OA PDF 富化论文 |
| 2a | openalex_enricher.py |
~1 天 | 从 OpenAlex API 添加概念/主题/领域 |
| 2b | concept_extractor.py |
~2 天 | 通过 GPT-4o-mini 抽取结构化概念 |
| 3+4 | graph_builder.py |
~2 天 | 构建 NetworkX 有向图,导出 JSON/GraphML |
| 5 | visualize.py |
~1 天 | 生成 3 个交互式 HTML 可视化 |
| 6 | insight_analyzer.py |
~1 天 | 分析图谱,生成 Markdown 洞见报告 |
运行流水线¶
完整运行¶
阶段选择¶
uv run python main.py --phase 1 # 仅数据加载
uv run python main.py --phase 1.5 # 仅内容富化
uv run python main.py --phase 2 # 概念抽取(2a + 2b)
uv run python main.py --phase 3 # 图谱构建
uv run python main.py --phase 5 # 可视化
uv run python main.py --phase 6 # 洞见分析
跳过选项¶
uv run python main.py --skip-llm # 跳过 LLM 抽取(阶段 2b)
uv run python main.py --skip-enrich # 跳过内容富化(阶段 1.5)
数据依赖¶
每个阶段依赖前序阶段的输出:
flowchart TD
CSV[CSV 文件] --> P1
JSONL[publication_records.json] --> P1
P1[阶段 1] -->|laureates.parquet<br>awards.parquet<br>publications.parquet<br>institutions.parquet| P15[阶段 1.5]
P15 -->|publications.parquet<br>已富化| P2a[阶段 2a]
P2a -->|publications.parquet<br>含概念| P2b[阶段 2b]
P2b -->|concepts.parquet<br>llm_extraction_raw.json| P34[阶段 3+4]
P1 -->|所有 Parquet 文件| P34
P34 -->|knowledge_graph.json| P5[阶段 5]
P34 -->|knowledge_graph.json| P6[阶段 6]
输出汇总¶
| 阶段 | 输出文件 | 位置 |
|---|---|---|
| 1 | laureates.parquet、awards.parquet、publications.parquet、institutions.parquet |
output/clean_data/ |
| 1.5 | 更新的 publications.parquet |
output/clean_data/ |
| 2a | 更新的 publications.parquet |
output/clean_data/ |
| 2b | llm_extraction_raw.json、concepts.parquet |
output/concepts/ |
| 3+4 | knowledge_graph.json、nodes.json、edges.json、knowledge_graph.graphml |
output/graph/ |
| 5 | network.html、timeline.html、heatmap.html |
output/viz/ |
| 6 | insight_report.md、insight_report.json |
output/reports/ |