Алгоритмическое курирование в The Times используется в определенных частях нашего веб-сайта и приложений.

Сегодня New York Times опубликует около 250 статей, но большинство читателей увидят лишь часть из них. Большинство наших читателей обращаются к «Нью-Йорк Таймс» в Интернете, а не на бумаге, и часто используют небольшие устройства, что означает, что у нас есть проблема «недвижимости»: мы производим больше журналистских материалов, чем у нас есть место для показа читателям в любой момент времени.

Чтобы помочь нашим читателям открыть для себя широту наших репортажей, The Times экспериментирует с новыми способами донести до читателей больше нашей журналистики. Мы создаем ленты новостей в реальном времени, специализированные информационные бюллетени и настраиваемые части нашего новостного приложения. Мы также используем алгоритмы рекомендаций, чтобы выделить статьи, которые особенно актуальны для наших читателей.

Алгоритмическое курирование в The Times используется в определенных частях нашего веб-сайта и приложений. Мы используем его для выбора контента, для которого ручное управление было бы неэффективным или затруднительным, например, в разделе Умная жизнь на главной странице или в персонализированном информационном бюллетене Your Weekly Edition. Алгоритмы персонализации используются для дополнения редакционного суждения, определяющего, какие статьи приводят наш новостной репортаж.

Контекстно-рекомендательный подход

Один из принятых нами рекомендательных подходов использует класс алгоритмов, называемых контекстные многорукие бандиты. Контекстные бандиты со временем узнают, как люди взаимодействуют с конкретными статьями. Затем они рекомендуют статьи, которые, по их прогнозам, будут привлекать внимание читателей. Контекстная часть означает, что эти бандиты могут использовать дополнительную информацию, чтобы лучше оценить, насколько статья может заинтересовать конкретного читателя. Например, они могут учитывать географический регион читателя (например, страну или штат) или историю чтения, чтобы решить, будет ли конкретная статья актуальной для этого читателя.

Используемый нами алгоритм основан на простой линейной модели, которая связывает контекстную информацию - например, страну или штат, в котором находится читатель - с некоторой степенью взаимодействия с каждой статьей, например рейтингом кликов. При составлении новых рекомендаций он чаще выбирает статьи, если они имеют высокую ожидаемую вовлеченность в данном контексте.

Использование контекстных бандитов для рекомендаций по статьям

Одна из реализованных нами моделей - это геобандит, который пытается оптимизировать ожидаемую CTR набора статей в зависимости от состояния, в котором находится читатель. Чтобы проиллюстрировать это, предположим, что мы показали читателям две статьи - статью A и статью B, в которых собраны данные о штатах, в которых находились читатели, и о том, нажимали ли они на статьи.

[«Рекомендуется»: «статья B»; «Состояние читателя»: «Техас», «нажал»: «да»] [«рекомендовано»: «статья А»; «Состояние читателя»: «Нью-Йорк», «нажал»: «да»] [«рекомендовано»: «статья Б»; «Состояние читателя»: «Нью-Йорк», «нажал»: «нет»] [«рекомендовано»: «статья Б»; «Штат читателя»: «Калифорния», «нажал»: «нет»] [«рекомендовано»: «статья А»; «Состояние читателя»: «Нью-Йорк», «нажал»: «нет»]

Как только бандит будет обучен исходным данным, он может предложить статью A, статью B или новую статью C новому читателю из Нью-Йорка. Бандит, скорее всего, порекомендует статью А, потому что в прошлом у этой статьи был самый высокий рейтинг кликов среди читателей из Нью-Йорка. С некоторой меньшей вероятностью он также может попытаться показать статью C, потому что еще не знает, насколько она интересна, и ей нужно сгенерировать некоторые данные, чтобы узнать о ней.

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

Зачем нужна географическая информация?

Мы решили использовать приблизительное географическое местоположение, потому что это один из типов контекстной информации, которая легко доступна в веб-браузерах и приложениях. Хотя местоположение не всегда имеет отношение к потреблению новостей, некоторые части нашего отчета более актуальны для читателей в определенных частях США или мира.

Есть много других типов контекстной информации, некоторые из которых мы реализовали. Они включают тип устройства чтения; время суток, в котором находится читатель; сколько историй читатель просмотрел в определенном разделе новостей, по которым мы можем оценить интерес к определенной теме. Мы обнаружили, что в зависимости от типа статей, которые мы рекомендуем, разные виды контекстных переменных помогают модели работать лучше.

Выбираем наиболее подходящие из числа выбранных редакцией

Мы протестировали версию географического бандита, описанную выше, в модуле рекомендаций под названием «Выбор редакции», который отображается в правом столбце рядом с нашими статьями. Как следует из названия, редакторы выбирают для модуля около 30 достойных внимания журналистских работ. Затем мы используем геобандит, чтобы выбрать, какие именно статьи показывать читателям в зависимости от их местоположения (которое мы в целом определили для штата или региона).

Вот несколько примеров заголовков из статей, которые геобандит рекомендовал читателям в разных штатах.

Нью-Йорк

  1. Я знаю борьбу »: почему магнат пиццы оставил пироги на мемориалах 4 бездомным
  2. Ученые разработали лекарство только для одного пациента. Ее зовут Мила.
  3. В поисках идеального ломтика, хлеба и соли в Джерси-Сити взирает на Рим
  4. Телефоны живы, звуки Кэти Курик

Техас

  1. Когда моя школа в Луизиане и ее футбольная команда наконец прекратили сегрегацию
  2. Это индийский дом, по словам одного архитектора
  3. Суперяхты никому не нужны, но их продолжают продавать
  4. Телефоны живы, звуки Кэти Курик

Висконсин

  1. Когда моя школа в Луизиане и ее футбольная команда наконец прекратили сегрегацию
  2. Телефоны живы, звуки Кэти Курик
  3. 36 часов в Милуоки
  4. Суперяхты никому не нужны, но их продолжают продавать

Обратите внимание на то, что в рекомендации включены статьи, популярные во всех регионах («Телефоны живы, со звуками Кэти Курик»), а также отражают различные региональные интересы («36 часов в Милуоки»). Сделав регионально актуальные рекомендации, мы смогли повысить рейтинг кликов по модулю «Выбор редакции» на 55 процентов по сравнению со случайным выбором из пула статей, выбранных редакторами.

Как мы реализовали контекстные бандиты

Хотя базовый алгоритм относительно прост, контекстных бандитов может быть сложно реализовать. Бандитов необходимо постоянно переучивать, используя новые данные о взаимодействии читателей со статьями на главной странице Times или в приложениях. Это означает, что нам нужны не только точные данные о том, какие статьи читают читатели (данные о кликах), нам нужны точные данные о том, какие статьи были показаны читателям (данные о показах).

Дальнейшее усложнение реализации бандита - необходимость быстро выполнять эти вычисления. Когда читатели посещают нашу страницу, необходимо давать рекомендации в режиме реального времени, чтобы избежать пустых разделов страницы. Это требование реального времени также означает, что любая контекстная информация о читателе должна быть доступна нашему алгоритму вместе с запросом рекомендации.

Помня об этих требованиях, мы повторно обучаемся на самых последних данных, сгенерированных читателями, взаимодействующими с контентом на нашем сайте, и повторно развертываем модели бандитов каждые 15 минут. Модели развертываются через Kubernetes, а обучающие прогоны организуются с помощью заданий cron Kubernetes. Данные обучения поступают из нашего основного хранилища отслеживания событий в BigQuery.

Чтобы обеспечить точное измерение того, какие статьи были показаны читателям, а также данные о том, какие статьи были прочитаны полностью, мы внедрили отслеживание показов. Мы сочли особенно полезным хранить уникальный идентификатор для каждого показа статьи и переносить этот идентификатор каждый раз, когда читатель нажимает на статью. Это позволяет нам легко объединять впечатления и клики во время обучения.

Используя BigTable, мы поддерживаем хранилище с малой задержкой, которое позволяет нам быстро получить доступ к недавней истории чтения читателя; Мы используем статьи, которые читатель прочитал за последние 30 дней, для создания некоторых контекстных функций.

Мы написали наших контекстных бандитов на Python, но, чтобы гарантировать, что они могут реагировать достаточно быстро, чтобы удовлетворить наши требования к задержке, мы переписали некоторые функции в Cython, компиляторе, который переводит Python в эквивалентный код C.

Набор инструментов рекомендаций, который помогает читателям находить больше историй

Использование контекстных бандитов позволило нам значительно повысить вовлеченность читателей. Но, как и у любого алгоритма, у контекстных бандитов есть свои сильные и слабые стороны. Алгоритмы Bandit отлично подходят для быстрой адаптации к меняющимся предпочтениям и эффективного изучения новых возможностей. Обратной стороной является то, что они не предназначены в первую очередь для предоставления рекомендаций, которые кажутся персонализированными.

Затем мы хотим объединить контекстные многорукие бандиты с другими моделями в нашем наборе инструментов для рекомендаций, такими как совместная фильтрация или рекомендации на основе содержимого, которые включают более детальное представление читателей и их интересов. Добавляя результаты этих моделей в качестве контекстных функций для контекстного бандита, мы надеемся усилить силу каждого подхода и сделать еще один шаг ближе к нашей цели - помочь нашим читателям найти наиболее актуальный для них материал.

Анна Коенен - ​​старший научный сотрудник The New York Times. Еще она увлекается растениями, кошками и когнитивными науками.