อัลกอริทึมการแนะนำของ Twitter คือชุดบริการและงานที่รับผิดชอบในการให้บริการฟีดของทวีตและเนื้อหาอื่น ๆ ในทุกพื้นผิวผลิตภัณฑ์ของ Twitter (เช่น ไทม์ไลน์สำหรับคุณ การค้นหา สำรวจ การแจ้งเตือน) สำหรับคำแนะนำเกี่ยวกับวิธีการทำงานของอัลกอริทึม โปรดดูบล็อกวิศวกรรมของเรา
พื้นผิวผลิตภัณฑ์บน Twitter สร้างขึ้นจากชุดข้อมูล โมเดล และเฟรมเวิร์กซอฟต์แวร์ที่ใช้ร่วมกัน ส่วนประกอบที่ใช้ร่วมกันที่รวมอยู่ในที่เก็บนี้มีดังต่อไปนี้:
พิมพ์ | ส่วนประกอบ | คำอธิบาย |
---|---|---|
ข้อมูล | ทวีตตี้พาย | บริการ Core Tweet ที่จัดการการอ่านและการเขียนข้อมูลทวีต |
การกระทำของผู้ใช้แบบครบวงจร | สตรีมการกระทำของผู้ใช้แบบเรียลไทม์บน Twitter | |
บริการสัญญาณผู้ใช้ | แพลตฟอร์มแบบรวมศูนย์เพื่อดึงสัญญาณผู้ใช้ที่ชัดเจน (เช่น การถูกใจ การตอบกลับ) และโดยนัย (เช่น การเข้าชมโปรไฟล์ การคลิกทวีต) | |
แบบอย่าง | ซิมคลัสเตอร์ | การตรวจจับชุมชนและการฝังแบบกระจัดกระจายในชุมชนเหล่านั้น |
ทวิฮิน | การฝังกราฟความรู้หนาแน่นสำหรับผู้ใช้และทวีต | |
โมเดลความไว้วางใจและความปลอดภัย | รูปแบบการตรวจจับ NSFW หรือเนื้อหาที่ไม่เหมาะสม | |
กราฟจริง | แบบจำลองเพื่อคาดการณ์ความเป็นไปได้ที่ผู้ใช้ Twitter โต้ตอบกับผู้ใช้รายอื่น | |
ทวีคูณ | อัลกอริธึม Page-Rank สำหรับการคำนวณชื่อเสียงของผู้ใช้ Twitter | |
recos-หัวฉีด | ตัวประมวลผลเหตุการณ์การสตรีมสำหรับการสร้างสตรีมอินพุตสำหรับบริการที่ใช้ GraphJet | |
บริการคุณลักษณะกราฟ | ให้บริการคุณลักษณะกราฟสำหรับผู้ใช้คู่โดยตรง (เช่น จำนวนทวีตที่ชอบติดตามของผู้ใช้ A จากผู้ใช้ B) | |
หัวข้อหลักฐานทางสังคม | ระบุหัวข้อที่เกี่ยวข้องกับทวีตแต่ละรายการ | |
ตัวแทนผู้ทำประตู | คำนวณคะแนนระหว่างคู่ของเอนทิตี (ผู้ใช้ ทวีต ฯลฯ) โดยใช้การฝังความคล้ายคลึงกัน | |
กรอบซอฟต์แวร์ | นาวี | โมเดลแมชชีนเลิร์นนิงประสิทธิภาพสูงที่ให้บริการเขียนด้วยภาษา Rust |
เครื่องผสมผลิตภัณฑ์ | กรอบซอฟต์แวร์สำหรับสร้างฟีดเนื้อหา | |
กรอบเวลา-การรวมกลุ่ม | กรอบงานสำหรับการสร้างคุณสมบัติรวมเป็นชุดหรือแบบเรียลไทม์ | |
ตัวแทนผู้จัดการ | บริการเรียกข้อมูลการฝัง (เช่น SimClusers และ TwHIN) | |
twml | เฟรมเวิร์กแมชชีนเลิร์นนิงแบบเดิมที่สร้างบน TensorFlow v1 |
พื้นผิวของผลิตภัณฑ์ที่รวมอยู่ในพื้นที่เก็บข้อมูลนี้คือไทม์ไลน์ For You และการแจ้งเตือนที่แนะนำ
แผนภาพด้านล่างแสดงให้เห็นว่าบริการหลักและงานเชื่อมโยงกันเพื่อสร้างไทม์ไลน์สำหรับคุณได้อย่างไร
ส่วนประกอบหลักของ For You Timeline ที่รวมอยู่ในพื้นที่เก็บข้อมูลนี้มีดังต่อไปนี้:
พิมพ์ | ส่วนประกอบ | คำอธิบาย |
---|---|---|
แหล่งที่มาของผู้สมัคร | ดัชนีการค้นหา | ค้นหาและจัดอันดับทวีตในเครือข่าย ~50% ของทวีตมาจากแหล่งที่มาของผู้สมัครรายนี้ |
cr-มิกเซอร์ | เลเยอร์การประสานงานสำหรับการดึงผู้สมัครทวีตนอกเครือข่ายจากบริการประมวลผลพื้นฐาน | |
ผู้ใช้ทวีตเอนทิตีกราฟ (UTEG) | รักษากราฟการโต้ตอบของผู้ใช้เพื่อทวีตในหน่วยความจำ และค้นหาผู้สมัครตามการข้ามผ่านของกราฟนี้ สิ่งนี้สร้างขึ้นบนเฟรมเวิร์ก GraphJet คุณสมบัติอื่นๆ ที่ใช้ GraphJet และแหล่งที่มาของตัวเลือกอื่นๆ มีอยู่ที่นี่ | |
บริการติดตามคำแนะนำ (FRS) | ให้คำแนะนำแก่ผู้ใช้สำหรับบัญชีที่จะติดตาม และทวีตจากบัญชีเหล่านั้น | |
การจัดอันดับ | อันดับแสง | โมเดล Light Ranker ที่ใช้โดยดัชนีการค้นหา (Earlybird) เพื่อจัดอันดับทวีต |
อันดับหนัก | โครงข่ายประสาทเทียมสำหรับจัดอันดับทวีตของผู้สมัคร หนึ่งในสัญญาณหลักที่ใช้ในการเลือกไทม์ไลน์ ทวีต โพสต์การจัดหาผู้สมัคร | |
การผสมและการกรองทวีต | เครื่องผสมที่บ้าน | บริการหลักที่ใช้ในการสร้างและให้บริการ Home Timeline สร้างขึ้นบนเครื่องผสมผลิตภัณฑ์ |
ตัวกรองการมองเห็น | รับผิดชอบในการกรองเนื้อหา Twitter เพื่อสนับสนุนการปฏิบัติตามกฎหมาย ปรับปรุงคุณภาพผลิตภัณฑ์ เพิ่มความไว้วางใจของผู้ใช้ ปกป้องรายได้ผ่านการใช้การกรองแบบเข้มงวด การรักษาผลิตภัณฑ์ที่มองเห็นได้ และการลดอันดับแบบหยาบ | |
ลำดับเวลา | บริการเดิมที่ให้ทวีตที่มีคะแนนความเกี่ยวข้องจาก Earlybird Search Index และบริการ UTEG |
ส่วนประกอบหลักของการแจ้งเตือนที่แนะนำซึ่งรวมอยู่ในพื้นที่เก็บข้อมูลนี้มีดังต่อไปนี้:
พิมพ์ | ส่วนประกอบ | คำอธิบาย |
---|---|---|
บริการ | บริการผลักดัน | บริการแนะนำหลักที่ Twitter ใช้ในการแสดงคำแนะนำแก่ผู้ใช้ของเราผ่านการแจ้งเตือน |
การจัดอันดับ | pushservice-light-ranker | โมเดล Light Ranker ที่ใช้โดย pushservice เพื่อจัดอันดับทวีต เชื่อมโยงการสร้างผู้สมัครและการจัดอันดับจำนวนมากโดยการคัดเลือกผู้สมัครที่มีความเกี่ยวข้องสูงล่วงหน้าจากกลุ่มผู้สมัครจำนวนมากเริ่มต้น |
pushservice-heavy-ranker | โมเดลการเรียนรู้แบบมัลติทาสก์เพื่อคาดการณ์ความน่าจะเป็นที่ผู้ใช้เป้าหมายจะเปิดและมีส่วนร่วมกับการแจ้งเตือนที่ส่งไป |
เรารวมไฟล์ Bazel BUILD สำหรับส่วนประกอบส่วนใหญ่ แต่ไม่ใช่ไฟล์ BUILD หรือ WORKSPACE ระดับบนสุด เราวางแผนที่จะเพิ่มระบบการสร้างและทดสอบที่สมบูรณ์ยิ่งขึ้นในอนาคต
เราขอเชิญชวนชุมชนให้ส่งปัญหา GitHub และดึงคำขอข้อเสนอแนะในการปรับปรุงอัลกอริทึมการแนะนำ เรากำลังพัฒนาเครื่องมือเพื่อจัดการคำแนะนำเหล่านี้และซิงค์การเปลี่ยนแปลงกับที่เก็บข้อมูลภายในของเรา ข้อกังวลหรือปัญหาด้านความปลอดภัยใดๆ ควรถูกส่งไปยังโปรแกรมรางวัลจุดบกพร่องอย่างเป็นทางการของเราผ่าน HackerOne เราหวังว่าจะได้รับประโยชน์จากสติปัญญาและความเชี่ยวชาญโดยรวมของชุมชนทั่วโลกในการช่วยเราระบุปัญหาและเสนอแนะการปรับปรุง ซึ่งท้ายที่สุดจะนำไปสู่ Twitter ที่ดีขึ้น
อ่านบล็อกของเราเกี่ยวกับโครงการริเริ่มโอเพ่นซอร์สที่นี่