跳转至

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 流水线:

  1. 加载所有 CSV 数据
  2. 将奖项与类别关联
  3. 加载论文(样本或完整)
  4. 解码摘要
  5. 计算总引用数
  6. 保存 4 个 Parquet 文件到 output/clean_data/

参数:

名称 类型 默认值 说明
sample_mode bool True 为 True 时仅处理样本得主