LINUXTALKS.CO

Twitter открыл код компонентов, формирующих ленту рекомендованных сообщений

 

L


1

0

Twitter открыл исходные тексты набора "Recommendation Algorithm", включающего сервисы и обработчики, применяемые при построении ленты рекомендованных сообщений, показываемой пользователю на основной странице (Home Timeline). Кроме обеспечения прозрачности и предоставления возможности независимого аудита применяемых алгоритмов, Twitter выразил готовность принимать от сообщества pull-запросы с улучшающими работу алгоритмов изменениями, которые после рецензирования могут быть перенесены в рабочую кодовую базу Twitter.

Код открыт под лицензией AGPLv3. В реализации использованы языки программирования Scala (53.8%), Java (29.7%), Starlark (6.3%), Python (4.7%), C++ (2.4%) и Rust (1.5%). В отдельном репозитории опубликован код, связанный с применяемыми в Twitter моделями машинного обучения (сами модели не опубликованы из соображений безопасности и сохранения конфиденциальности). Не опубликованными также остаются компоненты для формирования рекламных рекомендаций.

Построение ленты рекомендаций разделено на три основные стадии:

  • Извлечение лучших твитов из разных источников (candidate sourcing). На данной стадии в качестве источников используются: система индексации search-index, охватывающая сообщения людей, на которые имеется подписка (In-Network); прослойка cr-mixer для извлечения сообщений из различных вспомогательных сервисов, охватывающих сообщения от людей, на которых не оформлена подписка (Out-of-Network); компонент user-tweet-entity-graph (UTEG) для извлечения сообщений с учётом графа взаимодействия текущего пользователя; сервис follow-recommendation-service (FRS) для формирования рекомендаций на основе активности отслеживаемых пользователей. В ленте примерно половина сообщений показывается от людей, на которых имеется подписка.
  • Ранжирование отобранных твитов с использованием модели машинного обучения. Применяется две системы ранжирования: модель light-ranker , использующая поисковый индекс, и нейронная сеть heavy-ranker для выбора наиболее релевантных кандидатов.
  • Применение фильтров и эвристики для отсеивания заблокированных, непристойных или уже просмотренных сообщений. Для формирования ленты используется компонент home-mixer, а для фильтрации система visibility-filters. Дополнительно открыт код старой системы timelineranker, применявшейся для извлечения твитов из поискового индекса.

Также открыт код вспомогательных компонентов:

  • simclusters-ann - определение сообществ со сходными интересами.
  • TwHIN - формирование графов знаний о пользователях и твитах (подписчики, выбранные пользователем твиты, клики на рекламу).
  • trust-and-safety-models - модели для выявления нежелательного, нецензурного и оскорбительного контента.
  • real-graph - модель для предсказания взаимодействия между разными пользователями.
  • tweepcred - алгоритм для вычисления репутации пользователя с учётом ссылок на его сообщения (Page-Rank).
  • recos-injector - обработчик потока событий, формирующий входные данные для сервисов GraphJet.
  • graph-feature-service - графовые функции для оценки взаимодействия двух пользователей, например, сколько пользователь "A" оценил твитов пользователя "B".
  • navi - высокопроизводительный сервер для обработки моделей машинного обучения (написан на Rust).
  • product-mixer - построитель лент с контентом из разных источников.
  • twml - старый фреймворк машинного обучения (ответвление от TensorFlow v1).

// cc-by opennet.ru
// converted with crypt’s opennet autoreposter

>>> Подробности

★★☆☆☆

Я вообще хуй знает как я этим говнищем пользуюсь

Раньше иногда твит мог внезапно съебаться куда-то, теперь это так постоянно. Листаешь ленту? Да пошёл ты нахуй, давай тебя в самый верх перекинем. И год от года становится только хуже

Ну а новый алгоритм рекомендаций этот просто пиздец, вон @Qwentor нравится

Впрочем, мне тоже. Я в Твиттер хожу деградировать, и в этом смысле новая лента замечательная, потому как с таким потоком отборных дегенератов отупение происходит строго по плану и даже с опережением

Kaschenko    
★★★★★
Android / Yandex
Ответ на: комментарий от Kaschenko

Мне не этим алгоритм понравился, а тем, что угадал мои интересы практически без какого-либо моего участия. Твиттер же задолго до войны блокнули. Ну я его с телефона удалил нафиг. Причем и до этого я им не пользовался практически совсем. Акк был, но как-то было не интересно. Медуза тогда ещё незаблочена была и Новая газета вроде тоже. Торренты с телефона не качаю. Соответственно VPN на телефоне был нафиг не нужен. Потом уже когда все нахуй поблокали и VPN стал необходимостью, война началась, я подумал, может мне вернуть Твиттер-то, все равно VPN на постоянку держу. Ну, я туда заглянул, а там уже без меня все подобрали по моим либерально-проукраинским интересам - только подписаться осталось - так и оставил Твиттер.

твит мог внезапно съебаться куда-то

Ага, видел, даже прямо на глазах

Листаешь ленту? Да пошёл ты нахуй, давай тебя в самый верх перекинем

А такого не видел

Я в Твиттер хожу деградировать

Я, внезапно, тоже. Ещё Тикток модифицированный для этого стоит, который в зарубежное пространство пускает, а не крутит российские ролики до марта 2022 как официальный.

Для чисто инфы у меня Feeder с подписками на RSS.

Qwentor    
★★★★★★
Android / Chrome
Ответ на: комментарий от Qwentor

А такого не видел

Да ладно. С мобилы? Я в твиторе года с 12, и как его (официальную приложуху) пидарасило, так и пидарасит - точно так же, как с улетающими хуй знает куда твитами, с тех пор мобил сменилось штук 10, проблема явно на стороне софта. И, видимо, для твиторских дегенератов это не баг, а фича

Kaschenko    
★★★★★
Android / Yandex
Ответ на: комментарий от Kaschenko

Хз. Вот пару дней твиттер не открывал - открываю ленту, а она там же, где была. Наоборот иногда самому наверх листать или домик жать приходится, чтобы новое появилось

Qwentor    
★★★★★★
Android / Chrome
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90