一步步设计
先定义排序服务谁
虚构任务:给完全没写过 API 的读者挑选第一篇练习教程。目标不是选最全面的文章,而是让读者完成一次请求。拆成可操作性、初学者友好度、来源可核查性三维,分别写出观察依据,避免“优秀、一般、差”这种无法复核的标准。
给每个维度写有序档位
例:可操作性 0=没有步骤,1=只有概念,2=有步骤但缺输入或结果,3=有输入、步骤和预期结果。友好度看先修要求是否解释;来源看关键声明是否有可访问的原始依据。Score 返回数值仍需要按你定义的档位解读,不能假设任何评分都在 0–1。
统一量纲,再在代码里加权
本例三维范围都是 0–3,用 score / 3 归一化。示例权重为可操作性 0.5、友好度 0.3、来源 0.2,总和为 1。这些是教学假设,不是最佳权重。更换目标人群后应重新检查权重,保留原始分数与各项贡献。
把必过条件放在总分之前
授权无法确认、关键 API 说明明显过时的文章先进入复核,不让友好度弥补缺失依据。Score 高分不等于 confidence 高;低 confidence 或缺维度时不要默认填 0。填 0 会把“没有判断”误当“已判定很差”,应重试、复核或暂不参与排序。
做权重敏感性与人工对照
下表 A=(3,1,2)、B=(2,3,3),归一化后总分 A=0.733、B=0.833。若权重改为 (0.8,0.1,0.1),A=0.9、B=0.733,顺序翻转。请让标注者说明自己为何更偏好一篇,再检查评分标准;只调权重无法修复错误的原始判断。
完整走查 · 本站虚构样本
| 观察到什么 | 如何判断 | 代码怎么处理 |
|---|---|---|
| 教程 A:可操作3、友好1、来源2 | 0.5×1 + 0.3×⅓ + 0.2×⅔ = 0.733 | 基准权重下排第二 |
| 教程 B:可操作2、友好3、来源3 | 0.5×⅔ + 0.3×1 + 0.2×1 = 0.833 | 基准权重下排第一 |
| 教程 C:友好度缺失 | 缺失不等于0;总分不完整 | 待补评后再比较 |
可复制的设计草案
以下为本站原创示例。JSON 展示请求或输入形状;Python 仅计算虚构分数,不调用 API。真实接入仍需核对官方接口及任务策略。
# Offline arithmetic exercise: these are invented ratings.
weights = (0.5, 0.3, 0.2)
ratings = {"A": (3, 1, 2), "B": (2, 3, 3), "C": (2, None, 3)}
assert abs(sum(weights) - 1) < 1e-9
for item_id, values in ratings.items():
if any(value is None for value in values):
print(item_id, "pending review")
continue
assert all(0 <= value <= 3 for value in values)
contributions = [w * value / 3 for w, value in zip(weights, values)]
print(item_id, round(sum(contributions), 3), contributions)
# A: 0.733; B: 0.833; C: pending review设计我的任务容易踩的坑
- 混用 0–3 和 0–10 原始分数,较大尺度会悄悄主导排序。
- 把相似维度重复加权,例如清晰度与可读性几乎同义。
- 把总分写成通过概率。组合分是你的偏好函数,不是自动校准的概率。
TRY / THINK / COMPARE
先想一想,再看解析
教程总分 0.91,但关键 API 来源无法打开。能直接推荐给小白吗?
展开解析
先复核来源。如果可核查是硬条件,高分不能补偿未满足的条件。保留原分数以供诊断,但暂不放进推荐排序。
交付前检查
- 档位有可观察的定义,而非抽象形容词。
- 归一化范围与权重可复算,总和为1。
- 硬条件、缺失值和低 confidence 单独处理。
- 至少用两套合理权重检查排名变化。
常见问题
总分能当 confidence 吗?
不能。总分表达按你的权重组合的评价;confidence 表达模型对某个判断的确定程度。
权重该怎么定?
先明确读者任务,再用标注数据与错误案例验证;不存在适合所有任务的一组权重。
资料与延伸阅读
参考官方架构模式与 Datawhale 实战主题,本站独立编写讲解、案例与练习。示例为教学设计,未调用 API,不代表性能测试。