Twitter 的推薦演算法是一組服務和作業,負責在所有Twitter 產品介面(例如For You 時間軸、搜尋、探索、通知)上提供推文和其他內容的提要。有關演算法工作原理的介紹,請參閱我們的工程部落格。
Twitter 的產品介面建構在一組共享的資料、模型和軟體框架之上。下面列出了此儲存庫中包含的共用元件:
類型 | 成分 | 描述 |
---|---|---|
數據 | 推特派 | 處理推文資料讀寫的核心推文服務。 |
統一使用者操作 | Twitter 上的使用者操作的即時串流。 | |
用戶訊號服務 | 用於檢索明確(例如按讚、回覆)和隱式(例如個人資料存取、推文點擊)使用者訊號的集中式平台。 | |
模型 | 模擬集群 | 社區檢測和稀疏嵌入到這些社區。 |
特威恩 | 使用者和推文的密集知識圖嵌入。 | |
信任與安全模型 | 用於偵測 NSFW 或濫用內容的模型。 | |
實圖 | 用於預測 Twitter 用戶與其他用戶互動的可能性的模型。 | |
tweepcred | 用於計算 Twitter 用戶聲譽的 Page-Rank 演算法。 | |
recos注射器 | 流事件處理器,用於為基於 GraphJet 的服務建立輸入流。 | |
圖特徵服務 | 為一對有向使用者提供圖形特徵(例如,使用者 A 的追蹤者中有多少人喜歡使用者 B 的推文)。 | |
主題社會證明 | 識別與各個推文相關的主題。 | |
代表得分手 | 使用嵌入相似性計算實體對(使用者、推文等)之間的分數。 | |
軟體框架 | 導航 | 用 Rust 編寫的高效能機器學習模型服務。 |
產品混合器 | 用於建構內容來源的軟體框架。 | |
時間軸聚合框架 | 用於批次或即時產生聚合特徵的框架。 | |
代表經理 | 檢索嵌入的服務(即 SimClusers 和 TwHIN)。 | |
特文 | 基於 TensorFlow v1 所建構的傳統機器學習架構。 |
目前包含在該儲存庫中的產品表面是「為您時間軸」和「建議通知」。
下圖說明了主要服務和工作如何相互關聯以建立「為您服務」時間表。
下面列出了此儲存庫中包含的 For You Timeline 的核心元件:
類型 | 成分 | 描述 |
---|---|---|
候選來源 | 搜尋索引 | 尋找網路內推文並對其進行排名。約 50% 的推文來自此候選來源。 |
cr-混合器 | 用於從底層運算服務取得網路外推文候選者的協調層。 | |
使用者推文實體圖 (UTEG) | 維護記憶體中的「使用者到推文」互動圖,並根據該圖的遍歷來尋找候選者。這是建立在 GraphJet 框架之上的。其他幾個基於 GraphJet 的功能和候選源位於此處。 | |
關注推薦服務 (FRS) | 為用戶提供要關注的帳戶的建議以及來自這些帳戶的推文。 | |
排行 | 輕排名者 | 搜尋索引(Earlybird)使用 LightRanker 模型對推文進行排名。 |
重排名者 | 用於對候選推文進行排名的神經網路。用於選擇時間軸的主要訊號之一推文發布候選人採購。 | |
推文混合和過濾 | 家用攪拌機 | 用於建置和服務主頁時間軸的主要服務。建立在產品混合器上。 |
可見性過濾器 | 負責過濾 Twitter 內容,以支援法律合規性、提高產品品質、增加用戶信任、透過使用硬過濾、可見產品處理和粗粒度降級來保護收入。 | |
時間軸排序器 | 傳統服務,提供來自 Earlybird 搜尋索引和 UTEG 服務的相關性評分推文。 |
下面列出了此儲存庫中包含的建議通知的核心元件:
類型 | 成分 | 描述 |
---|---|---|
服務 | 推播服務 | Twitter 的主要推薦服務用於透過通知向用戶提供推薦。 |
排行 | 推播服務輕排序 | Pushservice 使用 LightRanker 模型對推文進行排名。透過從最初的龐大候選者庫中預先選擇高度相關的候選者,將候選者生成和繁重的排名聯繫起來。 |
推播服務重新排序 | 多工學習模型可預測目標使用者開啟並參與發送的通知的機率。 |
我們包含大多數元件的 Bazel BUILD 文件,但不包含頂級 BUILD 或 WORKSPACE 文件。我們計劃在未來添加更完整的建置和測試系統。
我們邀請社群提交 GitHub 問題並請求改進推薦演算法的建議。我們正在開發工具來管理這些建議並將變更同步到我們的內部儲存庫。任何安全顧慮或問題都應透過 HackerOne 提交給我們的官方錯誤賞金計畫。我們希望受益於全球社群的集體智慧和專業知識,幫助我們發現問題並提出改進建議,最終打造出更好的 Twitter。
請在此閱讀我們有關開源計劃的部落格。