# aipf_dm_metric

本项目用于离线评估和优化尺子评判流程。当前示例以 `example/yss_ruler_eval` 为入口，通过 `model_runner` 串起数据准备、`find_positions` 打分和最终评估。

我们的目标是：

- 优化尺子评判流程
- 减少比较次数
- 在效果不低于原始方法的前提下提升效率

## 使用方法

### 1. 安装依赖

建议先创建 Python 3.10+ 虚拟环境，然后安装项目依赖：

```bash
pip install -r requirements.txt
```

### 2. 准备外部依赖

本项目依赖外部的 `model_runner` 目录。当前示例脚本默认使用：

```bash
/mnt/bn/tns-algo-ue-my/boyuzhang01/model_runner_i18n
```

如果你的 `model_runner` 路径不同，请先修改 `adhoc_run.sh` 中的对应路径。

### 3. 启动评估任务

在仓库根目录执行：

```bash
bash adhoc_run.sh
```

脚本实际会调用：

```bash
bash run.sh /mnt/bn/tns-algo-ue-my/boyuzhang01/model_runner_i18n \
  python3 script/run_config.py \
  --config /mnt/bn/tns-algo-ue-my/boyuzhang01/aipf_dm_metric/example/yss_ruler_eval/aip_evr_youth_v2.cfg \
  --parameters date=20260429
```

如果需要评估其他日期，可以修改 `adhoc_run.sh` 中的 `date` 参数。

## 运行产物

任务运行后，项目产物会生成在：

```bash
example/yss_ruler_eval/runs/{date}/{run_id}/
```

常见目录如下：

- `intermediate/`：中间输入与转换结果
- `configs/`：运行时生成的配置
- `outputs/`：最终评估输出
- `logs/`：运行日志

其中 `outputs/` 包含最终尺子评判结果以及和 groundtruth 对比后的评估结果，重点关注：

- `youth_sexual_and_physical_abuse_case_results_{date}.jsonl`
- `youth_sexual_and_physical_abuse_metrics_{date}.json`

## 评估流程说明

`example/yss_ruler_eval` 当前流程主要分为三步：

1. 从 `example/yss_ruler_eval/data/aipf_golden_set.csv` 读取 groundtruth 数据
2. 调用 `find_positions` 对样本进行尺子评判
3. 将尺子评判结果与 groundtruth 做比较，输出逐条 case 结果和汇总指标

因此，这个示例主要用于验证新的尺子评判策略是否能够：

- 减少比较次数
- 保持或优于原始方案的评估效果

## 关键文件

- `adhoc_run.sh`：示例启动脚本
- `example/yss_ruler_eval/aip_evr_youth_v2.cfg`：离线评估工作流配置
- `example/yss_ruler_eval/pipeline.yaml`：尺子、阈值和评估配置
- `example/yss_ruler_eval/data/aipf_golden_set.csv`：groundtruth 输入数据
