| |
| """Structured Data Position Bias — Master Runner""" |
| import argparse |
| import logging |
| import os |
| import sys |
|
|
| from experiments.json_retrieval import run_json_retrieval |
| from experiments.table_retrieval import run_table_retrieval |
| from experiments.log_file_retrieval import run_log_retrieval |
| from src.utils import save_json |
|
|
| logging.basicConfig( |
| format="%(asctime)s - %(levelname)s - %(message)s", |
| level=logging.INFO, |
| stream=sys.stdout, |
| ) |
| logger = logging.getLogger(__name__) |
|
|
|
|
| def parse_args(): |
| p = argparse.ArgumentParser(description="Structured Data Position Bias") |
| p.add_argument("--model", default="Qwen/Qwen2.5-1.5B-Instruct") |
| p.add_argument("--output", default="./results") |
| p.add_argument("--num-items", type=int, default=100) |
| p.add_argument("--num-examples", type=int, default=30) |
| return p.parse_args() |
|
|
|
|
| def main(): |
| args = parse_args() |
| model = args.model |
| out_root = args.output |
| os.makedirs(out_root, exist_ok=True) |
|
|
| logger.info("\n--- Experiment 1: JSON Array Retrieval ---") |
| json_results = run_json_retrieval( |
| model, args.num_items, args.num_examples, |
| os.path.join(out_root, "exp1_json"), |
| ) |
|
|
| logger.info("\n--- Experiment 2: Markdown Table Retrieval ---") |
| table_results = run_table_retrieval( |
| model, args.num_items, args.num_examples, |
| os.path.join(out_root, "exp2_table"), |
| ) |
|
|
| logger.info("\n--- Experiment 3: Log File Retrieval ---") |
| log_results = run_log_retrieval( |
| model, args.num_items, args.num_examples, |
| os.path.join(out_root, "exp3_log"), |
| ) |
|
|
| master = { |
| "json": json_results, |
| "table": table_results, |
| "log": log_results, |
| } |
| save_json(os.path.join(out_root, "master_summary.json"), master) |
|
|
| logger.info("\n--- Structured Data PBI Comparison ---") |
| for exp_name, res in master.items(): |
| depths = list(res["depths"].keys()) |
| accs = list(res["depths"].values()) |
| if len(accs) >= 3: |
| mid_idx = len(accs) // 2 |
| pbi = (accs[0] + accs[-1]) / 2 - accs[mid_idx] |
| logger.info(f" {exp_name:10s} PBI={pbi:+.3f}") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|