本文へ移動
X解体新書
第11章第五部7分

多様化と最終三十五件

似た投稿を間引き、上位50件を選び、投稿は35件に絞られる。

この章で分かること

  • 多様化が「点数を少し下げる」ではないと分かる
  • 最終的な表示件数と枠の配置を把握できる
  • 広告が入る条件が分かる

点数が出そろったあと、似た投稿ばかりにならないよう間引く工程があります。やり方が少し変わっています。

点数は変えず、選外を0にする

多様化を担当するのは vm-ranker という別サービスです。投稿の意味的な近さを見て選抜しますが、選ばれた投稿の点数はそのままです。

if selected_ids.contains(&c.tweet_id) {
    s.unwrap_or(0.0)   // 選ばれた → そのまま
} else {
    0.0                // 選外   → 0にする
}
dpp_model.rs:196-206

選抜のアルゴリズムは行列式点過程(DPP)といって、「良さ」と「バラけ具合」を同時に見る数学的な手法です。公開既定では、点数上位150件をプールに、θ=0.65 で調整します。選ぶ件数の既定は50件です。params.rs:235-253 args.rs:18-19

なお、このサービスの呼び出しに失敗した場合は、多様化なしでフィードが出ます(フェイルオープン)。このとき、同一作者の減衰とフォロー外割引も掛かりません。vm_ranker.rs:107-113

最終的な枠

  • 集めた候補(上限の合計)3,500件
    フォロー中1200+Phoenix 1000+類似800+人気500
  • 予測に進む予算2,800件
    経路の比率を保って間引く
  • 多様化の選抜50件
    意味の近さで間引く
  • 上位選抜50件
    点数順に切り出す
  • 最終的な投稿35件
    1回のレスポンスに載る投稿数
上限まで集まった場合で、表示されるのは約1%です。件数は上限の目安です。 config.rs:17-22
枠件数・位置
通常の投稿35件
モジュール枠5件(前回は4件)
Jetfuelフレーム8件(機能は既定オフ)
1回のレスポンス合計最大48件
おすすめユーザー(Who to Follow)6番目
動画カルーセル6番目(既定オフ)
プロンプト先頭
フィードアンケート12番目(既定オフ)
config.rs:17-35 param.rs:1141-1208

広告の入り方

既定の広告配置(multi_risk)では、投稿が5件以上ないと広告は挿入されません。広告同士の間隔は3件を要求値としています。util.rs:9-11 param.rs:931-936

次に開いたときの話