src/data_loader¶
阶段 1 模块,负责原始数据的加载和清洗。
函数¶
decode_abstract(inverted_index: dict) → str¶
从 OpenAlex 倒排索引格式重建可读的摘要文本。
参数:
| 名称 | 类型 | 说明 |
|---|---|---|
inverted_index |
dict |
单词到位置列表的映射,如 {"the": [0, 5], "Nobel": [1]} |
返回值: 重建的摘要字符串。输入为空/None 时返回 ""。
load_laureates(data_dir: str) → pl.DataFrame¶
从指定目录加载 laureate.csv。
参数:
| 名称 | 类型 | 说明 |
|---|---|---|
data_dir |
str |
db_data/ 目录路径 |
返回值: 包含得主记录的 Polars DataFrame。
load_awards(data_dir: str) → pl.DataFrame¶
从指定目录加载 award_info.csv。
load_categories(data_dir: str) → pl.DataFrame¶
从指定目录加载 nobel_prize_category.csv。
load_laureate_matching(data_dir: str) → pl.DataFrame¶
加载 laureate_openalex_matching.csv,用于得主 ↔ OpenAlex 作者 ID 匹配。
load_institutions(data_dir: str) → pl.DataFrame¶
从指定目录加载 institution.csv。
load_publications_sample(json_path: str, laureate_ids: list, max_per_laureate: int = 100) → pl.DataFrame¶
流式读取 JSONL 论文记录文件,按得主 ID 过滤。
参数:
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
json_path |
str |
— | publication_records.json 的路径 |
laureate_ids |
list[int] |
— | 要过滤的得主 ID |
max_per_laureate |
int |
100 |
每位得主最大论文数 |
返回值: 过滤后的论文记录 Polars DataFrame。
run(sample_mode: bool = True) → None¶
执行完整的阶段 1 流水线:
- 加载所有 CSV 数据
- 将奖项与类别关联
- 加载论文(样本或完整)
- 解码摘要
- 计算总引用数
- 保存 4 个 Parquet 文件到
output/clean_data/
参数:
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
sample_mode |
bool |
True |
为 True 时仅处理样本得主 |