| # Model Info |
|
|
| ## 当前默认模型与元数据 |
|
|
| - 法条预测权重:`model/provision_predictor/groupy_legal_provision.best.pt` |
| - 法条模型指标:`model/provision_predictor/groupy_legal_provision.best.json` |
| - 法条标签映射:`model/provision_predictor/label_map.json` |
| - 法条分组映射:`model/provision_predictor/label_group0.npy` |
| - 分区模型:`model/partition_predictor/best_model.pt` |
| - 分区词表:`model/partition_predictor/vocab.json` |
| - 分区配置:`model/partition_predictor/model_meta.json` |
|
|
| ## 说明 |
|
|
| - `label_map.json` 与 `label_group0.npy` 已内置,用于去除对训练数据目录和外部文件的依赖。 |
| - `code/pipeline/run_inference_pipeline.py` 直接读取以上文件,可独立运行。 |
|
|
| ## 最优指标(来自 `groupy_legal_provision.best.json`) |
|
|
| - `epoch`: 9 |
| - `p1`: 0.8569037656903765 |
| - `p3`: 0.7338912133891213 |
| - `p5`: 0.5914644351464435 |
| - `g_p1`: 0.8828451882845189 |
| - `g_p3`: 0.7523012552301256 |
| - `g_p5`: 0.5814225941422595 |
|
|
| ## 指标计算方式(与训练代码一致) |
|
|
| 以下定义对应 `LightXML_B/src/model.py` 中 `get_accuracy` 与 `one_epoch(eval)` 的实现。 |
|
|
| ### 1) 法条层指标:`p1 / p3 / p5` |
|
|
| 对每个样本 `i`: |
|
|
| - 真实法条集合:`Y_i` |
| - 模型输出 Top-k 法条集合:`Ŷ_i@k`(`k` 取 1、3、5) |
| - 命中数:`hit_i@k = |Y_i ∩ Ŷ_i@k|` |
|
|
| 在验证集总样本数为 `N` 时: |
|
|
| - `acc@k = Σ_i hit_i@k` |
| - `p@k = acc@k / (N * k)` |
|
|
| 因此: |
|
|
| - `p1 = acc1 / N` |
| - `p3 = acc3 / (N * 3)` |
| - `p5 = acc5 / (N * 5)` |
|
|
| ### 2) 分组层指标:`g_p1 / g_p3 / g_p5` |
| |
| 分组头(group head)同样用 Precision@k 统计,只是标签空间从“法条”换成“分组”。 |
| |
| 对每个样本 `i`: |
| |
| - 真实分组集合:`G_i` |
| - 分组头 Top-k 预测集合:`Ĝ_i@k` |
| - 命中数:`g_hit_i@k = |G_i ∩ Ĝ_i@k|` |
|
|
| 在 `N` 个样本上: |
|
|
| - `g_acc@k = Σ_i g_hit_i@k` |
| - `g_p@k = g_acc@k / (N * k)` |
|
|
| 因此: |
|
|
| - `g_p1 = g_acc1 / N` |
| - `g_p3 = g_acc3 / (N * 3)` |
| - `g_p5 = g_acc5 / (N * 5)` |
|
|
| ### 3) 直观解释 |
|
|
| - `p1=0.8569`:平均看,每条样本 Top1 预测有 `85.69%` 命中真实法条。 |
| - `p5=0.5915`:平均看,每条样本 Top5 中有 `59.15%` 是真实法条(Top5 平均命中约 `2.96` 条)。 |
| - `g_p*`:分组预测层面的同口径指标,用于评估候选分组阶段质量。 |
|
|
| ## 推荐调用 |
|
|
| 在项目根目录执行: |
|
|
| ```powershell |
| & '.\.venv\Scripts\python.exe' 'LightXML_B\Inference of LightXML\code\run_inference_pipeline.py' ` |
| --model-path 'LightXML_B\Inference of LightXML\model\provision_predictor\groupy_legal_provision.best.pt' ` |
| --label-map-path 'LightXML_B\Inference of LightXML\model\provision_predictor\label_map.json' ` |
| --group-y-path 'LightXML_B\Inference of LightXML\model\provision_predictor\label_group0.npy' ` |
| --partition-model-path 'LightXML_B\Inference of LightXML\model\partition_predictor\best_model.pt' ` |
| --partition-vocab-path 'LightXML_B\Inference of LightXML\model\partition_predictor\vocab.json' ` |
| --input-file 'LightXML_B\Inference of LightXML\data\input\sample_raw_input_5.jsonl' ` |
| --output-zoned 'LightXML_B\Inference of LightXML\data\intermediate\sample_zoned_output_5.json' ` |
| --output-pred 'LightXML_B\Inference of LightXML\results\sample_predictions_5.json' ` |
| --max-items 5 ` |
| --device cuda |
| ``` |
|
|