
# -*- coding: utf-8 -*-
"""
compare_judgement_single.py
（找difficult/medium/easy dataset）
比较单个模型文件与人工标注文件（GROUND_TRUTH_PATH），
输出所有 judge_result 与 label 不一致的样本到一个新的 json 文件中，
并重新编号 id。
"""

import json
from pathlib import Path

# ========= 配置区：按需修改 ========= #
GROUND_TRUTH_PATH = Path(
    
)  # 含 "label" 的文件

MODEL_FILE = Path(
   
)  # 模型输出文件（含 judge_result 的文件）

OUTPUT_FILE = Path(
    
)  # 输出路径
# =================================== #


def load_json(path: Path):
    """读取 JSON（数组形式）。"""
    with path.open("r", encoding="utf-8") as f:
        return json.load(f)


def main():
    # 1. 加载标准答案与模型结果
    truth_data = load_json(GROUND_TRUTH_PATH)
    model_data = load_json(MODEL_FILE)

    # 转换为 {id: label}
    truth_dict = {str(item["id"]): item["label"] for item in truth_data}

    mismatches = []

    # 2. 遍历模型预测结果
    for item in model_data:
        _id = str(item["id"])  # 保持统一 str
        label = truth_dict.get(_id)

        if label is None:
            # 如果标准答案没有这个 id，跳过
            continue

        judge_result = item.get("judge_result") or item.get("judge result")

        if judge_result != label:
            mismatches.append(item)

    # 3. 重新编号 id
    for new_id, item in enumerate(mismatches, start=1):
        item["id"] = new_id

    # 4. 保存到新文件
    with OUTPUT_FILE.open("w", encoding="utf-8") as f:
        json.dump(mismatches, f, ensure_ascii=False, indent=2)

    print(f"对比完成！共有 {len(mismatches)} 条不一致数据，已保存到: {OUTPUT_FILE}")


if __name__ == "__main__":
    main()
