Twitter のレコメンデーション アルゴリズムは、Twitter 製品のすべての画面 (For You タイムライン、検索、探索、通知など) にわたってツイートやその他のコンテンツのフィードを提供する役割を担う一連のサービスとジョブです。アルゴリズムの仕組みの概要については、エンジニアリング ブログを参照してください。
Twitter の製品サーフェスは、共有されたデータ、モデル、ソフトウェア フレームワークのセットに基づいて構築されています。このリポジトリに含まれる共有コンポーネントは次のとおりです。
タイプ | 成分 | 説明 |
---|---|---|
データ | トゥイーティーピー | Tweet データの読み取りと書き込みを処理するコア Tweet サービス。 |
統合ユーザーアクション | Twitter 上のユーザー アクションのリアルタイム ストリーム。 | |
ユーザーシグナルサービス | 明示的(いいね、返信など)および暗黙的(プロフィール訪問、ツイートのクリックなど)のユーザーシグナルを取得する一元化されたプラットフォーム。 | |
モデル | シムクラスター | コミュニティの検出とそれらのコミュニティへのスパース埋め込み。 |
トゥヒン | ユーザーとツイートの高密度ナレッジ グラフ埋め込み。 | |
信頼と安全のモデル | NSFW または不正なコンテンツを検出するためのモデル。 | |
実数グラフ | Twitter ユーザーが別のユーザーと対話する可能性を予測するモデル。 | |
ツイートした | Twitter ユーザーの評判を計算するためのページランク アルゴリズム。 | |
レコインジェクター | GraphJet ベースのサービスの入力ストリームを構築するためのストリーミング イベント プロセッサ。 | |
グラフ機能サービス | ユーザーの有向ペアのグラフ機能を提供します (例: ユーザー A がフォローしているユーザー B からのいいね! ツイートの数)。 | |
トピック-社会的証明 | 個々のツイートに関連するトピックを特定します。 | |
代表得点者 | 埋め込み類似度を使用して、エンティティのペア (ユーザー、ツイートなど) 間のスコアを計算します。 | |
ソフトウェアフレームワーク | ナビ | Rust で書かれた高性能の機械学習モデルを提供します。 |
プロダクトミキサー | コンテンツのフィードを構築するためのソフトウェア フレームワーク。 | |
タイムライン集約フレームワーク | 集合的な特徴をバッチまたはリアルタイムで生成するためのフレームワーク。 | |
代表取締役 | 埋め込みを取得するサービス (つまり、SimClusers と TwHIN)。 | |
twml | TensorFlow v1 に基づいて構築されたレガシー機械学習フレームワーク。 |
このリポジトリに現在含まれている製品サーフェスは、For You タイムラインと推奨通知です。
以下の図は、主要なサービスとジョブがどのように相互接続して For You タイムラインを構築するかを示しています。
このリポジトリに含まれる For You タイムラインのコア コンポーネントは次のとおりです。
タイプ | 成分 | 説明 |
---|---|---|
候補ソース | 検索インデックス | ネットワーク内のツイートを検索してランク付けします。ツイートの約 50% がこの候補ソースからのものです。 |
CRミキサー | 基盤となるコンピューティング サービスからネットワーク外のツイート候補を取得するための調整層。 | |
ユーザーツイートエンティティグラフ (UTEG) | ユーザーとツイートのインタラクション グラフをメモリ内に維持し、このグラフの走査に基づいて候補を見つけます。これは GraphJet フレームワークに基づいて構築されています。他のいくつかの GraphJet ベースの機能と候補ソースがここにあります。 | |
フォロー推奨サービス (FRS) | フォローすべきアカウントの推奨事項と、それらのアカウントからのツイートをユーザーに提供します。 | |
ランキング | ライトランカー | ツイートをランク付けするために検索インデックス (Earlybird) で使用されるライト ランカー モデル。 |
ヘビーランカー | ツイート候補をランク付けするためのニューラル ネットワーク。タイムラインのツイート投稿候補ソースを選択するために使用される主なシグナルの 1 つ。 | |
ツイートのミキシングとフィルタリング | ホームミキサー | ホーム タイムラインの構築と提供に使用される主なサービス。プロダクトミキサーに基づいて構築されています。 |
可視性フィルター | Twitter コンテンツのフィルタリングを担当して、法令順守をサポートし、製品の品質を向上させ、ユーザーの信頼を高め、ハード フィルタリング、目に見える製品の扱い、および粗粒度のダウンランキングの使用を通じて収益を保護します。 | |
タイムラインランカー | Earlybird Search Index と UTEG サービスから関連性スコアを付けたツイートを提供するレガシー サービス。 |
このリポジトリに含まれる推奨通知のコア コンポーネントは次のとおりです。
タイプ | 成分 | 説明 |
---|---|---|
サービス | プッシュサービス | Twitter の主なレコメンデーション サービスでは、通知を通じてユーザーにレコメンデーションを表示していました。 |
ランキング | プッシュサービス-ライト-ランカー | ツイートをランク付けするためにプッシュサービスによって使用されるライト ランカー モデル。初期の巨大な候補プールから関連性の高い候補を事前に選択することで、候補の生成と重いランキングを橋渡しします。 |
プッシュサービスヘビーランカー | ターゲット ユーザーが送信された通知を開いて操作する確率を予測するマルチタスク学習モデル。 |
ほとんどのコンポーネントには Bazel BUILD ファイルが含まれていますが、トップレベルの BUILD または WORKSPACE ファイルは含まれていません。将来的には、より完全なビルドおよびテスト システムを追加する予定です。
私たちはコミュニティに GitHub の問題を送信し、推奨アルゴリズムの改善に関する提案を求めるプル リクエストを招待します。私たちはこれらの提案を管理し、変更を内部リポジトリに同期するためのツールの開発に取り組んでいます。セキュリティ上の懸念や問題は、HackerOne を通じて公式のバグ報奨金プログラムに送られる必要があります。私たちは、グローバル コミュニティの集合知と専門知識を活用して問題を特定し、改善を提案し、最終的にはより良い Twitter につながることを期待しています。
オープンソースへの取り組みに関するブログはこちらからお読みください。