跳到主要内容

P5360. 客服质检终审分数与复核优先级预测

场次:2026年9月5日 · 类型:AI Coding · 来源:CodeFun2000 P5360

本题为 AI Coding 类型:没有传统输入输出与样例,交付物在 AICoder Gym 工作区按指标或契约评测。入口:AICoder Gym。

题目需求​

刷题链接

  1. 先明确任务本质和信息边界。 需要为一批“首审已经完成、但二审和仲裁尚未发生”的客服质检会话,同时预测最终终审分数和复核优先级。当前 --input 批次在预测时不能读取未来才会产生的二审、仲裁或终审结果;历史 train.csv、valid.csv 中已经成熟的 adjudicated_score,以及 reviewer_anchors.csv 中预测时点之前已经完成仲裁的 anchor_adjudicated_score 可以合法使用。核心要求是严格区分“历史可用标签”和“当前批次未来标签”,避免任何终审信息泄漏。

  2. 按照 data/SCHEMA.md 正确理解和使用字段。 train.csv 和 valid.csv 每行代表一条已经完成首审的客服质检会话,包含 reviewer_id、rubric_id、review_week、业务类别、风险特征、自动质检信号、primary_review_score 等字段;历史数据额外带有成熟的 adjudicated_score。正式 --input 与训练数据的首审阶段字段结构一致,但不包含 adjudicated_score。case_id 只是用于样本识别和最终输出对齐,不应作为具有业务顺序含义的普通数值特征使用。

  3. 充分利用历史锚点对审核员评分偏差进行校准。 reviewer_anchors.csv 中每条记录都是当前预测批次之前已经完成仲裁的历史锚点,包含 reviewer_id、rubric_id、anchor_primary_score、anchor_adjudicated_score、anchor_recorded_week 等信息。可以利用

    bias=primary score−adjudicated score\text{bias}=\text{primary score}-\text{adjudicated score}

    估计审核员长期偏高、偏低或在不同 rubric 下的系统性误差。最好考虑 reviewer_id × rubric_id、审核员整体偏差、rubric 整体偏差以及全局偏差之间的分层回退,不能假设验证或测试时所有审核员都一定在训练或锚点中出现。

  4. 训练一个能够预测最终终审分数的模型。 目标字段是历史数据中的 adjudicated_score,正式输出对应 adjusted_score。模型既可以使用 primary_review_score,也可以结合 automation_quality_score、clarity_signal、resolution_signal、compliance_signal、empathy_signal、issue_complexity、policy_risk_score、customer_sentiment、渠道、队列、rubric、审核员校准特征等信息。题目重点不是盲目堆复杂模型,而是预测结果真正反映“预计终审分”,尤其要纠正审核员可能存在的系统性首审偏差。最终必须满足

    0≤adjustedscore≤1000\leq adjusted_score\leq100

    且不能出现 NaN 或 Inf。

  5. 利用公开验证集进行离线回测和方案选择。 data/train.csv 可以用于构建预测模型,data/valid.csv 带有成熟的 adjudicated_score,可以用于公开回测、分组分析和调参。应重点检查整体预测误差,以及不同 rubric_id、不同审核员、不同时间段、新审核员或锚点稀疏情况下的表现。不能因为公开验证集有终审标签,就把其中的真实 adjudicated_score 直接加入预测特征或设计只适用于当前验证数据的规则。

  6. 为每条会话构造真正有业务意义的 review_priority。 系统在每个预测批次中会按照 review_priority 从高到低,只选择固定比例、约 8% 的会话进行二审,因此这个字段本质上代表“有限复核资源优先投向谁”。它不应该依赖输入行顺序,也不应简单复制 adjusted_score。合理的优先级可以综合预计首审纠偏幅度,例如

    ∣adjustedscore^−primaryreviewscore∣,|\widehat{adjusted_score}-primary_review_score|,

    再结合模型不确定性、审核员历史稳定性、rubric、风险和质量信号等信息。最终必须保证

    0≤reviewpriority≤10\leq review_priority\leq1

    且值越大表示越应该优先复核;相同优先级时系统会按 case_id 稳定排序。

  7. 严格实现命令行输入输出契约。 程序必须从 work/ 根目录运行,并支持:

    python3 main.py \
    --input <batch.csv> \
    --anchors <reviewer_anchors.csv> \
    --output <predictions.csv>

    --input 指向当前待预测批次,--anchors 指向预测时点前已经完成仲裁的锚点文件,--output 指定输出路径。程序需要能够创建必要的父目录,并创建或覆盖输出文件。不能假设测试时一定使用题目目录中的固定文件名。

  8. 输出文件必须严格满足 schema 和样本覆盖要求。 输出必须是 UTF-8 CSV,并且只能包含以下三列,列名和顺序严格一致:

    case_id,adjusted_score,review_priority

    输出必须恰好覆盖 --input 中的全部 case_id,不能新增、遗漏、重复或输出空 ID。评测会根据 case_id 进行对齐,而不是依赖 CSV 原始行顺序,因此算法不能利用“第几行”作为预测或优先级依据。所有数值都必须是合法有限值,并满足规定区间。

  9. 保证方案能处理未知审核员、锚点变化和不同数据 seed。 公开验证集可能出现训练集中没有见过的 reviewer_id,正式评测时锚点数量、审核员组成和数据分布也可能变化,因此不能把当前数据中的审核员、case ID、具体分数或固定排序硬编码进程序。对于没有 reviewer-specific anchors 的样本,应能够自动退化到 rubric 级、全局级或模型本身的预测。整个逻辑必须依赖字段和统计规律,而不是依赖当前这份数据中的某几个特殊值。

  10. 满足资源约束、可复现性要求并完成最终自检。 程序只能读取候选人可见的 data/ 文件以及命令行传入的输入和锚点文件,不能访问题目目录外的数据、网络或在线模型。如果模型训练、采样或初始化涉及随机过程,必须固定整数随机种子,确保相同输入得到稳定输出。完成后应至少自行检查:正式批次是否完全没有读取 adjudicated_score;anchors 是否全部属于预测时点前已经完成的历史资料;输出 case_id 是否与输入一一对应;adjusted_score 是否全部位于 [0,100];review_priority 是否全部位于 [0,1];是否存在 NaN/Inf;新审核员是否能正常预测;优先级是否真正反映潜在复核价值而不是输入顺序;连续运行两次是否得到完全稳定的结果;更换数据生成 seed 后程序是否仍能正常运行。

加载评论中...