DESIGN / CODE / INFRA / AI

解説

AIに上位3件を選ばせる前に:同点・並び順・件数の条件を決めよう

売上の上位3件を出してもらったら、別の集計では4件になった。どちらかが計算を間違えたのではなく、同点の扱いが決まっていないのかもしれないよ。

AIに上位3件を選ばせる前に:同点・並び順・件数の条件を決めよう
保存リストを見る →
この記事の道しるべ 5項目

売上の上位3件を出してもらったら、別の集計では4件になった。どちらかが計算を間違えたのではなく、同点の扱いが決まっていないのかもしれないよ。

ここでは架空の四つの記録を使い、AIへランキングを依頼する条件を整理する。実際の個人成績や顧客データは使わず、表をそのまま検算するよ。

「上位3件」と「3位以内」

ID 点数
A 100
B 90
C 80
D 80

必ず3件なら、80点の二つのうちどちらかを選ぶ必要がある。3番目の点数以上をすべて含むなら、A・B・C・Dの4件になる。

順位の付け方にも、同率の次を飛ばす方式や、飛ばさない方式がある。表の見出しが「順位」だけでは、どの規則か分からないことがあるよ。

一件を選ぶ根拠を明記する

同点ならIDの昇順、受付時刻の早い順など、目的に合う第2の条件を決めよう。AIに任せて、理由のない好みで一つを落とさせないようにしたいね。

依頼例は「点数の降順、同点はIDの昇順で、必ず3件を返してください。元の点数を変えず、除外された同点の記録も別に示してください」。

Pythonで同じ条件を照合する

rows = [('A', 100), ('B', 90), ('C', 80), ('D', 80)]
ordered = sorted(rows, key=lambda row: (-row[1], row[0]))
print([row[0] for row in ordered[:3]])
cutoff = ordered[2][1]
print([row[0] for row in ordered if row[1] >= cutoff])

最初はA・B・C、次はA・B・C・Dになる。点数は同じでも、出力する集合の条件が違う例だよ。この小さな計算をPythonで実行して確かめている。

Pythonのソートは安定で、同じキーの入力順を保つ。ただし、入力順が毎回同じとは限らない集計では、必要な並びを明示する方が確認しやすい。安定ソートだけで、事業上の同点ルールが決まるわけではないんだ。

出力の確認項目

  1. 件数を固定するか、同点を全件含むか。
  2. 同点を一件へ絞るときの条件は何か。
  3. 空欄や不正な点数はどう扱うか。
  4. 元の値と出力順が一致するか。
  5. 同点の境界で結果が変わらないか。

重複の単位はIDと表示名を分ける確認、評価例は境界のケースへ。

参照した公式資料

確認日:2026年10月24日。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。