第11章第五部6分
多様化と最終三十五件
似た投稿を間引き、上位50件を選び、投稿は35件に絞られる。
この章で分かること
- 多様化が「点数を下げる」ではないと分かる
- 最終的な表示件数と枠の配置を把握できる
- 広告が入る条件が分かる
点数が出そろったあと、似た投稿ばかりにならないよう間引く工程があります。ここのやり方が、少し変わっています。
点数は変えず、選外を0にする
多様化を担当するのは VMRanker という別サービスです。投稿の意味的な近さを見て選抜しますが、選ばれた投稿の点数は一切変更しません。
score: if selected_ids.contains(&c.tweet_id) {
c.score.unwrap_or(0.0) // 選ばれた → そのまま
} else {
0.0 // 選外 → 0にする
}選抜のアルゴリズムは行列式点過程(DPP)といって、「良さ」と「バラけ具合」を同時に最大化する数学的な手法です。上位150件をプールにして、そこから最大50件を選びます。
なお、このサービスが落ちた場合は多様化なしでフィードが出ます(フェイルオープン設計)。止まって表示されないより、多様性を諦めて表示する、という判断です。
最終的な枠
- 集めた候補3,000件フォロー中1200+フォロー外1000+類似800
- 多様化の選抜50件意味の近さで間引く
- 上位選抜50件点数順に切り出す
- 最終的な投稿35件1回のレスポンスに載る投稿数
| 枠 | 件数・位置 |
|---|---|
| 通常の投稿 | 35件 |
| モジュール枠 | 4件 |
| Jetfuelフレーム | 8件 |
| 1回のレスポンス合計 | 最大47件 |
| おすすめユーザー(Who to Follow) | 6番目 |
| プロンプト | 先頭 |
| フィードアンケート | 12番目 |
広告の入り方
広告は投稿が5件以上ないと挿入されません。広告同士は最低3件の間隔を空けます。
次に開いたときの話
表示された投稿は記録され、次回以降のフィルタで使われます。
- 直近10分・最大100件に配信された投稿は再配信されません
- 配信履歴は直近50レスポンスぶん保持されます
- 候補のキャッシュは180秒・最大750件(点数が正のものだけ)