Область техники, к которой относится изобретение
[01] Настоящая технология в целом относится к компьютерным рекомендательным системам и, в частности, к способам и системам для хранения данных, связанных с пользователями и цифровыми элементами рекомендательной системы.
Уровень техники
[02] Различные глобальные и локальные сети (Интернет, World Wide Web, локальные сети и т.д.) обеспечивают пользователю доступ к огромному объему информации. Эта информация включает в себя множество контекстно-зависимых тем, таких как новости и текущие события, карты, информация о компаниях, финансовая информация и ресурсы, информация о трафике, информация об играх и развлечениях и т.д. Пользователи применяют разнообразные клиентские устройства (настольный компьютер, ноутбук, смартфон, планшет и т.д.) для получения доступа к богатому информационному контенту (изображениям, аудиоматериалам, видеоматериалам, анимации и другому мультимедийному контенту из таких сетей).
[03] Объем информации, доступной на различных Интернет-ресурсах, в течение последних нескольких лет растет экспоненциально. Для помощи типичному пользователю в поиске необходимой информации было разработано несколько решений. Одним из примеров таких решений является поисковая система. В качестве примера можно привести поисковые системы GOOGLE™, YANDEX™, YAHOO!™ и т.д. Пользователь может получать доступ к интерфейсу поисковой системы и отправлять поисковый запрос, связанный с информацией, которую требуется найти в сети Интернет. В ответ на поисковый запрос поисковая система выдает ранжированный список результатов поиска. Ранжированный список результатов поиска формируется на основе различных алгоритмов ранжирования, применяемых конкретной поисковой системой, используемой пользователем для поиска. Общая цель таких алгоритмов ранжирования заключается в представлении наиболее релевантных результатов поиска в верхней части ранжированного списка, тогда как менее релевантные результаты поиска могут располагаться в ранжированном списке результатов поиска на менее заметных местах (наименее релевантные результаты поиска находятся в нижней части ранжированного списка результатов поиска).
[04] Поисковые системы обычно обеспечивают хороший инструментарий для обработки поискового запроса, когда пользователь заранее знает, что требуется найти. Иными словами, если пользователь заинтересован в получении информации о наиболее популярных местах в Испании (т.е. известна тема поиска), он может отправить поисковый запрос «Наиболее популярные места в Испании?». В ответ поисковая система выдает ранжированный список Интернет-ресурсов, потенциально релевантных поисковому запросу. Пользователь может просмотреть ранжированный список результатов поиска, чтобы получить требуемую информацию, касающуюся мест для посещения в Испании. Если пользователь по какой-либо причине не удовлетворен полученными результатами поиска, он может выполнить повторный поиск, например, с более точным поисковым запросом, таким как «Наиболее популярные места в Испании летом?», «Наиболее популярные места на юге Испании?», «Наиболее популярные места для гастрономического туризма в Испании?».
[05] Существует другой подход, предлагаемый для обнаружения пользователем контента и, в частности, для обнаружения и/или рекомендации контента, в поиске которого пользователь может не быть явно заинтересованным. Иными словами, такие системы рекомендуют пользователю контент без явно выраженного поискового запроса, основываясь на явных или неявных интересах пользователя.
[06] В качестве примера такой системы можно привести рекомендательную систему FLIPBOARD™, объединяющую и рекомендующую контент из различных источников, где пользователь может бегло просматривать страницы с рекомендуемым или объединенным контентом. Рекомендательная система собирает контент из социальных медиа и других веб-сайтов, представляет его в формате журнала и обеспечивает пользователям возможность бегло просматривать ленты публикаций из социальных сетей и с веб-сайтов, установивших партнерские отношения с компанией, эффективно «рекомендуя» контент пользователю, даже если пользователь явно не выражал заинтересованности в конкретном контенте.
[07] В качестве другого примера можно привести рекомендательную систему Yandex.Zen™. Рекомендательная система Yandex.Zen рекомендует цифровой контент (статьи, новости и видеоматериалы) в персонализированной ленте на главной странице браузера Yandex.Browser. Когда пользователь просматривает рекомендуемый контент сервера Yandex.Zen, сервер явно (запрашивая, желает ли пользователь, чтобы больше такого контента отображалось в его ленте) или неявно (наблюдая за взаимодействиями пользователя с контентом) получает информацию обратной связи. С использованием этой информации обратной связи от пользователя сервер Yandex.Zen непрерывно улучшает представляемые пользователю рекомендации контента.
Раскрытие изобретения
[08] Целью настоящего изобретения является устранение по меньшей мере некоторых недостатков известных решений. Варианты осуществления настоящей технологии способны обеспечить и/или расширить арсенал подходов и/или способов достижения целей в настоящей технологии.
[09] Разработчики настоящей технологии установили, что для выбора релевантного цифрового контента для пользователей рекомендательного сервиса требуется значительная вычислительная мощность во время работы в интерактивном режиме (т.е. когда запрос рекомендации контента принимается от пользователя рекомендательного сервиса). Для обработки большого объема цифрового контента в интерактивном режиме с целью определения цифрового контента, который должен быть предоставлен пользователям рекомендательного сервиса, могут использоваться известные модели оценивания релевантности. При этом для выполнения этих известных моделей оценивания релевантности требуется большой объем вычислений вследствие большого количества и разнообразия факторов, которые должны учитываться при оценивании релевантности цифрового контента, что требует значительной вычислительной мощности во время работы рекомендательной системы в интерактивном режиме.
[010] Следует отметить, что в контексте настоящей технологии модель оценивания релевантности реализована в виде алгоритма машинного обучения (MLA, Machine Learning Algorithm), способного оценивать релевантность цифровых элементов для пользователя. Например, модель оценивания релевантности может представлять собой модель на основе деревьев решений, реализованную в соответствии с фреймворком CatBoost. Дополнительная информация о библиотеке CatBoost и алгоритмах градиентного бустинга, используемых для построения таких моделей, доступна по ссылке https://catboost.ai.
[011] Как описано выше, модель оценивания релевантности способна использовать множество признаков, связанных с парой пользователь-элемент, с целью оценивания релевантности цифрового элемента из этой пары для пользователя из этой пары. Один из этих признаков формируется на основе сочетания векторного представления элемента и векторного представления пользователя. В целом, векторное представление соответствует вектору, представляющему некоторую информацию о цифровом элементе (в случае векторного представления элемента) или о пользователе (в случае векторного представления пользователя). Векторное представление пользователя формируется на основе взаимодействий пользователя с цифровым контентом рекомендательной системы. Векторное представление элемента формируется на основе взаимодействий множества пользователей рекомендательной системы с этим цифровым элементом. Один из признаков, используемых моделью оценивания релевантности при оценивании релевантности цифрового элемента для пользователя, может, например, представлять собой скалярное произведение векторного представления элемента и векторного представления пользователя.
[012] Также следует отметить, что для формирования векторных представлений элемента и пользователя может быть использовано множество способов. В по меньшей мере некоторых вариантах осуществления настоящей технологии векторные представления элемента и пользователя могут быть сформированы моделью матричной факторизации. В общем случае модель матричной факторизации способна выполнять разложение матрицы, содержащей данные взаимодействий пользователь-элемент между пользователями и цифровыми элементами (собранные рекомендательной системой), на матрицу цифровых элементов, представляющую множество векторных представлений элементов, и матрицу пользователей, представляющую множество векторных представлений пользователей. Например, модели матричной факторизации способны определять векторные представления пользователя и элемента на основе матрицы взаимодействий пользователь-элемент, используемых рекомендательными системами для выполнения совместной фильтрации. В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что модель матричной факторизации может представлять собой модель на основе сингулярного разложения (SVD, Singular Value Decomposition), способную выполнять разложение матрицы взаимодействий пользователь-элемент на матрицу пользователей (векторные представления пользователей) и матрицу цифровых элементов (векторные представления элементов).
[013] Должно быть понятно, что данные взаимодействий пользователь-элемент разрежены. Пользователь, как правило, не взаимодействует со всеми цифровыми элементами рекомендательного сервиса, поэтому данные взаимодействий пользователь-элемент обычно доступны не для каждой пары пользователь-элемент рекомендательной системы. Таким образом, модель матричной факторизации обучается прогнозировать отсутствующие данные взаимодействий пользователь-элемент на основе доступных в данный момент времени данных о взаимодействиях пользователь-элемент, а затем способна формировать векторные представления пользователей и элементов, как описано выше. Сформированные таким образом векторные представления элементов и пользователей используются моделью оценивания релевантности при оценивании релевантности цифровых элементов для этих пользователей.
[014] Также следует отметить, что в пул рекомендаций непрерывно добавляются новые цифровые элементы, а другие цифровые элементы могут удаляться из пула рекомендаций с течением времени. Кроме того, поскольку рекомендательная система предоставляет рекомендации контента своим пользователям, с течением времени собираются дополнительные данные взаимодействий пользователь-элемент. В результате полезно периодически повторно обучать модель матричной факторизации на последних доступных данных взаимодействий пользователь-элемент, поскольку они могут содержать данные взаимодействий пользователь-элемент для новых элементов пула рекомендаций и содержать больше данных о взаимодействиях пользователь-элемент, чем данные взаимодействий пользователь-элемент, которые были доступны во время предыдущего этапа обучения модели матричной факторизации. Иными словами, для улучшения прогнозов, в известном смысле, полезно периодически обновлять модель матричной факторизации на основе последней доступной информации о взаимодействиях пользователь-элемент.
[015] После каждого обновления модель матричной факторизации может формировать соответствующую версию векторных представлений пользователей и элементов. Например, модель матричной факторизации способна:
- после первого этапа обновления или обучения формировать первую версию векторных представлений пользователей (первую версию матрицы пользователей) и первую версию векторных представлений элементов (первую версию матрицы цифровых элементов); и
- после второго этапа обновления или обучения формировать вторую версию векторных представлений пользователей (вторую версию матрицы пользователей) и вторую версию векторных представлений элементов (вторую версию матрицы цифровых элементов).
[016] Разработчики настоящей технологии установили, что при формировании системой признака для модели оценивания релевантности в интерактивном режиме в виде сочетания векторных представлений элемента и пользователя важно убедиться в том, что векторное представление элемента и векторное представление пользователя в этом сочетании имеют одинаковую версию. Иными словами, нежелательно формировать признак в виде сочетания векторного представления элемента одной версии и векторного представления пользователя другой версии. Тем не менее, сложно обеспечить, чтобы при формировании в интерактивном режиме признака, подлежащего использованию моделью оценивания релевантности, из памяти извлекались векторные представления элемента и пользователя одинаковой версии.
[017] Многие рекомендательные системы способны использовать распределенные хранилища данных для хранения данных. В общем случае распределенное хранилище представляет собой компьютерную сеть, в которой информация хранится в нескольких узлах и часто в реплицированном виде. Распределенные хранилища данных обеспечивают различные преимущества на различных архитектурных уровнях (например, на физическом уровне, на сетевом уровне и т.д.), например, для повышения отказоустойчивости и/или для выравнивания нагрузки.
[018] Следует отметить, что количество пользователей рекомендательной системы может быть намного большим количества элементов, которые рекомендательная система может потенциально предоставлять пользователям в качестве рекомендуемого контента. В результате количество векторных представлений пользователей, подлежащих сохранению после обновления, намного превышает количество векторных представлений элементов, также подлежащих сохранению после обновления. В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что для сохранения векторных представлений пользователей после обновления требуется намного больше времени, чем для сохранения векторных представлений элементов после обновления. В некоторых случаях вследствие различия длительности процесса сохранения векторных представлений пользователей некоторой версии и длительности процесса сохранения векторных представлений элементов той же версии может быть сложно обеспечить, чтобы при формировании в интерактивном режиме признака, подлежащего использованию моделью оценивания релевантности, из памяти извлекались векторные представления элемента и пользователя одинаковой версии. Разработчики настоящей технологии разработали способы и системы для устранения по меньшей мере некоторых недостатков известных решений. В по меньшей мере некоторых вариантах осуществления настоящей технологии рекомендательная система способна хранить векторные представления пользователей в нераспределенном хранилище данных, а векторные представления элементов - в распределенном хранилище данных.
[019] Согласно первому аспекту настоящей технологии реализован способ хранения данных, связанных с пользователями рекомендательной системы и с цифровыми элементами, рекомендуемыми в этой рекомендательной системе. Рекомендательная система способна предоставлять цифровые элементы в качестве рекомендации контента пользователям рекомендательной системы. Способ выполняется сервером. Сервер связан с нераспределенным хранилищем данных и с распределенным хранилищем данных. Распределенное хранилище данных содержит множество узлов. Способ включает в себя обучение сервером модели матричной факторизации на основе первых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, произошедшими до первого момента времени. Модель матричной факторизации обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих в первый момент времени. Способ в ходе первой итерации этапа использования модели матричной факторизации включает в себя формирование сервером, использующим обученную модель матричной факторизации, первых векторных представлений пользователей для соответствующих пользователей и первых векторных представлений элементов для соответствующих цифровых элементов. Первые векторные представления пользователей и первые векторные представления элементов представляют собой выходные данные обученной модели матричной факторизации. Способ включает в себя сохранение сервером первых векторных представлений пользователей в сочетании с первым значением, указывающим на первую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных и сохранение первых векторных представлений элементов в сочетании с первым значением в распределенном хранилище данных. Первые векторные представления элементов и первые векторные представления пользователей сохраняются в сочетании с первым значением, указывающим на то, что первые векторные представления элементов и первые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации. Способ включает в себя повторное обучение сервером модели матричной факторизации на основе вторых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, произошедшими до второго момента времени, более позднего, чем первый момент времени. Модель матричной факторизации повторно обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих во второй момент времени. Способ в ходе второй итерации этапа использования модели матричной факторизации включает в себя формирование сервером, использующим повторно обученную модель матричной факторизации, вторых векторных представлений пользователей для соответствующих пользователей и вторых векторных представлений элементов для соответствующих цифровых элементов. Вторые векторные представления пользователей и вторые векторные представления элементов представляют собой выходные данные повторно обученной модели матричной факторизации. Способ включает в себя сохранение сервером вторых векторных представлений пользователей в сочетании со вторым значением, указывающим на вторую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных в дополнение к первым векторным представлениям пользователей и сохранение вторых векторных представлений элементов в сочетании со вторым значением в распределенном хранилище данных вместо соответствующих первых векторных представлений элементов путем замены соответствующих первых векторных представлений элементов. Вторые векторные представления элементов и вторые векторные представления пользователей сохраняются в сочетании со вторым значением, указывающим на то, что вторые векторные представления элементов и вторые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации. В третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных, способ включает в себя удаление сервером первых векторных представлений пользователей, связанных с первым значением, из нераспределенного хранилища данных так, чтобы в третий момент времени вторые векторные представления пользователей хранились в нераспределенном хранилище данных вместо первых векторных представлений пользователей и вторых векторных представлений пользователей.
[020] В некоторых вариантах осуществления способа он дополнительно включает в себя контроль сервером процесса сохранения вторых векторных представлений элементов в распределенном хранилище данных.
[021] В некоторых вариантах осуществления способа он дополнительно включает в себя определение сервером третьего момента времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных.
[022] В некоторых вариантах осуществления способа он дополнительно включает в себя получение сервером из распределенного хранилища данных подтверждения отказоустойчивого хранения вторых векторных представлений элементов, при этом третий момент времени соответствует моменту времени получения сервером этого подтверждения.
[023] В некоторых вариантах осуществления способа сохранение вторых векторных представлений пользователей выполняется в течение первого интервала времени, а сохранение вторых векторных представлений элементов выполняется в течение второго интервала времени, при этом первый интервал времени существенно меньше второго интервала времени.
[024] В некоторых вариантах осуществления способа первый интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных, и моментом времени, когда сервер завершает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных. Второй интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений элементов в распределенном хранилище данных, и третьим моментом времени, когда сервер завершает сохранение вторых векторных представлений элементов.
[025] В некоторых вариантах осуществления способа модель матричной факторизации представляет собой модель на основе разложения SVD.
[026] В некоторых вариантах осуществления способа нераспределенное хранилище данных представляет собой хранилище данных ключ-значение.
[027] В некоторых вариантах осуществления способа нераспределенное хранилище данных реализовано в виде одного физического устройства хранения данных.
[028] В некоторых вариантах осуществления способа в четвертый момент времени, между вторым моментом времени и третьим моментом времени, способ дополнительно включает в себя: (а) получение сервером указания на запрос рекомендации контента для электронного устройства, связанного с пользователем, (б) получение сервером из распределенного хранилища данных целевого векторного представления элемента, связанного с цифровым элементом, представляющим собой потенциально рекомендуемый элемент для пользователя, при этом целевое векторное представление элемента представляет собой первое векторное представление элемента для этого элемента или второе векторное представление элемента для этого элемента, а векторное представление элемента связано с целевым значением, представляющим собой первое значение или второе значение, и (в) выбор сервером из нераспределенного хранилища данных связанного с пользователем целевого векторного представления пользователя из числа первого векторного представления пользователя, связанного с пользователем и хранящегося в сочетании с первым значением, и второго векторного представления пользователя, связанного с пользователем и хранящегося в сочетании со вторым значением. Выбор включает в себя определение сервером соответствия целевого значения векторного представления элемента первому значению или второму значению. Если целевое значение соответствует первому значению, то выбор включает в себя выбор первого векторного представления пользователя в качестве целевого векторного представления пользователя. Если целевое значение соответствует второму значению, то выбор включает в себя выбор второго векторного представления пользователя. Способ дополнительно включает в себя формирование сервером ранжирующего признака в виде сочетания целевого векторного представления пользователя и целевого векторного представления элемента, при этом ранжирующий признак подлежит использованию при ранжировании элемента из числа других элементов для пользователя.
[029] Согласно второму аспекту настоящей технологии реализован сервер для хранения данных, связанных с пользователями рекомендательной системы и с цифровыми элементами, рекомендуемыми в рекомендательной системе. Рекомендательная система способна предоставлять цифровые элементы в качестве рекомендации контента пользователям рекомендательной системы. Сервер связан с нераспределенным хранилищем данных и с распределенным хранилищем данных. Распределенное хранилище данных содержит множество узлов. Сервер способен обучать модель матричной факторизации на основе первых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, произошедшими до первого момента времени. Модель матричной факторизации обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих в первый момент времени. Сервер в ходе первой итерации этапа использования модели матричной факторизации способен формировать с использованием обученной модели матричной факторизации первые векторные представления пользователей для соответствующих пользователей и первые векторные представления элементов для соответствующих цифровых элементов. Первые векторные представления пользователей и первые векторные представления элементов представляют собой выходные данные обученной модели матричной факторизации. Сервер способен сохранять первые векторные представления пользователей в сочетании с первым значением, указывающим на первую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных и сохранять первые векторные представления элементов в сочетании с первым значением в распределенном хранилище данных. Первые векторные представления элементов и первые векторные представления пользователей сохраняются в сочетании с первым значением, указывающим на то, что первые векторные представления элементов и первые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации. Сервер способен повторно обучать модель матричной факторизации на основе вторых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, произошедшими до второго момента времени, более позднего, чем первый момент времени. Модель матричной факторизации повторно обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих во второй момент времени. Сервер в ходе второй итерации этапа использования модели матричной факторизации способен формировать с использованием повторно обученной модели матричной факторизации вторые векторные представления пользователей для соответствующих пользователей и вторые векторные представления элементов для соответствующих цифровых элементов. Вторые векторные представления пользователей и вторые векторные представления элементов представляют собой выходные данные повторно обученной модели матричной факторизации. Сервер способен сохранять вторые векторные представления пользователей в сочетании со вторым значением, указывающим на вторую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных в дополнение к первым векторным представлениям пользователей и сохранять вторые векторные представления элементов в сочетании со вторым значением в распределенном хранилище данных вместо соответствующих первых векторных представлений элементов путем замены соответствующих первых векторных представлений элементов. Вторые векторные представления элементов и вторые векторные представления пользователей сохраняются в сочетании со вторым значением, указывающим на то, что вторые векторные представления элементов и вторые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации. В третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных, сервер способен удалять первые векторные представления пользователей, связанные с первым значением, из нераспределенного хранилища данных так, чтобы в третий момент времени вторые векторные представления пользователей хранились в нераспределенном хранилище данных вместо первых векторных представлений пользователей и вторых векторных представлений пользователей.
[030] В некоторых вариантах осуществления сервера он дополнительно способен контролировать процесс сохранения вторых векторных представлений элементов в распределенном хранилище данных.
[031] В некоторых вариантах осуществления сервера он дополнительно способен определять третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных.
[032] В некоторых вариантах осуществления сервера он дополнительно способен получать из распределенного хранилища данных подтверждение отказоустойчивого хранения вторых векторных представлений элементов, при этом третий момент времени соответствует моменту времени получения сервером этого подтверждения.
[033] В некоторых вариантах осуществления сервера он способен сохранять вторые векторные представления пользователей в течение первого интервала времени и сохранять вторые векторные представления элементов в течение второго интервала времени. Первый интервал времени существенно меньше второго интервала времени.
[034] В некоторых вариантах осуществления сервера первый интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных, и моментом времени, когда сервер завершает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных, а второй интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений элементов в распределенном хранилище данных, и третьим моментом времени, когда сервер завершает сохранение вторых векторных представлений элементов.
[035] В некоторых вариантах осуществления сервера модель матричной факторизации представляет собой модель на основе разложения SVD.
[036] В некоторых вариантах осуществления сервера нераспределенное хранилище данных представляет собой хранилище данных ключ-значение.
[037] В некоторых вариантах осуществления сервера нераспределенное хранилище данных реализовано в виде одного физического устройства хранения данных.
[038] В некоторых вариантах осуществления сервера в четвертый момент времени, между вторым моментом времени и третьим моментом времени, сервер дополнительно способен: (а) получать указание на запрос рекомендации контента для электронного устройства, связанного с пользователем, (б) получать из распределенного хранилища данных целевое векторное представление элемента, связанное с цифровым элементом, представляющим собой потенциально рекомендуемый элемент для пользователя, при этом целевое векторное представление элемента представляет собой первое векторное представление элемента для этого элемента или второе векторное представление элемента для этого элемента, а векторное представление элемента связано с целевым значением, представляющим собой первое значение или второе значение, и (в) выбирать из нераспределенного хранилища данных связанное с пользователем целевое векторное представление пользователя из числа первого векторного представления пользователя, связанного с пользователем и хранящегося в сочетании с первым значением, и второго векторного представления пользователя, связанного с пользователем и хранящегося в сочетании со вторым значением. Для осуществления такого выбора сервер может определять соответствие целевого значения векторного представления элемента первому значению или второму значению. Если целевое значение соответствует первому значению, сервер может выбирать первое векторное представление пользователя в качестве целевого векторного представления пользователя. Если целевое значение соответствует второму значению, сервер может выбирать второе векторное представление пользователя. Сервер дополнительно может формировать ранжирующий признак в виде сочетания целевого векторного представления пользователя и целевого векторного представления элемента, при этом ранжирующий признак подлежит использованию при ранжировании элемента из числа других элементов для пользователя.
[039] В контексте настоящего описания термин «сервер» означает компьютерную программу, выполняемую соответствующими аппаратными средствами и способную принимать запросы (например, от клиентских устройств) через сеть и выполнять эти запросы или инициировать их выполнение. Аппаратные средства могут представлять собой один физический компьютер или одну компьютерную систему, что не существенно для настоящей технологии. В настоящем контексте выражение «сервер» не означает, что каждая задача (например, принятая команда или запрос) или некоторая конкретная задача принимается, выполняется или запускается одним и тем же сервером (т.е. одними и теми же программными и/или аппаратными средствами). Это выражение означает, что любое количество программных средств или аппаратных средств может принимать, отправлять, выполнять или инициировать выполнение любой задачи или запроса либо результатов любых задач или запросов. Все эти программные и аппаратные средства могут представлять собой один сервер или несколько серверов, причем оба эти случая подразумеваются в выражении «по меньшей мере один сервер».
[040] В контексте настоящего описания термин «клиентское устройство» означает любое компьютерное аппаратное средство, способное выполнять программы, подходящие для решения конкретной задачи. Таким образом, некоторые (не имеющие ограничительного характера) примеры клиентских устройств включают в себя персональные компьютеры (настольные, ноутбуки, нетбуки и т.п.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует отметить, что в данном контексте устройство, функционирующее как клиентское устройство, также может функционировать как сервер для других клиентских устройств. Использование выражения «клиентское устройство» не исключает использования нескольких клиентских устройств для приема, отправки, выполнения или инициирования выполнения любой задачи или запроса либо результатов любых задач или запросов, либо шагов любого описанного здесь способа.
[041] В контексте настоящего описания термин «база данных» означает любой структурированный набор данных, независимо от его конкретной структуры, программного обеспечения для управления базой данных или компьютерных аппаратных средств для хранения этих данных, их применения или обеспечения их использования иным способом. База данных может располагаться в тех же аппаратных средствах, где реализован процесс, обеспечивающий хранение или использование информации, хранящейся в базе данных, либо база данных может располагаться в отдельных аппаратных средствах, таких как специализированный сервер или множество серверов.
[042] В контексте настоящего описания выражение «информация» включает в себя информацию любого рода или вида, допускающую хранение в базе данных. Таким образом, информация включает в себя аудиовизуальные произведения (изображения, фильмы, звукозаписи, презентации и т.д.), данные (данные о местоположении, числовые данные и т.д.), текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, электронные таблицы, списки слов и т.д., но не ограничивается ими.
[043] В контексте настоящего описания выражение «компонент» включает в себя обозначение программного обеспечения (подходящего для определенных аппаратных средств), необходимого и достаточного для выполнения определенной функции или нескольких функций.
[044] В контексте настоящего описания выражение «пригодный для использования в компьютере носитель информации» означает носители любого рода и вида, включая оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), диски (CD-ROM, DVD, гибкие диски, жесткие диски и т.д.), USB-накопители, твердотельные накопители, накопители на магнитных лентах и т.д.
[045] В контексте настоящего описания, если явно не указано другое, в качестве указания на информационный элемент может выступать сам информационный элемент, а также указатель, ссылка, гиперссылка или другое косвенное средство, с помощью которого получатель данных может найти место в сети, памяти, базе данных или на другом машиночитаемом носителе информации, откуда можно извлечь этот информационный элемент. Например, указание на документ может включать в себя сам документ (т.е. его содержимое) или это указание может представлять собой уникальный дескриптор документа, указывающий на файл в определенной файловой системе, или какие-либо другие средства для указания получателю данных места в сети, адреса памяти, таблицы в базе данных или другого места, где можно получить доступ к файлу. Специалисту в данной области должно быть очевидно, что степень точности, требуемая для такого указания, зависит от объема предварительных знаний относительно интерпретации информации, которой обмениваются отправитель и получатель данных. Например, если перед началом обмена данными между отправителем и получателем известно, что указание на информационный элемент представляет собой ключ базы данных для элемента в определенной таблице заранее заданной базы данных, содержащей этот информационный элемент, то для эффективной передачи этого информационного элемента получателю достаточно оправить ключ базы данных, даже если сам информационный элемент не передается между отправителем и получателем данных.
[046] В контексте настоящего описания числительные «первый» «второй», «третий» и т.д. используются лишь для указания на различие между существительными, к которым они относятся, но не для описания каких-либо определенных взаимосвязей между этими существительными. Например, должно быть понятно, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо определенного порядка, типа, хронологии, иерархии или классификации, в данном случае серверов, а также что их использование (само по себе) не подразумевает наличие «второго сервера» в любой ситуации. Кроме того, как встречается в настоящем описании в другом контексте, ссылка на «первый» элемент и «второй» элемент не исключает того, что эти два элемента в действительности могут быть одним и тем же элементом. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой одно и то же программное и/или аппаратное средство, а в других случаях - различные программные и/или аппаратные средства.
[047] Каждый вариант осуществления настоящей технологии относится к по меньшей мере одной из вышеупомянутых целей и/или аспектов, но не обязательно ко всем ним. Должно быть понятно, что некоторые аспекты настоящей технологии, связанные с попыткой достижения вышеупомянутой цели, могут не соответствовать этой цели и/или могут соответствовать другим целям, явным образом здесь не упомянутым.
[048] Дополнительные и/или альтернативные признаки, аспекты и преимущества вариантов осуществления настоящей технологии содержатся в дальнейшем описании, в приложенных чертежах и в формуле изобретения.
Краткое описание чертежей
[049] Дальнейшее описание приведено для лучшего понимания настоящей технологии, а также других аспектов и их признаков, и должно использоваться совместно с приложенными чертежами.
[050] На фиг. 1 представлена схема системы, реализованной согласно не имеющим ограничительного характера вариантам осуществления настоящей технологии.
[051] На фиг. 2 представлена структура данных, хранящихся в хранилище данных рекомендаций системы, показанной на фиг. 1, согласно не имеющим ограничительного характера вариантам осуществления настоящей технологии.
[052] На фиг. 3 представлена структура данных, хранящихся в нераспределенном хранилище данных системы, показанной на фиг. 1, согласно не имеющим ограничительного характера вариантам осуществления настоящей технологии.
[053] На фиг. 4 представлена структура данных, хранящихся в распределенном хранилище данных системы, показанной на фиг. 1, согласно не имеющим ограничительного характера вариантам осуществления настоящей технологии.
[054] На фиг. 5 представлена временнáя диаграмма событий, происходящих на сервере, в распределенном хранилище данных и в нераспределенном хранилище данных, показанных на фиг. 1, согласно не имеющим ограничительного характера вариантам осуществления настоящей технологии.
[055] На фиг. 6 представлен порядок обращения сервера, показанного на фиг. 1, к распределенному и нераспределенному хранилищам данных системы, показанной на фиг. 1, с целью получения векторных представлений пользователей и элементов согласно не имеющим ограничительного характера вариантам осуществления настоящей технологии.
[056] На фиг. 7 представлен этап использования модели оценивания релевантности при ранжировании элементов этапа использования согласно не имеющим ограничительного характера вариантам осуществления настоящей технологии.
[057] На фиг. 8 представлен снимок экрана рекомендательного интерфейса, реализованного согласно не имеющему ограничительного характера варианту осуществления настоящей технологии.
[058] На фиг. 9 представлена блок-схема способа хранения данных, связанных с пользователями и с элементами рекомендательной системы, показанной на фиг. 1, выполняемого сервером, показанным на фиг. 1, согласно вариантам осуществления настоящей технологии.
[059] На фиг. 10 представлен снимок экрана рекомендательного интерфейса, реализованного согласно другому не имеющему ограничительного характера варианту осуществления настоящей технологии.
Осуществление изобретения
[060] Представленные здесь примеры и условный язык предназначены для обеспечения лучшего понимания принципов настоящей технологии, а не для ограничения ее объема до таких специально приведенных примеров и условий. Очевидно, что специалисты в данной области техники способны разработать различные способы и устройства, которые явно не описаны и не показаны, но реализуют принципы настоящей технологии в пределах ее существа и объема.
[061] Кроме того, чтобы способствовать лучшему пониманию, последующее описание может содержать упрощенные варианты реализации настоящей технологии. Специалистам в данной области должно быть понятно, что другие варианты осуществления настоящей технологии могут быть значительно сложнее.
[062] В некоторых случаях приводятся полезные примеры модификаций настоящей технологии. Они способствуют пониманию, но также не определяют объема или границ настоящей технологии. Представленный перечень модификаций не является исчерпывающим и специалист в данной области может разработать другие модификации в пределах объема настоящей технологии. Кроме того, если в некоторых случаях модификации не описаны, это не означает, что они невозможны и/или что описание содержит единственно возможный вариант реализации того или иного элемента настоящей технологии.
[063] Описание принципов, аспектов и вариантов реализации настоящей технологии, а также их конкретные примеры предназначены для охвата их структурных и функциональных эквивалентов, независимо от того, известны они в настоящее время или будут разработаны в будущем. Например, специалистам в данной области техники должно быть понятно, что любые описанные здесь структурные схемы соответствуют концептуальным представлениям иллюстративных принципиальных схем, реализующих основы настоящей технологии. Также должно быть понятно, что любые блок-схемы, схемы процессов, диаграммы изменения состояния, псевдокоды и т.п. соответствуют различным процессам, которые могут быть представлены на машиночитаемом физическом носителе информации и могут выполняться компьютером или процессором, независимо от того, показан такой компьютер или процессор явно или нет.
[064] Функции различных элементов, показанных на чертежах, включая любой функциональный блок, обозначенный как «процессор» или «графический процессор», могут быть реализованы с использованием специализированных аппаратных средств, а также с использованием аппаратных средств, способных выполнять соответствующее программное обеспечение. Если используется процессор, эти функции могут выполняться одним выделенным процессором, одним совместно используемым процессором или множеством отдельных процессоров, некоторые из которых могут использоваться совместно. В некоторых вариантах осуществления настоящей технологии процессор может представлять собой процессор общего назначения, такой как центральный процессор (CPU), или специализированный процессор, такой как графический процессор (GPU). Кроме того, явное использование термина «процессор» или «контроллер» не должно трактоваться как указание исключительно на аппаратные средства, способные выполнять программное обеспечение, и может подразумевать, помимо прочего, аппаратные средства цифрового сигнального процессора (DSP), сетевой процессор, специализированную интегральную схему (ASIC), программируемую вентильную матрицу (FPGA), ПЗУ для хранения программного обеспечения, ОЗУ и энергонезависимое запоминающее устройство. Также могут подразумеваться другие аппаратные средства, общего назначения и/или заказные.
[065] Программные модули или просто модули, реализация которых предполагается в виде программных средств, могут быть представлены здесь как любое сочетание элементов блок-схемы или других элементов, указывающих на выполнение шагов процесса и/или содержащих текстовое описание. Такие модули могут выполняться аппаратными средствами, показанными явно или подразумеваемыми.
[066] Далее с учетом вышеизложенных принципов рассмотрены некоторые не имеющие ограничительного характера примеры, иллюстрирующие различные варианты реализации аспектов настоящей технологии.
[067] На фиг. 1 представлена схема системы 100, пригодной для реализации не имеющих ограничительного характера вариантов осуществления настоящей технологии. Очевидно, что система 100 приведена лишь для демонстрации варианта реализации настоящей технологии. Таким образом, дальнейшее описание системы представляет собой описание примеров, иллюстрирующих настоящую технологию. Это описание не предназначено для определения объема или границ настоящей технологии. В некоторых случаях приводятся полезные примеры модификаций системы 100. Они способствуют пониманию, но также не определяют объема или границ настоящей технологии. Эти модификации не составляют исчерпывающего перечня. Как должно быть понятно специалисту в данной области, возможны и другие модификации. Кроме того, если в некоторых случаях модификации не описаны (т.е. примеры модификаций отсутствуют), это не означает, что они невозможны и/или что это описание содержит единственно возможный вариант реализации того или иного элемента настоящей технологии. Специалисту в данной области должно быть понятно, что это может быть не так. Кроме того, следует понимать, что система 100 в некоторых случаях может представлять собой упрощенную реализацию настоящей технологии и что такие варианты представлены, чтобы способствовать лучшему ее пониманию. Специалистам в данной области должно быть понятно, что другие варианты осуществления настоящей технологии могут быть значительно сложнее.
[068] В целом, система 100 способна предоставлять рекомендации относительно цифрового контента пользователям системы 100. Например, пользователь 102 (один из множества пользователей системы 100) может представлять собой абонента рекомендательного сервиса, обеспечиваемого системой 100. При этом подписка такого абонента не обязательно должна быть явной или платной. Например, пользователь может стать абонентом в результате загрузки рекомендательного приложения из системы 100, путем регистрации и предоставления сочетания учетного имени и пароля, путем регистрации и предоставления предпочтений пользователя и т.д. Любой вариант системы, способной формировать для пользователя рекомендации контента, может быть адаптирован для выполнения вариантов осуществления настоящей технологии после реализации представленной здесь концепции. Система 100 описывается здесь с использованием примера системы 100, представляющей собой рекомендательную систему (поэтому система 100 ниже может называться рекомендательной системой 100, системой 100 прогнозирования или обучающей системой 100). Тем не менее, варианты осуществления настоящей технологии могут быть в равной степени применены к системе 100 других видов, как более подробно описано ниже.
Электронное устройство
[069] Система 100 содержит электронное устройство 104, связанное с пользователем 102. Электронное устройство 104 иногда может называться клиентским устройством, оконечным устройством или клиентским электронным устройством. Следует отметить, что связь электронного устройства 104 с пользователем 102 не означает необходимости предлагать или подразумевать какой-либо режим работы, например, вход в систему, регистрацию и т.п.
[070] Следует отметить, что несмотря на то, что на фиг. 1 показан лишь пользователь 102, связанный с электронным устройством 104, предполагается, что пользователь 102, связанный с электронным устройством 104, представляет собой пользователя из множества пользователей (не показаны) системы 100, каждый из которых может быть связан с соответствующим электронным устройством (не показано).
[071] На реализацию электронного устройства 104 не накладывается каких-либо особых ограничений. Например, электронное устройство 104 может быть реализовано в виде персонального компьютера (настольного, ноутбука, нетбука и т.д.), беспроводного устройства связи (смартфона, сотового телефона, планшета и т.д.) или сетевого оборудования (маршрутизатора, коммутатора, шлюза и т.д.). Электронное устройство 104 содержит известные в данной области техники аппаратные средства и/или прикладное программное обеспечение и/или встроенное программное обеспечение (либо их сочетание) для выполнения рекомендательного приложения 106. В общем случае рекомендательное приложение 106 предназначено для того, чтобы обеспечить пользователю 102 возможность принимать рекомендации относительно цифрового контента, предоставляемые системой 100, как более подробно описано ниже (или осуществлять доступ к ним иным образом).
[072] На реализацию рекомендательного приложения 106 не накладывается каких-либо особых ограничений. Один пример рекомендательного приложения 106 может предусматривать доступ пользователя 102 к веб-сайту, связанному с рекомендательным сервисом, с целью доступа к рекомендательному приложению 106. Например, доступ к рекомендательному приложению 106 может осуществляться путем ввода с клавиатуры (или копирования и вставки или выбора ссылки) универсального указателя ресурсов (URL, Uniform Resource Locator), связанного с рекомендательным сервисом. В качестве альтернативы рекомендательное приложение 106 может представлять собой приложение, загружаемое из так называемого «магазина приложений», такого как APPSTORE™ или GOOGLEPLAY™, и устанавливаемое или выполняемое в электронном устройстве 104. Очевидно, что доступ к рекомендательному приложению 106 может осуществляться с использованием любых других подходящих средств. В других вариантах осуществления изобретения функции рекомендательного приложения 106 могут быть включены в состав другого приложения, такого как браузерное приложение (не показано) и т.п. Например, рекомендательное приложение 106 может выполняться в виде части браузерного приложения. В частности, функции рекомендательного приложения 106 могут выполняться при запуске пользователем 102 браузерного приложения.
[073] В общем случае рекомендательное приложение 106 содержит рекомендательный интерфейс (не показан), отображаемый на экране электронного устройства 104.
[074] На фиг. 8 представлен снимок 800 экрана рекомендательного интерфейса, реализованного согласно не имеющему ограничительного характера варианту осуществления настоящей технологии (показан пример рекомендательного интерфейса, отображаемого на экране электронного устройства 104, реализованного в виде смартфона).
[075] В некоторых вариантах осуществления настоящей технологии рекомендательный интерфейс может быть представлен или отображен, когда пользователь 102 электронного устройства 104 активирует (т.е. выполняет, запускает, использует в фоновом режиме и т.п.) рекомендательное приложение 106. В качестве альтернативы рекомендательный интерфейс может быть представлен или отображен, когда пользователь 102 открывает новое окно браузера и/или активирует новую вкладку в браузерном приложении. Например, в некоторых вариантах осуществления настоящей технологии рекомендательный интерфейс может выполнять функции главной страницы в браузерном приложении.
[076] Рекомендательный интерфейс содержит поисковый интерфейс 802. Поисковый интерфейс 802 включает в себя интерфейс 804 поискового запроса. Интерфейс 804 поискового запроса может быть реализован как «омнибокс», что позволяет вводить поисковый запрос для проведения поиска или сетевой адрес (такой как URL) для идентификации ресурса (такого как, веб-сайт), к которому требуется получить доступ. Тем не менее, интерфейс 804 поискового запроса может принимать введенный поисковый запрос для проведения поиска и/или сетевой адрес (такой как URL) для идентификации ресурса (такого как, веб-сайт), к которому требуется получить доступ.
[077] Рекомендательный интерфейс дополнительно содержит интерфейс 806 ссылок. Интерфейс 806 ссылок включает в себя множество 808 фрагментов, восемь из которых представлены на фиг. 8, но лишь для двух из них на фиг. 8 предусмотрены числовые обозначения: первый фрагмент 810 и второй фрагмент 812.
[078] Каждый фрагмент из множества 808 фрагментов, например, первый фрагмент 810 и второй фрагмент 812, включает в себя (или выполняет соответствующие функции) ссылку на веб-сайт, помеченный как «избранное» или как-либо иначе отмеченный пользователем 102, на ранее посещенный веб-сайт и т.п. В показанном варианте осуществления изобретения множество 808 фрагментов визуально представлено пользователю 102 в виде квадратных кнопок с логотипом и/или с названием ресурса, благодаря чему пользователь 102 может определять, с каким ресурсом связан каждый из множества фрагментов (отдельно не обозначены). Тем не менее, должно быть понятно, что визуальное представление некоторых или всех фрагментов из множества 808 фрагментов может быть иным. Таким образом, некоторые или все фрагменты из множества 808 фрагментов могут быть реализованы в виде кнопок другой формы, в виде списка гиперссылок и т.п.
[079] Например, первый фрагмент 810 включает в себя ссылку на веб-сайт TRAVELZOO™, а второй фрагмент 812 содержит ссылку на веб-сайт персонального «живого журнала» (Live Journal). Излишне говорить, что количество и содержимое индивидуальных фрагментов из множества 808 фрагментов никак не ограничено.
[080] Например, количество фрагментов во множестве 808 фрагментов может быть выбрано заранее поставщиком рекомендательного приложения 106. В некоторых вариантах осуществления настоящей технологии количество фрагментов во множестве 808 фрагментов выбирается заранее на основе размера и/или разрешения экрана электронного устройства 104, выполняющего рекомендательное приложение 106. Например, первое количество фрагментов может быть заранее выбрано для электронного устройства 104, реализованного в виде смартфона, второе количество фрагментов может быть заранее выбрано для электронного устройства 104, реализованного в виде планшета, а третье количество фрагментов может быть заранее выбрано для электронного устройства 104, реализованного в виде ноутбука или настольного компьютера.
[081] Рекомендательный интерфейс также содержит набор 814 рекомендуемого цифрового контента. Набор 814 рекомендуемого цифрового контента включает в себя один или несколько рекомендуемых цифровых документов, например, первый рекомендуемый цифровой документ 816 и второй рекомендуемый цифровой документ 818 (второй рекомендуемый цифровой документ 818 лишь частично виден на фиг. 8). Разумеется, что набор 814 рекомендуемого цифрового контента может содержать большее количество рекомендуемых цифровых документов. В представленном на фиг. 8 варианте осуществления изобретения и в тех вариантах осуществления изобретения, где присутствует несколько рекомендуемых цифровых документов, пользователь 102 может выполнять прокрутку набора 814 рекомендуемого цифрового контента. Прокрутка может осуществляться любыми подходящими средствами. Например, пользователь 102 может выполнять прокрутку контента набора 814 рекомендуемого цифрового контента с использованием мыши (не показана), клавиши клавиатуры (не показана) или взаимодействия с сенсорным экраном (не показан) соответствующего электронного устройства 104.
[082] Пример, приведенный на фиг. 8, представляет собой один возможный вариант реализации рекомендательного интерфейса. Другой пример реализации рекомендательного интерфейса и описание способа взаимодействия пользователя 102 с рекомендательным интерфейсом 108 приведены в патенте US10394420 этого же заявителя «A computer-implemented method of generating a content recommendation interface» (выдан 27 августа 2019 г.), содержание которого полностью включено в настоящий документ посредством ссылки.
[083] Показанное на фиг. 1 электронное устройство 104 способно формировать запрос 150 рекомендации относительно цифрового контента. Запрос 150 быть сформирован в ответ на предоставление пользователем 102 явного указания на его желание получать рекомендацию относительно цифрового контента. Например, рекомендательный интерфейс может предоставлять кнопку (или другой активируемый элемент), позволяющую пользователю 102 выражать свое желание получать новые или обновленные рекомендации относительно цифрового контента.
[084] Например, рекомендательный интерфейс может предоставлять активируемую кнопку с надписью «Запросить рекомендацию контента». В этих вариантах осуществления изобретения запрос 150 рекомендации относительно цифрового контента может считаться «явным запросом» в том смысле, что пользователь 102 явно запрашивает рекомендацию относительно цифрового контента.
[085] В других вариантах осуществления изобретения запрос 150 рекомендации относительно цифрового контента может быть сформирован в ответ на неявное указание пользователя 102 на его желание получить рекомендацию относительно цифрового контента. В некоторых вариантах осуществления настоящей технологии запрос 150 рекомендации относительно цифрового контента может быть сформирован в ответ на запуск пользователем 102 рекомендательного приложения 106.
[086] В качестве альтернативы, в тех вариантах осуществления настоящей технологии, где рекомендательное приложение 106 реализовано в виде браузера (такого как, браузер GOOGLE™, браузер YANDEX™, браузер YAHOO!™ или любое другое проприетарное или коммерчески доступное браузерное приложение), запрос 150 рекомендации относительно цифрового контента может быть сформирован в ответ на открытие пользователем 102 браузерного приложения и может быть создан, например, без выполнения пользователем 102 каких-либо дополнительных действий, помимо активации браузерного приложения.
[087] Запрос 150 рекомендации относительно цифрового контента также может быть сформирован в ответ на открытие пользователем 102 новой вкладки в уже открытом браузерном приложении и может быть создан, например, без выполнения пользователем 102 каких-либо дополнительных действий, помимо активации новой вкладки браузера.
[088] Таким образом, предполагается, что в некоторых вариантах осуществления настоящей технологии запрос 150 рекомендации относительно цифрового контента может быть сформирован, даже если пользователь 102 не знает, что он может быть заинтересован в получении рекомендации относительно цифрового контента.
[089] Запрос 150 рекомендации относительно цифрового контента также может быть сформирован в ответ на выбор пользователем 102 конкретного элемента браузерного приложения и может быть создан, например, без выполнения пользователем 102 каких-либо дополнительных действий, помимо выбора или активации конкретного элемента браузерного приложения.
[090] Примеры конкретного элемента браузерного приложения, в числе прочего, включают в себя:
- адресную строку панели браузерного приложения;
- строку поиска браузерного приложения и/или строку поиска веб-сайта поисковой системы, доступ к которому осуществляется в браузерном приложении;
- омнибокс (объединенную строку адреса и поиска браузерного приложения);
- панель избранных или недавно посещенных сетевых ресурсов; и
- любую другую заранее заданную область интерфейса браузерного приложения или сетевого ресурса, отображенного в браузерном приложении.
[091] Ниже более подробно описано, как контент для набора 814 рекомендуемого цифрового контента формируется и предоставляется электронному устройству 104.
[092] Следует отметить, что набор 814 рекомендуемого цифрового контента может непрерывно обновляться или, иными словами, дополнительные цифровые элементы могут отправляться электронному устройству 104 так, чтобы пользователю 102 предоставлялась «бесконечная» лента рекомендуемого контента. Например, на фиг. 10 представлен снимок 1000 экрана рекомендательного интерфейса, реализованного согласно другому не имеющему ограничительного характера варианту осуществления настоящей технологии (показан пример рекомендательного интерфейса, отображаемого на экране электронного устройства 104, реализованного в виде смартфона). Можно сказать, что представленный на фиг. 10 рекомендательный интерфейс может предоставлять пользователю 102 непрерывно обновляемую ленту рекомендуемых элементов.
Сеть связи
[093] Электронное устройство 104 соединено с сетью 110 связи для доступа к рекомендательному серверу 112 (или, сокращенно, к серверу 112).
[094] В некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии в качестве сети 110 связи может использоваться сеть Интернет. В других вариантах осуществления настоящей технологии сеть 110 связи может быть реализована иначе, например, в виде любой глобальной сети связи, локальной сети связи, частной сети связи и т.п.
[095] Реализация линии связи (отдельно не обозначена) между электронным устройством 104 и сетью 110 связи зависит, среди прочего, от реализации электронного устройства 104. Лишь в качестве примера, не имеющего ограничительного характера, в тех вариантах осуществления настоящей технологии, в которых электронное устройство 104 реализовано в виде беспроводного устройства связи (такого как смартфон), линия связи может быть реализована в виде беспроводной линии связи (такой как канал сети связи 3G, канал сети связи 4G, Wireless Fidelity или сокращенно WiFi®, Bluetooth® и т.п.). В тех примерах, где электронное устройство 104 реализовано в виде ноутбука, линия связи может быть беспроводной (такой как Wireless Fidelity или сокращенно WiFi®, Bluetooth® и т.д.) или проводной (такой как соединение на основе Ethernet).
Множество сетевых ресурсов
[096] С сетью 110 связи также связано множество 130 сетевых ресурсов, содержащее первый сетевой ресурс 132, второй сетевой ресурс 134 и множество 136 дополнительных сетевых ресурсов. Первый сетевой ресурс 132, второй сетевой ресурс 134 и множество 136 дополнительных сетевых ресурсов представляют собой сетевые ресурсы, доступные электронному устройству 104 (а также другим электронным устройствам, потенциально присутствующим в системе 100) через сеть 110 связи. На соответствующий цифровой контент первого сетевого ресурса 132, второго сетевого ресурса 134 и множества 136 дополнительных сетевых ресурсов не накладывается каких-либо особых ограничений.
[097] Предполагается, что любой ресурс из числа первого сетевого ресурса 132, второго сетевого ресурса 134 и множества 136 дополнительных сетевых ресурсов может содержать цифровые документы с цифровым контентом потенциально различных видов. Как описано ниже, множество 136 сетевых ресурсов может содержать по меньшей мере некоторые из потенциально рекомендуемых элементов контента системы 100.
[098] Например, цифровой контент цифровых документов может, среди прочего, включать в себя цифровой аудиоконтент для потоковой передачи или загрузки, цифровой видеоконтент для потоковой передачи или загрузки, новости, блоги, информацию о различных государственных учреждениях, информацию об интересным местах, тематически кластеризованный контент (например, контент, релевантный для интересующихся кикбоксингом), другой мультимедийный цифровой контент и т.д.
[099] В другом примере цифровой контент цифровых документов, содержащихся в первом сетевом ресурсе 132, втором сетевом ресурсе 134 и множестве 136 дополнительных сетевых ресурсов может основываться на тексте. Цифровой контент на основе текста может, среди прочего, включать в себя новости, статьи, блоги, информацию о различных государственных учреждениях, информацию об интересным местах, тематически кластеризованный контент (например, контент, релевантный для интересующихся кикбоксингом) и т.д. Предполагается, что в по меньшей мере некоторых вариантах осуществления настоящей технологии первичные текстовые данные из элементов контента на основе текста могут быть извлечены сервером 112 и сохранены в хранилище 120 данных рекомендаций для последующей обработки.
[0100] При этом следует отметить, что выражение «цифровой контент на основе текста» не означает, что цифровой документ содержит только текст, исключая мультимедийные элементы другого вида. В действительности цифровой документ на основе текста может содержать текстовые элементы и, возможно, мультимедийные элементы другого вида. Например, цифровой документ на основе текста, представляющий собой статью, может содержать текст и фотографии. В другом примере цифровой документ на основе текста, представляющий собой блог, может содержать текст и внедренные видеоэлементы.
[0101] Следует отметить, что элементы цифрового контента с сетевого ресурса могут быть опубликованы издающим лицом или просто «издателем». В общем случае издатель формирует цифровой контент и публикует его так, чтобы он был доступен на сетевом ресурсе. Следует также отметить, что издатель обычно формирует и публикует цифровой контент схожего вида и/или с общей темой. Например, издатель, который обычно публикует цифровой контент, касающийся спортивных новостей, вероятно, опубликует новый цифровой контент, также касающийся спортивных новостей.
[0102] В общем случае элементы цифрового контента потенциально «поддаются обнаружению» электронным устройством 104 с использованием различных средств. Например, пользователь 102 электронного устройства 104 может использовать браузерное приложение (не показано) и ввести URL-адрес, связанный с ресурсом из числа первого сетевого ресурса 132, второго сетевого ресурса 134 и множества 136 дополнительных сетевых ресурсов. В другом примере пользователь 102 электронного устройства 104 может выполнить поиск с помощью поисковой системы (не показана), чтобы обнаружить цифровой контент одного или нескольких ресурсов из числа первого сетевого ресурса 132, второго сетевого ресурса 134 и множества 136 дополнительных сетевых ресурсов. Как описано выше, полезно, когда пользователь 102 заранее знает, в каком цифровом контенте он заинтересован.
[0103] В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что пользователь 102 способен оценить один или несколько элементов цифрового контента, потенциально рекомендуемых рекомендательной системой 180, размещенной на сервере 112. Ниже описана возможная реализация сервера 112 и рекомендательной системы 180 в некоторых вариантах осуществления настоящей технологии.
Рекомендательный сервер
[0104] Сервер 112 может быть реализован в виде традиционного компьютерного сервера. В примере осуществления настоящей технологии сервер 112 может быть реализован в виде сервера Dell™ PowerEdge™, работающего под управлением операционной системы Microsoft™ Windows Server™. Очевидно, что сервер 112 может быть реализован с использованием любых других подходящих аппаратных средств, прикладного программного обеспечения и/или встроенного программного обеспечения либо их сочетания. В представленных не имеющих ограничительного характера вариантах осуществления настоящей технологии сервер 112 представляет собой один сервер. В других не имеющих ограничительного характера вариантах осуществления настоящей технологии функции сервера 112 могут быть распределены между несколькими серверами.
[0105] В общем случае сервер 112 способен получать от электронного устройства 104 запрос 150 рекомендации относительно цифрового контента и в ответ на запрос 150 формировать сообщение 152 рекомендуемого цифрового контента, которое должно передаваться электронному устройству 104.
[0106] Предполагается, что по меньшей мере некоторый цифровой контент в сообщении 152 рекомендуемого цифрового контента может быть специально сформирован или иным образом адаптирован для пользователя 102, связанного с электронным устройством 104. Сервер 112 может предоставлять электронному устройству 104 для отображения пользователю 102 (в рекомендательном интерфейсе рекомендательного приложения 106) информацию, которая указывает на набор 814 рекомендуемого цифрового контента и, среди прочего, входит в состав цифрового контента в сообщении 152 рекомендуемого цифрового контента.
[0107] Должно быть понятно, что набор 814 рекомендуемого цифрового контента, предоставленный пользователю 102 сервером 112, может содержать цифровой контент, доступный в одном из множества 130 сетевых ресурсов и заранее не известный пользователю 102. Ниже более подробно описывается формирование набора 814 рекомендуемого цифрового контента сервером 112.
[0108] Как описано выше, рекомендательный сервер 112 способен выполнять множество компьютерных процедур, которые в данном документе обобщенно называются рекомендательной системой 180. В контексте настоящей технологии сервер 112, предоставляющий рекомендательные сервисы с использованием рекомендательной системы 180, способен использовать один или несколько алгоритмов MLA для поддержки множества поисковых систем. Следует отметить, что один или несколько алгоритмов MLA рекомендательной системы 180 могут использоваться сервером 112 для формирования набора 814 рекомендуемого цифрового контента.
[0109] В общем случае алгоритмы MLA способны обучаться на обучающих выборках и выполнять прогнозирование на основе новых (ранее не известных) данных. Алгоритмы MLA обычно используются для первоначального построения модели на основе обучающих входных данных, чтобы затем на основе данных осуществлять прогнозы или принимать решения, выраженные в виде выходных данных, а не выполнять статические машиночитаемые команды. Алгоритмы могут использоваться в качестве моделей оценивания, моделей ранжирования, моделей классификации и т.п.
[0110] Должно быть понятно, что в некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии для реализации алгоритма MLA могут использоваться алгоритмы MLA различных видов с различными архитектурами и/или топологиями. При этом реализация алгоритма MLA сервером 112 может быть разделена на два основных этапа: этап обучения и этап использования. Сначала алгоритм MLA обучается на этапе обучения. Затем, когда алгоритму MLA известно, какие предполагаются входные данные и какие должны выдаваться выходные данные, этот алгоритм MLA выполняется с реальными данными на этапе использования.
[0111] В по меньшей мере некоторых вариантах осуществления настоящей технологии сервер 112 может выполнять алгоритм 140 MLA на основе деревьев решений. В общем случае алгоритм MLA на основе деревьев решений представляет собой модель машинного обучения, содержащую одно или несколько деревьев решений, которые используются для перехода от наблюдений за объектом (представлено в ветвях) к заключениям относительно целевого значения объекта (представлено в листьях). В одном не имеющем ограничительного характера варианте осуществления настоящей технологии алгоритм MLA на основе деревьев решений может быть реализован в соответствии с фреймворком CatBoost.
[0112] Обучение алгоритма 140 MLA на основе деревьев решений (модели оценивания релевантности) согласно по меньшей мере некоторым вариантам осуществления настоящей технологии описано в патенте US20190164084 «Method of and system for generating prediction quality parameter for a predication model executed in a machine learning algorithm» (опубликован 30 мая 2019 г.), содержание которого полностью включено в настоящий документ посредством ссылки. Дополнительная информация о библиотеке CatBoost, ее реализации и алгоритмах градиентного бустинга доступна по ссылке https://catboost.ai.
[0113] В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что сервер 112 может использовать алгоритм 140 MLA на основе деревьев решений для прогнозирования ранжированного списка по меньшей мере некоторых потенциально рекомендуемых элементов контента. Как описано ниже со ссылкой на фиг. 7, сервер 112 может предоставлять алгоритму 140 MLA на основе деревьев решений входные данные, содержащие данные, связанные с пользователем 102, и данные, связанные с множеством элементов цифрового контента (включая элементы 501 и 502), а алгоритм 140 MLA способен выдавать ранжированный список 780 элементов контента.
[0114] В по меньшей мере некоторых вариантах осуществления настоящей технологии сервер 112 может выполнять одну или несколько моделей 160 матричной факторизации, которые, среди прочего, используются сервером 112 с целью формирования данных этапа использования для алгоритма 140 MLA на основе деревьев решений (см. фиг. 1). В общем случае можно сказать, что модель матричной факторизации представляет собой модель машинного обучения, используемую для разложения данных с матричной структурой на составляющие элементы. В не имеющем ограничительного характера примере модель 160 матричной факторизации может быть реализована сервером 112 в виде модели на основе разложения SVD. В некоторых вариантах осуществления настоящей технологии модель 160 матричной факторизации может быть реализована в виде нейронной сети (NN, Neural Network), обученной разложению данных с матричной структурой на один или несколько векторов.
[0115] Следует отметить, что возможный способ реализации модели 160 матричной факторизации алгоритма сервером 112 в некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии в целом описан в патенте US20180075137 «Method and apparatus for training a machine learning algorithm (MLA) for generating a content recommendation in a recommendation system and method and apparatus for generating the recommended content using the MLA» (опубликован 15 мая 2018 г.), содержание которого полностью включено в настоящий документ посредством ссылки и далее более подробно не обсуждается.
[0116] Независимо от конкретного варианта реализации модели 160 матричной факторизации, сервер 112 может использовать модель 160 матричной факторизации, формирующую векторные представления различных видов. В общем случае векторное представление относится к относительно низкоразмерному пространству, в которое можно преобразовывать высокоразмерные векторы. Векторные представления упрощают машинное обучение на больших входных данных, например, подобных разреженным векторам, представляющим слова. В идеальном случае в векторном представлении фиксируется некоторая семантика входных данных путем размещения семантически близких входных данных близко друг к другу в пространстве векторных представлений. Также предполагается, что векторные представления могут быть выучены и повторно использованы в различных моделях.
[0117] Как более подробно описано ниже, сервер 112 может использовать модель 160 матричной факторизации для формирования на основе матрицы, содержащей данные взаимодействий пользователь-элемент, векторных представлений двух видов, т.е. векторных представлений элементов и векторных представлений пользователей. Это означает, что векторное представление, сформированное моделью 160 матричной факторизации, может быть совместного вида в некоторых (но не во всех) вариантах осуществления настоящей технологии.
[0118] Следует отметить, что в по меньшей мере некоторых вариантах осуществления настоящей технологии сервер 112 может использовать модель 160 матричной факторизации для выполнения так называемой совместной фильтрации (CF, Collaborative Filtering) рекомендуемого контента. В общем случае в способах на основе фильтрации CF используются прошлые взаимодействия между пользователями и элементами цифрового контента, чтобы отфильтровывать менее желательный контент при формировании рекомендаций для пользователей. При этом методам на основе фильтрации CF обычно присуща ограниченная производительность в случае чрезмерно разреженных взаимодействий пользователь-элемент, что характерно для таких сценариев, как интернет-покупки, или для любых других рекомендательных платформ с очень большим набором потенциально рекомендуемых элементов. Как описано ниже, разработчики настоящей технологии разработали способы и системы для уменьшения времени, требуемого рекомендательной системе 180 для предоставления рекомендуемого контента пользователю.
[0119] В некоторых вариантах осуществления настоящей технологии сервер 112 может, в известном смысле, обновлять модель 160 матричной факторизации на основе последней коллекции прошлых взаимодействий, собранных рекомендательной системой 180. Очевидно, что поскольку рекомендательная система 180 предоставляет рекомендательные сервисы своим пользователям, то может быть собрана и сохранена новая информация, указывающая на взаимодействия пользователь-элемент, в результате чего увеличивается количество данных о взаимодействиях пользователь-элемент, доступных для обучения (или повторного обучения) модели 160 матричной факторизации. Кроме того, в пул рекомендаций с течением времени может добавляться новый цифровой контент, для которого рекомендательной системе 180 могут потребоваться векторные представления элементов для оценивания релевантности. Например, сервер 112 может выполнять запланированные или заранее заданные иным образом этапы обучения модели 160 матричной факторизации на основе последних данных взаимодействий пользователь-элемент, доступных в хранилище 120 данных рекомендаций.
[0120] Как описано ниже, сервер 112 может использовать модель 160 матричной факторизации для формирования различных версий векторных представлений пользователей и векторных представлений элементов, при этом каждая версия соответствует выходным данным модели 160 матричной факторизации после соответствующих этапов обучения модели 160 матричной факторизации. Иными словами, модель 160 матричной факторизации, обученная на основе первой версии данных о взаимодействиях пользователь-элемент, способна формировать первую версию векторных представлений пользователей и элементов, а модель 160 матричной факторизации, обученная на основе второй (обновленной) версии данных о взаимодействиях пользователь-элемент, способна формировать вторую (обновленную) версию векторных представлений пользователей и элементов.
Хранилище данных рекомендаций
[0121] Сервер 112 связан с хранилищем 120 данных рекомендаций. Хранилище 120 данных рекомендаций изображено в виде отдельного от сервера 112 элемента. Тем не менее, предполагается, что хранилище 120 данных рекомендаций может быть реализовано в виде неотъемлемой части сервера 112 без выхода за границы настоящей технологии. В некоторых вариантах осуществления изобретения хранилище 120 данных рекомендаций может представлять собой нераспределенное хранилище данных. В качестве альтернативы функции хранилища 120 данных рекомендаций могут быть распределены между несколькими физическими устройствами, как описано ниже.
[0122] В общем случае хранилище 120 данных рекомендаций способно сохранять данные, сформированные, полученные и/или обработанные сервером 112, на котором размещена рекомендательная система 180, для временного и/или постоянного хранения. Например, хранилище 120 данных может, среди прочего, хранить данные для поддержки рекомендательных сервисов рекомендательной системы 180. Предполагается, что хранилище 120 данных рекомендаций может содержать базу данных для хранения вышеупомянутых данных в структурированном виде.
[0123] Например, хранилище 120 данных способно хранить информацию, связанную с соответствующими элементами рекомендательной системы 180, которая далее в целом называется данными элементов. Данные элементов содержат информацию о соответствующем цифровом контенте, обнаруженном и каталогизированном сервером 112. В частности, данные элементов могут содержать цифровой контент соответствующих элементов цифрового контента, потенциально рекомендуемых рекомендательной системой 180.
[0124] На характер потенциально рекомендуемого сервером 112 цифрового контента не накладывается каких-либо особых ограничений. Некоторые примеры потенциально рекомендуемого сервером 112 цифрового контента, среди прочего, включают в себя цифровые документы, такие как:
- новостная статья;
- публикация;
- веб-страница;
- сообщение на веб-сайте социальных медиа;
- новое приложение для загрузки из магазина приложений;
- новая песня (музыкальная фонограмма) для воспроизведения или загрузки с сетевого ресурса;
- аудиокнига для воспроизведения или загрузки с сетевого ресурса;
- подкаст для воспроизведения или загрузки с сетевого ресурса;
- новый фильм (видеоклип) для воспроизведения или загрузки с сетевого ресурса;
- продукт для приобретения на сетевом ресурсе; и
- новый цифровой документ, загруженный для просмотра на веб-сайте социальных медиа (такой как новая фотография, загруженная на страницу INSTAGRAM™ или FACEBOOK™).
[0125] В других не имеющих ограничительного характера вариантах осуществления изобретения данные элементов могут содержать информацию об одном или нескольких признаках элемента, связанных с соответствующими элементами цифрового контента. Например, в хранилище 120 данных могут храниться данные, связанные с соответствующими элементами и указывающие на:
- популярность элемента;
- коэффициент «кликов» для элемента;
- время на «клик», связанное с элементом;
- другие статистические данные, связанные с элементом, и т.д.
[0126] Следует также отметить, что хранилище 120 данных может наполняться дополнительной информацией о множестве пользователей рекомендательного сервиса, которая далее в целом называется данными пользователей. Например, сервер 112 может собирать и сохранять в хранилище 120 данных данные пользовательских профилей, связанные с соответствующими пользователями рекомендательной системы 180, такие как имя, возраст, пол, выбранные пользователем виды цифрового контента и т.п. Другая информация о множестве пользователей рекомендательного сервиса также может храниться в хранилище 120 данных в качестве части данных пользователей без выхода за границы настоящей технологии.
[0127] Следует также отметить, что хранилище 120 данных может хранить информацию о взаимодействиях между элементами цифрового контента и пользователями, которая далее в целом называется данными взаимодействий пользователь-элемент. Например, сервер 112 может отслеживать множество различных взаимодействий пользователь-элемент между пользователями и ранее рекомендованными элементами и собирать соответствующие данные.
[0128] Например, пусть пользователь взаимодействовал с элементом цифрового контента, представляющим собой цифровой документ, ранее рекомендованный этому пользователю рекомендательным сервисом. Сервер 112 может отслеживать и собирать данные о взаимодействиях пользователь-элемент этого пользователя с этим цифровым документом в виде пользовательских событий, возникших между этим пользователем и этим цифровым элементом. В качестве примеров различных видов пользовательских событий, которые может отслеживать и собирать сервер 112, среди прочего, можно привести следующие:
- пользователь выполнил прокрутку цифрового элемента;
- пользователь положительно оценил цифровой элемент;
- пользователь отрицательно оценил цифровой элемент;
- пользователь «поделился» цифровым элементом;
- пользователь «кликнул» или «выбрал» цифровой элемент;
- пользователь затратил некоторое «время взаимодействия» на просмотр цифрового элемента; и
- пользователь приобрел, заказал или загрузил цифровой элемент.
[0129] Поскольку, как описано выше, рекомендательная система 180 предоставляет рекомендательные сервисы своим пользователям, в хранилище 120 данных рекомендаций собираются и сохраняются новые данные взаимодействий пользователь-элемент. Для лучшей иллюстрации этого дальнейшее описание ссылается на фиг. 2, где приведено представление 200 того, как данные взаимодействий пользователь-элемент собираются и сохраняются в хранилище 120 данных рекомендаций и к каким данным взаимодействий пользователь-элемент может осуществлять доступ сервер 112 в разные моменты времени.
[0130] Например, как показано, в момент 201 времени в хранилище 120 данных рекомендаций хранятся данные 211 взаимодействий пользователь-элемент. Данные 211 взаимодействий пользователь-элемент содержат данные взаимодействий пользователь-элемент, собранные и сохраненные сервером 112 в хранилище 120 данных рекомендаций в течение периода времени до момента 201 времени. При этом, как описано выше, с течением времени сервер 112 способен собирать и сохранять в хранилище 120 данных рекомендаций дополнительные данные о взаимодействиях. Соответственно, в момент 202 времени в хранилище 120 данных рекомендаций хранятся данные 212 взаимодействий пользователь-элемент. Данные 212 взаимодействий пользователь-элемент содержат данные взаимодействий пользователь-элемент, собранные и сохраненные сервером 112 в хранилище 120 данных рекомендаций в течение периода времени до момента 202 времени. Можно сказать, что данные 212 взаимодействий пользователь-элемент могут содержать данные 211 взаимодействий пользователь-элемент и дополнительные данные взаимодействий пользователь-элемент, собранные между моментом 201 времени и моментом 202 времени. В результате, если сервер 112 обращается к хранилищу 120 данных рекомендаций в момент 201 времени, то для получения оказываются доступными данные 211 взаимодействий пользователь-элемент. Если сервер 112 обращается к хранилищу 120 данных рекомендаций в момент 202 времени, то для получения доступны данные 212 взаимодействий пользователь-элемент. Аналогично, если сервер 112 обращается к хранилищу 120 данных рекомендаций в момент 203 времени, то для получения доступны данные 213 взаимодействий пользователь-элемент. Подобным образом, если сервер 112 обращается к хранилищу 120 данных рекомендаций в момент 204 времени, то для получения доступны данные 214 взаимодействий пользователь-элемент.
[0131] Как описано ниже, сервер 112 может обращаться к хранилищу 120 данных рекомендаций в различные моменты времени с целью получения (наиболее свежих) данных о взаимодействиях пользователь-элемент для обучения (и повторного обучения) модели 160 матричной факторизации.
Нераспределенное и распределенное хранилища данных
[0132] Сервер 112 также связан с нераспределенным хранилищем 170 данных и с распределенным хранилищем 130 данных. Ниже описана реализация нераспределенного хранилища 170 данных и распределенного хранилища 130 данных в контексте настоящей технологии.
[0133] Следует отметить, что нераспределенное хранилище 170 данных может быть реализовано на (одном) физическом устройстве. В некоторых вариантах осуществления изобретения нераспределенное хранилище 170 данных может не быть отдельным от сервера 112 элементом (т.е. нераспределенное хранилище 170 данных может входить в состав сервера 112). Предполагается, что нераспределенное хранилище 170 данных может содержать базу данных для хранения данных в структурированном виде.
[0134] В по меньшей мере некоторых не имеющих ограничительного характера вариантах осуществления настоящей технологии нераспределенное хранилище 170 данных может быть реализовано в виде хранилища данных ключ-значение (KV, Key-Value). В общем случае хранилище данных KV представляет собой хранилище данных, предназначенное для хранения, извлечения и управления ассоциативными массивами, со структурой данных, общеизвестной как словарь или хеш-таблица. Словари содержат коллекцию объектов или записей, которые, в свою очередь, содержат множество различных полей, каждое из которых содержит данные. Эти записи хранятся и извлекаются с использованием ключа, который однозначно идентифицирует запись и используется для поиска связанных с ним данных в базе данных. Хранилища данных KV обрабатывают данные как одну непрозрачную коллекцию, которая может иметь разные поля для каждой записи. Это обеспечивает значительную гибкость и может быть реализовано с использованием методов объектно-ориентированного программирования. Хранилища данных KV часто требуют для хранения данных существенно меньше памяти, чем хранилища данных других видов, что позволяет обеспечить значительное увеличение производительности при определенных рабочих нагрузках.
[0135] На фиг. 3 приведено представление 300 по меньшей мере некоторых данных, хранящихся в нераспределенном хранилище 170 данных. Следует отметить, что нераспределенное хранилище 170 данных может хранить по меньшей мере некоторые данные, связанные с пользователями рекомендательной системы 180. В частности, нераспределенное хранилище 170 данных может хранить для конкретного пользователя одно или несколько векторных представлений пользователей, сформированных сервером 112 с использованием модели 160 матричной факторизации.
[0136] Для лучшей иллюстрации этого дальнейшее описание ссылается на представление 350 зависящих от пользователя данных 310, хранящихся в нераспределенном хранилище 170 данных для пользователя 302. Зависящие от пользователя данные 310 содержат информацию для идентификации пользователя 302. Например, зависящие от пользователя данные 310 могут быть связаны с идентификатором пользователя, однозначно связанным с пользователем 302. В одном варианте осуществления изобретения этот идентификатор пользователя может использоваться в качестве ключа в хранилище данных KV для доступа к данным, связанным с пользователем 302.
[0137] Зависящие от пользователя данные 310 также содержат по меньшей мере одно векторное представление пользователя, связанное с пользователем 302. Как показано, пользователь 302 связан с данными 320 векторных представлений, содержащими первое векторное представление 360 пользователя, связанное с первым значением 362 версии и второе векторное представление 370 пользователя, связанное со вторым значением 372 версии. Первое значение 362 версии указывает на первую итерацию этапа использования модели 160 матричной факторизации, а второе значение 372 версии указывает на вторую итерацию этапа использования модели 160 матричной факторизации. Кроме того, можно сказать, что первое значение 362 версии и второе значение 372 версии указывают на соответствующие версии векторных представлений пользователей, т.е. первое значение 362 версии указывает на то, что первое векторное представление 360 пользователя сформировано моделью 160 матричной факторизации после первого этапа ее обучения (на основе первой версии данных о взаимодействиях пользователь-элемент), а второе значение 372 версии указывает на то, что второе векторное представление 370 пользователя сформировано моделью 160 матричной факторизации после второго этапа ее обучения (на основе второй, обновленной, версии данных о взаимодействиях пользователь-элемент).
[0138] Как описано ниже применительно к распределенному хранилищу 130 данных, разработчики настоящей технологии установили, что векторные представления пользователей в связи с соответствующими пользователями рекомендательной системы 180 может быть выгодно хранить в нераспределенном хранилище 170 данных, а не в распределенном хранилище 130 данных. По меньшей мере одно преимущество хранения векторных представлений пользователей в нераспределенном хранилище 170 данных обусловлено тем, что рекомендательные системы обычно содержат значительно большее количество пользователей по сравнению с количеством цифровых элементов в пуле рекомендаций. В результате из-за большого количества подлежащих сохранению векторных представлений пользователей хранение векторных представлений пользователей в нераспределенном хранилище 170 данных, а не в распределенном хранилище 130 данных может повысить быстроту реагирования рекомендательной системы 180 (т.е. уменьшить интервал времени между получением указания о предоставлении рекомендации и предоставлением контента пользователю).
[0139] Как описано ниже, в нераспределенном хранилище 170 данных в различные моменты времени может храниться различное количество векторных представлений пользователей в связи с пользователем рекомендательной системы 180. Например, после первой итерации этапа использования модели 160 матричной факторизации (в отношении которой был выполнен первый этап обучения) сервер 112 может хранить в нераспределенном хранилище 170 данных первое векторное представление 360 пользователя в сочетании с первым значением 362 версии. Первое векторное представление 360 пользователя представляет собой выходные данные первой итерации этапа использования модели 160 матричной факторизации. Таким образом, в первый момент времени в нераспределенном хранилище 170 данных может храниться лишь одно векторное представление пользователя.
[0140] После второй итерации этапа использования модели 160 матричной факторизации (в отношении которой был выполнен второй этап обучения) сервер 112 может хранить в нераспределенном хранилище 170 данных второе векторное представление 370 пользователя в сочетании со вторым значением 372 версии в дополнение к первому векторному представлению 360 пользователя, связанному с первым значением 362 версии. Второе векторное представление 370 пользователя представляет собой выходные данные второй итерации этапа использования модели 160 матричной факторизации. Таким образом, во второй момент времени в нераспределенном хранилище 170 данных могут храниться два векторных представления пользователя, каждое из которых связано с соответствующей версией векторных представлений пользователей для пользователя 302, сформированных моделью 160 матричной факторизации.
[0141] В третий момент времени сервер 112 может удалить из нераспределенного хранилища 170 данных данные, представляющие первое векторное представление 360 пользователя и первое значение 362 версии, чтобы в третий момент времени второе векторное представление 370 пользователя хранилось в нераспределенном хранилище 170 данных вместо первого векторного представления 360 пользователя и второго векторного представления 370 пользователя. Ниже более подробно описано определение сервером 112 момента времени для удаления данных, представляющих первое векторное представление 360 пользователя и первое значение 362 версии, т.е. третьего момента времени, и/или инициирование удаления сервером 112 этих данных.
[0142] На фиг. 4 приведено представление 400 для варианта реализации распределенного хранилища 130 данных согласно по меньшей мере некоторым вариантам осуществления настоящей технологии. В отличие от нераспределенного хранилища 170 данных, в распределенном хранилище 130 данных информация хранится в нескольких узлах и часто в реплицированном виде. Например, данные в распределенном хранилище 130 данных могут храниться в нескольких физических устройствах. В одном варианте осуществления изобретения данные могут храниться на нескольких компьютерных серверах в одном физическом местоположении (например, в центре обработки данных) или могут быть распределены в сети связанных компьютеров.
[0143] Например, данные, хранящиеся в распределенном хранилище 130 данных, могут храниться на множестве 450 серверов, содержащем первый сервер 451, второй сервер 452 и третий сервер 453. Несмотря на то, что множество 450 серверов показано как содержащее лишь три сервера, предполагается, что множество 450 серверов может содержать другое количество серверов без выхода за границы настоящей технологии.
[0144] Предполагается, что множество 450 серверов может быть расположено в различных географических местоположениях. В не имеющем ограничительного характера примере первый сервер 451 и второй сервер 452 могут располагаться рядом с первым географическим местоположением, а третий сервер 453 может располагаться рядом со вторым географическим местоположением. В по меньшей мере одном варианте осуществления изобретения сервер из множества 450 серверов может содержать соответствующий узел из числа нескольких узлов распределенного хранилища 130 данных. В по меньшей мере некоторых вариантах осуществления настоящей технологии предполагается, что несколько узлов распределенного хранилища 130 данных могут соответствовать серверам из множества 450 серверов.
[0145] Следует отметить, что когда сервер 112 запрашивает данные, которые должны храниться в распределенном хранилище 130 данных, распределенное хранилище 130 данных может хранить эти данные в распределенном виде, например, для обеспечения отказоустойчивости и/или для выравнивания нагрузки. В первом примере распределенное хранилище 130 данных может хранить данные способом, обеспечивающим доступность данных в случае отказа в узле. Во втором примере распределенное хранилище 130 данных может хранить данные способом, позволяющим запрашивать подлежащие обработке данные параллельно из нескольких узлов, а не ограничиваться одним узлом.
[0146] В по меньшей мере некоторых вариантах осуществления настоящей технологии распределенное хранилище 130 данных может содержать распределенную базу данных для хранения данных в структурированном виде на множестве 450 серверов. Предполагается, что распределенная база данных может быть разделена на разделы и/или сегменты и может храниться в распределенном виде на множестве 450 серверов.
[0147] В некоторых случаях распределенное хранилище 130 данных может использовать методы репликации для хранения данных в нескольких узлах. В общем случае репликация включает в себя использование специализированного программного обеспечения, выполняющего поиск изменений в распределенном хранилище 130 данных. После определения изменений процесс репликации обеспечивает, чтобы все узлы, в известном смысле, «выглядели одинаково». Процесс репликации может быть сложным и требовать много времени, кроме того, он зависит от размера распределенного хранилища 130 данных. Для этого процесса также могут требоваться значительные обрабатывающие ресурсы. В других случаях распределенное хранилище 130 данных может использовать методы дублирования для хранения данных в нескольких узлах. В общем случае распределенное хранилище 130 данных может выбирать один узел в качестве главного и затем дублировать этот узел. Следует отметить, что способы репликации и дублирования позволяют обеспечивать актуальность данных в каждом узле распределенного хранилища 130 данных.
[0148] При этом распределенное хранилище 130 данных может использовать другие методы для хранения данных в нескольких своих узлах. Реализация этих методов, среди прочего, может зависеть от потребностей предприятия, конфиденциальности данных, хранящихся в распределенном хранилище 130 данных, и цены, которую предприятие готово платить за безопасность, непротиворечивость и целостность данных.
[0149] В контексте настоящей технологии сервер 112 способен хранить в распределенном хранилище 130 данных векторные представления элементов, связанные с цифровыми элементами. Например, сервер 112 может инициировать процесс сохранения одного векторного представления элемента (или нескольких векторных представлений элемента) в распределенном хранилище 130 данных, при этом процесс может рассматриваться как завершенный, когда векторное представление элемента хранится в каждом узле из числа нескольких узлов распределенного хранилища 130 данных. Иными словами, распределенному хранилищу 130 данных может потребоваться некоторое время для сохранения векторного представления элемента в каждом узле после инициирования сервером 112 процесса сохранения.
[0150] Следует отметить, что в описанном выше примере, если сервер 112 запрашивает из распределенного хранилища 130 данных векторное представление элемента в момент времени до завершения процесса сохранения, сервер 112 может получить или не получить это векторное представление элемента, что, среди прочего, зависит от того, какой узел распределенного хранилища 130 данных получает запрос. Для лучшей иллюстрации этого можно предположить, что в момент времени, когда 112 запрашивает векторное представление элемента в распределенном хранилище 130 данных (до завершения процесса сохранения), это векторное представление элемента сохранено в первом узле из числа нескольких узлов, но еще не сохранено во втором узле из числа нескольких узлов. В таком случае, если запрос получает первый узел, сервер 112 может получить векторное представление элемента. Если же запрос получает второй узел, сервер 112 не может получить векторное представление элемента из распределенного хранилища 130 данных.
[0151] В другом примере сервер 112 может инициировать процесс сохранения в распределенном хранилище 130 данных одного обновленного векторного представления элемента (или нескольких обновленных векторных представлений элемента) для цифрового элемента. Аналогично, для завершения процесса сохранения может потребоваться сохранение обновленного векторного представления элемента в качестве замещения утратившего актуальность векторного представления элемента (например, путем перезаписи или замены утратившего актуальность векторного представления элемента) в каждом узле из числа нескольких узлов распределенного хранилища 130 данных. В этом примере, если сервер 112 запрашивает векторное представление элемента, связанное с конкретным элементом, в момент времени до завершения процесса сохранения обновленного векторного представления элемента, сервер 112 может получить различные версии векторного представления элемента для этого элемента, среди прочего, в зависимости от того, какой узел распределенного хранилища 130 данных получает этот запрос. Для лучшей иллюстрации этого можно предположить, что в момент времени, когда сервер 112 запрашивает векторное представление элемента, связанное с этим элементом, из распределенного хранилища 130 данных, обновленное векторное представление элемента сохранено вместо утратившего актуальность векторного представления элемента в первом узле из числа нескольких узлов, но еще не сохранено во втором узле из числа нескольких узлов, т.е. во втором узле по-прежнему хранится утратившее актуальность векторное представление элемента. В таком случае, если запрос получает первый узел, сервер 112 может получить обновленное векторное представление элемента для этого элемента. Если же запрос получает второй узел, сервер 112 может получить из распределенного хранилища 130 данных утратившее актуальность векторное представление элемента для этого элемента.
[0152] Как описано выше, для процесса сохранения данных в распределенном хранилище 130 данных требуется существенно меньше времени, чем для процесса сохранения данных в нераспределенном хранилище 170 данных. Например, для завершения процесса сохранения в нераспределенном хранилище 170 данных может потребоваться сохранение большего количества векторных представлений (пользователей) по сравнению с количеством векторных представлений (элементов), подлежащих сохранению в распределенном хранилище 130 данных.
[0153] Следует отметить, что когда сервер 112 запрашивает векторное представление пользователя для пользователя из нераспределенного хранилища 170 данных и векторное представление элемента для элемента из распределенного хранилища 130 данных, то желательно при этом получать векторные представления одной и той же версии. Разработчики настоящей технологии установили, что в случае использования традиционных способов хранения данных, если запрос векторного представления элемента отправляется сервером 112 до завершения процесса сохранения обновленного векторного представления элемента распределенным хранилищем 130 данных, то отсутствует гарантия того, что версия полученного векторного представления элемента будет соответствовать последней версии векторного представления пользователя, полученного из нераспределенного хранилища 170 данных.
[0154] Как описано ниже, разработчики настоящей технологии разработали способы и системы для хранения векторных представлений пользователей в нераспределенном хранилище 170 данных и векторных представлений элементов в распределенном хранилище 130 данных способом, который вне зависимости от того, завершен ли процесс сохранения обновленного векторного представления элемента во время операции получения информации, обеспечивает соответствие версии векторного представления пользователя, полученного сервером 112 из нераспределенного хранилища 170 данных, версии векторного представления элемента, полученного сервером 112 из распределенного хранилища 130 данных.
[0155] Для лучшей иллюстрации этого дальнейшее описание ссылается на фиг. 5, где приведено представление 500 временной диаграммы событий на стороне сервера, событий на стороне распределенного хранилища данных и событий на стороне нераспределенного хранилища данных. В частности, события на стороне нераспределенного хранилища данных показаны на первой временной диаграмме 510, соответствующей временной диаграмме событий нераспределенного хранилища 170 данных, события на стороне сервера показаны на второй временной диаграмме 520, соответствующей временной диаграмме событий сервера 112, а события на стороне распределенного хранилища данных показаны на третьей временной диаграмме 530, соответствующей временной диаграмме событий распределенного хранилища 130 данных.
[0156] Как показано на примере события 521, сервер 112 способен получать из хранилища 120 данных рекомендаций последние данные взаимодействий пользователь-элемент, доступные в этот момент времени. Например, сервер 112 может обратиться к хранилищу 120 данных рекомендаций в момент 201 времени (см. фиг. 2) и в результате может получить данные 211 взаимодействий пользователь-элемент.
[0157] Сервер 112 может получить в момент 201 времени данные 211 взаимодействий пользователь-элемент для обучения модели 160 матричной факторизации. Например, сервер 112 может выполнить первый этап обучения модели 160 матричной факторизации на основе полученных данных 211 взаимодействий пользователь-элемент и сформировать первые векторные представления пользователей и первые векторные представления элементов (их первую версию). Сервер 112 также может связать первые векторные представления пользователей и первые векторные представления элементов с первым значением версии, которое указывает на то, что первые векторные представления пользователей и первые векторные представления элементов сформированы в ходе первой итерации этапа использования модели 160 матричной факторизации, а также указывает на то, что первые векторные представления пользователей и первые векторные представления элементов сформированы в ходе общей итерации этапа использования и, следовательно, имеют одну и ту же версию.
[0158] Формирование сервером 112 первых векторных представлений пользователей и первых векторных представлений элементов и связывание их с первым значением версии показаны на примере события 522. Сервер 112 может отправлять данные, указывающие на первые векторные представления пользователей, и соответствующие первые значения в нераспределенное хранилище 170 данных для хранения. Получение данных, указывающих на первые векторные представления пользователей и соответствующие первые значения, нераспределенным хранилищем 170 данных показано на примере события 511.
[0159] Предполагается, что передача данных сервером 112 может инициировать процесс 580 сохранения нераспределенным хранилищем 170 данных. Завершение процесса 580 сохранения первых векторных представлений пользователей и соответствующих первых значений нераспределенным хранилищем 170 данных показано на примере события 512.
[0160] После завершения процесса 580 сохранения сервер 112 может получить указание на этот факт от нераспределенного хранилища 170 данных. Получение этого указания показано на примере события 598. В ответ сервер 112 может отправить данные, указывающие на первые векторные представления элементов и соответствующие первые значения, в распределенное хранилище 130 данных для хранения. Получение данных, указывающих на первые векторные представления элементов и соответствующие первые значения, распределенным хранилищем 130 данных показано на примере события 531.
[0161] Предполагается, что передача данных сервером 112 может инициировать процесс 540 сохранения распределенным хранилищем 130 данных. Завершение процесса 540 сохранения первых векторных представлений элементов и соответствующих первых значений распределенным хранилищем 130 данных показано на примере события 532. Следует отметить, что интервал времени между событиями 531 и 532 существенно меньше интервала времени между событиями 511 и 512. Как описано выше, это объясняется тем, что количество векторных представлений пользователей, подлежащих сохранению в процессе 580 сохранения, больше количества векторных представлений элементов, подлежащих сохранению в процессе 540 сохранения.
[0162] Для иллюстрации можно предположить, что запрос рекомендации контента (например, запрос 150) получается сервером 112 и инициирует выполнение процедуры рекомендации контента сервером 112. Выполнение сервером 112 первой процедуры рекомендации контента показано на примере события 523. В ходе выполнения процедуры рекомендации контента сервер 112 способен выполнять алгоритм 140 MLA на основе деревьев решений с целью ранжирования одного или нескольких элементов для пользователя 102 на основе их оцененной релевантности для него. Как описано выше, сервер 112 может получать векторное представление пользователя, связанное с пользователем 102, и одно или несколько векторных представлений элементов, связанных с одним или несколькими элементами, подлежащими ранжированию алгоритмом 140 MLA.
[0163] В ходе выполнения процедуры рекомендации контента (в интерактивном режиме) сервер 112 может отправлять запрос распределенному хранилищу 130 данных для получения одного или нескольких векторных представлений элементов, связанных с одним или несколькими цифровыми элементами, подлежащими ранжированию. В ответ на запрос от сервера 112 распределенное хранилище 130 данных может определять и предоставлять серверу 112 одно или несколько векторных представлений элементов, связанных с элементами, подлежащими ранжированию. Определение и предоставление одного или нескольких векторных представлений элементов показаны на примере события 533.
[0164] Как показано на фиг. 5, событие 533 происходит после события 532 и, следовательно, после завершения распределенным хранилищем 130 данных процесса 540 сохранения первых векторных представлений элементов и соответствующих первых значений. Поскольку событие 533 происходит после события 532, сервер 112 получает первые векторные представления элементов, связанные с первыми значениями, независимо от того, какой узел из числа нескольких узлов распределенного хранилища 130 данных получает запрос.
[0165] В ходе выполнения процедуры рекомендации контента (в интерактивном режиме) сервер 112 может отправлять запрос нераспределенному хранилищу 170 данных для получения векторного представления пользователя для пользователя, связанного с запросом рекомендации контента (например, пользователя 102). В ответ на запрос от сервера 112 нераспределенное хранилище 170 данных может определять и предоставлять серверу 112 векторное представление пользователя, связанное с пользователем 102. Определение и предоставление векторного представления пользователя показаны на примере события 513.
[0166] Чтобы определить нужное векторное представление пользователя для получения, сервер 112 может использовать идентификатор пользователя, связанный с пользователем, и первое значение, связанное с полученным одним или несколькими векторными представлениями элементов, т.е. сервер 112 может использовать идентификатор пользователя для обеспечения того, чтобы получаемое векторное представление пользователя было связано с нужным пользователем, и может использовать первое значение для обеспечения того, чтобы векторное представление пользователя, получаемое для этого пользователя, имело ту же нужную версию, что и полученное одно или несколько векторных представлений элементов. В этом примере в момент времени, соответствующий событию 513, в нераспределенном хранилище 170 данных хранится лишь одна версия векторного представления пользователя для пользователя. Тем не менее, как более подробно описано ниже, в другие моменты времени в нераспределенном хранилище 170 данных может храниться несколько версий векторного представления пользователя для пользователя и, следовательно, сервер 112 может использовать значение версии, связанное с полученным одним или несколькими векторными представлениями элементов, для выбора векторного представления пользователя нужной версии.
[0167] Как показано в представленном на фиг. 5 примере события 524, сервер 112 может получить из хранилища 120 данных рекомендаций последние данные взаимодействий пользователь-элемент, доступные в этот момент времени. Например, сервер 112 может обратиться к хранилищу 120 данных рекомендаций в момент 202 времени (см. фиг. 2) и в результате может получить данные 212 взаимодействий пользователь-элемент.
[0168] Сервер 112 может получить в момент времени, соответствующий событию 524, данные 212 взаимодействий пользователь-элемент для обучения (или повторного обучения) и/или для обновления модели 160 матричной факторизации. Например, сервер 112 может выполнить второй этап обучения модели 160 матричной факторизации на основе полученных данных 212 взаимодействий пользователь-элемент и сформировать вторые векторные представления пользователей и вторые векторные представления элементов (их вторую версию). Сервер 112 также может связать вторые векторные представления пользователей и вторые векторные представления элементов со вторым значением версии, указывающим на то, что вторые векторные представления пользователей и вторые векторные представления элементов сформированы в ходе второй итерации этапа использования модели 160 матричной факторизации, а также указывает на то, что вторые векторные представления пользователей и вторые векторные представления элементов сформированы в ходе общей итерации этапа использования и, следовательно, имеют одну и ту же версию.
[0169] Формирование сервером 112 вторых векторных представлений пользователей и вторых векторных представлений элементов и связывание их со вторым значением версии показаны на примере события 525. Сервер 112 может отправлять данные, указывающие на вторые векторные представления пользователей и соответствующие вторые значения, в нераспределенное хранилище 170 данных для хранения. Получение данных, указывающих на вторые векторные представления пользователей и соответствующие вторые значения, нераспределенным хранилищем 170 данных показано на примере события 514.
[0170] Предполагается, что передача данных сервером 112 может инициировать процесс 590 сохранения нераспределенным хранилищем 170 данных. Завершение процесса 590 сохранения вторых векторных представлений пользователей и соответствующих вторых значений нераспределенным хранилищем 170 данных показано на примере события 515.
[0171] Следует отметить, что сервер 112 способен сохранять вторые векторные представления пользователей и соответствующие вторые значения в нераспределенном хранилище 170 данных в дополнение к первым векторным представлениям пользователей и соответствующим первым значениям. Например, это может соответствовать представленному на фиг. 3 не имеющему ограничительного характера примеру, где первое векторное представление 360 пользователя, связанное с первым значением 362, и второе векторное представление 370 пользователя, связанное со вторым значением 372, хранятся вместе, дополняя друг друга, в нераспределенном хранилище 170 данных в связи с пользователем 302.
[0172] После завершения процесса 590 сохранения сервер 112 может получать указание на этот факт, что показано на примере события 599. В ответ сервер 112 может отправлять данные, указывающие на вторые векторные представления элементов и соответствующие вторые значения, в распределенное хранилище 130 данных для хранения. Получение данных, указывающих на вторые векторные представления элементов и соответствующие вторые значения, распределенным хранилищем 130 данных показано на примере события 534.
[0173] Предполагается, что передача данных сервером 112 может инициировать процесс 550 сохранения распределенным хранилищем 130 данных. Завершение процесса 550 сохранения вторых векторных представлений элементов и соответствующих вторых значений распределенным хранилищем 130 данных показано на примере события 536. Следует отметить, что интервал времени между событиями 534 и 536 существенно меньше интервала времени между событиями 514 и 515. В одном не имеющем ограничительного характера варианте осуществления настоящей технологии предполагается, что для процесса 590 сохранения нераспределенным хранилищем 170 данных может требоваться приблизительно 4 часа, а для процесса 550 сохранения распределенным хранилищем 130 данных может требоваться приблизительно 1 час.
[0174] При этом, в отличие от процесса 590 сохранения вторых векторных представлений пользователей и соответствующих вторых значений распределенным хранилищем 130 данных, сервер 112 способен сохранять вторые векторные представления элементов и соответствующие вторые значения в распределенном хранилище 130 данных путем замены или перезаписи соответствующих первых векторных представлений элементов и соответствующих первых значений. Это означает, что в ходе выполнения процесса 550 сохранения сервер 112 способен сохранять для соответствующего элемента второе (обновленное) векторное представление элемента и соответствующее второе значение путем замены или перезаписи соответствующего первого (утратившего актуальность) векторного представления элемента и соответствующего первого значения.
[0175] Тем не менее, для завершения процесса 550 сохранения требуется замена или перезапись первого (утратившего актуальность) векторного представления элемента и соответствующего первого значения для элемента в каждом узле из числа нескольких узлов распределенного хранилища 130 данных. Таким образом, если запрос связанного с элементом векторного представления элемента получен до завершения процесса 550 сохранения, то версия полученного для этого элемента векторного представления элемента может зависеть от узла, получившего запрос.
[0176] Для лучшей иллюстрации этого можно предположить, что другой запрос рекомендации контента получается сервером 112 и инициирует выполнение второй процедуры рекомендации контента сервером 112. Выполнение сервером 112 второй процедуры рекомендации контента показано на примере события 526. В ходе выполнения второй процедуры рекомендации контента сервер 112 способен выполнять алгоритм 140 MLA на основе деревьев решений с целью ранжирования одного или нескольких элементов для пользователя 102 на основе их оцененной релевантности для него. Как описано выше, сервер 112 может получать векторное представление пользователя, связанное с пользователем 102, и одно или несколько векторных представлений элементов, связанных с одним или несколькими элементами, подлежащими ранжированию алгоритмом 140 MLA.
[0177] В ходе выполнения второй процедуры рекомендации контента (в интерактивном режиме) сервер 112 может отправлять запрос распределенному хранилищу 130 данных для получения одного или нескольких векторных представлений элементов, связанных с одним или несколькими цифровыми элементами, подлежащими ранжированию. Дальнейшее описание приведено со ссылкой на фиг. 6, где показаны отправка сервером 112 запроса распределенному хранилищу 130 данных и информация, которая в ответ может быть получена сервером 112. В представленном на фиг. 6 не имеющем ограничительного характера примере показан процесс получения одного подлежащего ранжированию цифрового элемента из числа других элементов. При этом следует отметить, что сервер 112 может подобным образом выполнять процесс получения для всех элементов, подлежащих ранжированию.
[0178] Запрос от сервера 112 к распределенному хранилищу 130 данных может содержать данные, указывающие на идентификатор 602 элемента. Этот запрос получается узлом из числа нескольких узлов распределенного хранилища 130 данных и идентификатор 602 элемента используется для получения векторного представления 604 элемента, связанного с идентификатором 602 элемента, и соответствующего значения 606 версии, которые хранятся в этом узле во время получения запроса.
[0179] При этом следует отметить, что вторая процедура рекомендации контента выполняется до завершения процесса 550 сохранения. В результате полученное векторное представление 604 элемента может быть связано с первым значением (первой версией) или со вторым значением (второй версией) в зависимости от того, было ли первое соответствующее векторное представление элемента для соответствующего элемента заменено или перезаписано в узле вторым соответствующим векторным представлением элемента ко времени получения запроса этим узлом. Определение и предоставление векторного представления 604 элемента и соответствующего значения 606 версии показано на фиг. 5 на примере события 535.
[0180] В ходе выполнения второй процедуры рекомендации контента (в интерактивном режиме) сервер 112 может отправить запрос нераспределенному хранилищу 170 данных для получения векторного представления пользователя для пользователя 102, связанного с запросом рекомендации контента. На фиг. 6 показано, как запрос может отправляться сервером 112 нераспределенному хранилищу 170 данных и какая информация может быть получена сервером 112 в ответ на этот запрос.
[0181] Запрос от сервера 112 к нераспределенному хранилищу 170 данных может содержать данные, указывающие на идентификатор 608 пользователя, связанный с пользователем 102, и на соответствующее значение 606 версии полученного векторного представления 604 элемента.
[0182] Сервер 112 может использовать идентификатор 608 пользователя для определения векторных представлений пользователей, хранящихся в связи с пользователем 102 во время получения запроса. Как показано, сервер 112 может определить, что два векторных представления пользователя хранятся в связи с пользователем 102, а именно, первое векторное представление 610 пользователя и второе векторное представление 614 пользователя. Первое векторное представление 610 пользователя хранится в сочетании с первым значением 612, указывающим на то, что первое векторное представление 610 пользователя соответствует первой версии, а второе векторное представление 614 пользователя хранится в сочетании со вторым значением 616, указывающим на то, что второе векторное представление 614 пользователя соответствует второй версии.
[0183] Сервер 112 может использовать значение 606 версии полученного векторного представления 604 элемента для выбора векторного представления, которое должно быть получено, из числа первого векторного представления 610 пользователя и второго векторного представления 614 пользователя. Можно сказать, что сервер 112 может сравнивать значение 606 версии с первым значением 612, связанным с первым векторным представлением 610 пользователя, и со вторым значением 616, связанным со вторым векторным представлением 614 пользователя, для проверки того, какое векторное представление из числа первого векторного представления 610 пользователя и второго векторного представления 614 пользователя имеет ту же версию, что и полученное векторное представление 604 элемента.
[0184] Пусть сервер 112 определяет, что второе значение 616 соответствует значению 606 версии. В этом случае сервер 112 определяет, что второе векторное представление 614 пользователя имеет ту же версию, что и полученное векторное представление 604 элемента. В результате сервер 112 получает второе векторное представление 614 пользователя из нераспределенного хранилища 170 данных. Определение и предоставление второго векторного представления 614 пользователя серверу 112 показаны на фиг. 5 на примере события 516. Таким образом, в ходе выполнения второй процедуры рекомендации контента сервер 112 может сформировать признак для элемента, связанного с идентификатором 602 элемента, для ранжирования на основе полученного векторного представления 604 элемента и второго векторного представления 614 пользователя, при этом они имеют одинаковую версию.
[0185] Далее, пусть сервер 112 определяет, что первое значение 612 соответствует значению 606 версии. В этом случае сервер 112 определяет, что первое векторное представление 610 пользователя имеет ту же версию, что и полученное векторное представление 604 элемента. В результате сервер 112 может получить первое векторное представление 610 пользователя (вместо второго векторного представления 614 пользователя) из нераспределенного хранилища 170 данных. В этом примере в ходе выполнения второй процедуры рекомендации контента сервер 112 может сформировать признак для элемента, связанного с идентификатором 602 элемента, для ранжирования на основе полученного векторного представления 604 элемента и первого векторного представления 610 пользователя, при этом они имеют одинаковую версию.
[0186] В некоторых вариантах осуществления настоящей технологии сервер 112 может контролировать завершение процесса 550 сохранения для инициирования одного или нескольких действий в отношении данных, хранящихся в нераспределенном хранилище 170 данных. Например, после показанного на фиг. 5 на примере события 536 завершения процесса 550 сохранения сервер 112 может получать указание на этот результат и в ответ инициировать действие в отношении данных, хранящихся в нераспределенном хранилище 170 данных. Инициирование сервером 112 действия в отношении данных, хранящихся в нераспределенном хранилище 170 данных, показано на примере события 527.
[0187] В по меньшей мере некоторых вариантах осуществления настоящей технологии в ответ на завершение процесса 550 сохранения сервер 112 может инициировать удаление первых векторных представлений пользователей, хранящихся в нераспределенном хранилище 170 данных. Следует отметить, что после завершения процесса 550 сохранения в каждом узле распределенного хранилища 130 данных хранятся только вторые векторные представления элементов. Разработчики настоящей технологии установили, что после завершения процесса 550 сохранения больше не требуется хранить первые векторные представления пользователей, поскольку в ответ на последующие запросы векторных представлений элементов к распределенному хранилищу 130 данных не могут быть предоставлены векторные представления элементов первой версии.
[0188] Удаление первых векторных представлений пользователей, хранящихся в нераспределенном хранилище 170 данных, показано на примере события 517. Благодаря удалению сервером 112 утративших актуальность данных из нераспределенного хранилища 170 данных возможно уменьшение объема памяти в нераспределенном хранилище 170 данных, необходимой для хранения данных, указывающих на векторные представления пользователей.
[0189] Как описано выше, сервер 112 может использовать полученные векторные представления для формирования признаков, подлежащих использованию при ранжировании элементов на основе оцененной релевантности для пользователя 102. На фиг. 7 приведено представление 700 для порядка использования сервером 112 алгоритма 140 MLA на основе деревьев решений с целью формирования ранжированного списка 780 элементов для пользователя 102 в ходе выполнения второй процедуры рекомендации контента (см. событие 526 на фиг. 5). Как показано, сервер 112 может вводить в алгоритм 140 MLA на основе деревьев решений данные 702 признаков пользователя. Например, сервер 112 может обратиться к хранилищу 120 данных рекомендаций и получить информацию, связанную с пользователем 102 и сохраненную в качестве части данных 206 пользователей.
[0190] Сервер 112 также может принимать для первого элемента 501 данные 704 элемента и первый признак 710. Например, сервер 112 может обращаться к хранилищу 120 данных рекомендаций и получать информацию, связанную с первым элементом 501 и сохраненную в качестве части данных элементов рекомендательной системы 180. В некоторых вариантах осуществления настоящей технологии сервер 112 может сформировать первый признак 710 в виде сочетания векторного представления элемента, полученного для первого элемента 501 из распределенного хранилища 130 данных, и векторного представления пользователя, полученного для пользователя 102 из нераспределенного хранилища 170. Первый признак 710 представляет собой сочетание векторного представления элемента и векторного представления пользователя одной и той же версии, как описано выше.
[0191] Сервер 112 может формировать первый признак 710 для первого элемента 501 в виде произведения двух полученных векторных представлений. В некоторых вариантах осуществления изобретения сервер 112 может рассчитывать это произведение в виде скалярного произведения двух полученных векторных представлений. В других вариантах осуществления изобретения это произведение может представлять собой евклидово расстояние между двумя полученными векторными представлениями. Можно сказать, что в других вариантах осуществления изобретения это произведение (т.е. признак) указывает на сходство или различие двух полученных векторных представлений.
[0192] Сервер 112 также может вводить для второго элемента 502 данные 706 элемента и второй признак 720. Например, сервер 112 может обращаться к хранилищу 120 данных рекомендаций и получать информацию, связанную со вторым элементом 502 и сохраненную в качестве части данных элементов рекомендательной системы 180. Сервер 112 может формировать второй признак 720 для пары «пользователь 102 - второй элемент 502» подобно тому, как сервер 112 может формировать первый признак 710 для пары «пользователь 102 - первый элемент 501». Следует отметить, что, несмотря на то, что пара векторных представлений, полученных для формирования первого признака 710, имеет одинаковую версию и пара векторных представлений, полученных для формирования второго признака 720, также имеет одинаковую версию, в некоторых вариантах осуществления настоящей технологии пара векторных представлений, полученных для формирования первого признака 710, и пара векторных представлений, полученных для формирования второго признака 720, могут иметь одинаковые или различные версии. Имеет пара векторных представлений, полученных для формирования первого признака 710, и пара векторных представлений, полученных для формирования второго признака 720, одинаковые или различные версии, может зависеть от конкретного варианта осуществления настоящей технологии. Алгоритм 140 MLA на основе деревьев решений способен формировать в качестве выходных данных ранжированный список 780 рекомендуемых элементов, ранжированных на основе их релевантности для пользователя 102.
[0193] В некоторых вариантах осуществления настоящей технологии сервер 112 может использовать один или несколько элементов из ранжированного списка 780 рекомендуемых элементов в качестве рекомендации контента для пользователя 102 в ходе выполнения второй процедуры рекомендации контента (см. событие 526). Например, сервер 112 может использовать по меньшей мере некоторые элементы из ранжированного списка 780 рекомендуемых элементов для формирования набора 814 рекомендуемого цифрового контента, представленного на фиг. 8. Очевидно, что первый рекомендуемый цифровой документ 816 и второй рекомендуемый цифровой документ 818 могут содержать контент первого элемента 501 и второго элемента 502, соответственно.
[0194] На фиг. 9 представлена блок-схема способа 900 хранения данных, связанных с пользователями и элементами рекомендательной системы 180. Далее более подробно описаны различные шаги способа 900. Должно быть понятно, что в некоторых вариантах осуществления способа по меньшей мере некоторые шаги способа 900 могут быть опущены или заменены, а также что в качестве части способа 900 без выхода за границы настоящей технологии могут выполняться шаги, дополняющие описанные ниже шаги.
Шаг 902: обучение модели матричной факторизации на основе первых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, произошедшие до первого момента времени.
[0195] Способ начинается с шага 902, на котором сервер 112 может обучать модель 160 матричной факторизации на основе первых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами рекомендательной системы, произошедшие до первого момента времени. Например, как показано на примере события 521 (см. фиг. 5), сервер 112 может получать из хранилища 120 данных рекомендаций последние данные взаимодействий пользователь-элемент, доступные на этот момент времени. В частности, сервер 112 может обратиться к хранилищу 120 данных рекомендаций в момент 201 времени (см. фиг. 2) и в результате может получить данные 211 взаимодействий пользователь-элемент.
[0196] Сервер 112 может получить в момент 201 времени данные 211 взаимодействий пользователь-элемент для обучения модели 160 матричной факторизации. Например, сервер 112 может выполнить первый этап обучения модели 160 матричной факторизации на основе полученных данных 211 взаимодействий пользователь-элемент. В некоторых вариантах осуществления изобретения модель 160 матричной факторизации может представлять собой модель на основе разложения SVD.
Шаг 904: формирование в ходе первой итерации этапа использования модели матричной факторизации первых векторных представлений пользователей для соответствующих пользователей и первых векторных представлений элементов для соответствующих цифровых элементов с использованием обученной модели матричной факторизации.
[0197] Способ 900 продолжается на шаге 904, на котором сервер 112 в ходе первой итерации этапа использования модели 160 матричной факторизации может формировать первые векторные представления пользователей для соответствующих пользователей и первые векторные представления элементов для соответствующих цифровых элементов (их первую версию). Сервер 112 также может связывать первые векторные представления пользователей и первые векторные представления элементов с первым значением версии, указывающим на то, что первые векторные представления пользователей и первые векторные представления элементов сформированы в ходе первой итерации этапа использования модели 160 матричной факторизации, а также указывающим на то, что первые векторные представления пользователей и первые векторные представления элементов сформированы в ходе общей итерации этапа использования и, следовательно, имеют одну и ту же версию.
Шаг 906: сохранение первых векторных представлений пользователей в нераспределенном хранилище данных.
[0198] Способ 900 продолжается на шаге 906, на котором сервер 112 может сохранять первые векторные представления пользователей в нераспределенном хранилище 170 данных. Первые векторные представления пользователей сохраняются в сочетании с первым значением, указывающим на первую итерацию этапа использования модели 160 матричной факторизации.
[0199] Также предполагается, что нераспределенное хранилище 170 данных может представлять собой хранилище данных ключ-значение. Дополнительно или в качестве альтернативы, нераспределенное хранилище 170 данных может быть реализовано в виде одного физического устройства хранения данных.
[0200] Предполагается, что передача данных сервером 112 может инициировать процесс 580 сохранения нераспределенным хранилищем 170 данных. Завершение процесса 580 сохранения первых векторных представлений пользователей и соответствующих первых значений нераспределенным хранилищем 170 данных показано на примере события 512.
[0201] После завершения процесса 580 сохранения сервер 112 может получать указание на этот факт от нераспределенного хранилища 170 данных. Получение этого указания показано на примере события 598. В ответ сервер 112 может отправлять данные, указывающие на первые векторные представления элементов и соответствующие первые значения, в распределенное хранилище 130 данных для хранения. Получение данных, указывающих на первые векторные представления элементов и соответствующие первые значения, распределенным хранилищем 130 данных показано на примере события 531.
Шаг 908: сохранение первых векторных представлений элементов в распределенном хранилище данных.
[0202] Способ 900 продолжается на шаге 908, на котором сервер 112 может сохранять первые векторные представления элементов в распределенном хранилище 130 данных. Первые векторные представления элементов сохраняются в сочетании с первым значением. Первые векторные представления элементов и первые векторные представления пользователей сохраняются в сочетании с первым значением, указывающим на то, что первые векторные представления элементов и первые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели 160 матричной факторизации.
[0203] Предполагается, что передача данных сервером 112 может инициировать процесс 540 сохранения распределенным хранилищем 130 данных. Завершение процесса 540 сохранения первых векторных представлений элементов и соответствующих первых значений распределенным хранилищем 130 данных показано на примере события 532 (см. фиг. 5). Следует отметить, что интервал времени между событиями 531 и 532 существенно меньше интервала времени между событиями 511 и 512. Как описано выше, это объясняется тем, что количество векторных представлений пользователей, подлежащих сохранению в процессе 580 сохранения, больше количества векторных представлений элементов, подлежащих сохранению в процессе 540 сохранения.
Шаг 910: повторное обучение модели матричной факторизации на основе вторых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, произошедшие до второго момента времени, более позднего, чем первый момент времени.
[0204] Способ 900 продолжается на шаге 910, на котором сервер 112 может повторно обучать модель 160 матричной факторизации на основе вторых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, произошедшими до второго момента времени, более позднего, чем первый момент времени. Модель матричной факторизации повторно обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих во второй момент времени.
[0205] Например, как показано на примере события 524, сервер 112 может получать из хранилища 120 данных рекомендаций последние данные взаимодействий пользователь-элемент, доступные на этот момент времени. В частности, сервер 112 может обратиться к хранилищу 120 данных рекомендаций в момент 202 времени (см. фиг. 2) и в результате может получить данные 212 взаимодействий пользователь-элемент. Сервер 112 может получить в момент времени, соответствующий событию 524, данные 212 взаимодействий пользователь-элемент для обучения (или повторного обучения) и/или для обновления модели 160 матричной факторизации.
Шаг 912: формирование в ходе второй итерации этапа использования модели матричной факторизации вторых векторных представлений пользователей для соответствующих пользователей и вторых векторных представлений элементов для соответствующих цифровых элементов с использованием повторно обученной модели матричной факторизации.
[0206] Способ 900 продолжается на шаге 912, на котором сервер 112 в ходе второй итерации этапа использования модели 160 матричной факторизации может формировать с использованием (повторно обученной) модели 160 матричной факторизации вторые векторные представления пользователей для соответствующих пользователей и вторые векторные представления элементов для соответствующих цифровых элементов. Вторые векторные представления пользователей и вторые векторные представления элементов представляют собой выходные данные повторно обученной модели 160 матричной факторизации. В частности, формирование сервером 112 вторых векторных представлений пользователей и вторых векторных представлений элементов и связывание их со вторым значением версии показаны на примере события 525.
Шаг 914: сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных в дополнение к первым векторным представлениям пользователей.
[0207] Способ 900 продолжается на шаге 914, на котором сервер 112 может сохранять вторые векторные представления пользователей в нераспределенном хранилище 170 данных в дополнение к первым векторным представлениям пользователей. Вторые векторные представления пользователей сохраняются в сочетании со вторым значением, указывающим на вторую итерацию этапа использования модели 160 матричной факторизации.
[0208] Предполагается, что передача данных сервером 112 может инициировать процесс 590 сохранения нераспределенным хранилищем 170 данных. Завершение процесса 590 сохранения вторых векторных представлений пользователей и соответствующих вторых значений нераспределенным хранилищем 170 данных показано на примере события 515.
[0209] Следует отметить, что сервер 112 может сохранять вторые векторные представления пользователей и соответствующие вторые значения в нераспределенном хранилище 170 данных в дополнение к первым векторным представлениям пользователей и соответствующим первым значениям. Например, это может соответствовать представленному на фиг. 3 не имеющему ограничительного характера примеру, где первое векторное представление 360 пользователя, связанное с первым значением 362, и второе векторное представление 370 пользователя, связанное со вторым значением 372, хранятся вместе, дополняя друг друга, в нераспределенном хранилище 170 данных в связи с пользователем 302. После завершения процесса 590 сохранения сервер 112 может получать указание на этот факт, что показано на примере события 599.
Шаг 916: сохранение вторых векторных представлений элементов в распределенном хранилище данных вместо соответствующих первых векторных представлений элементов путем замены соответствующих первых векторных представлений элементов.
[0210] Способ 900 продолжается на шаге 916, на котором сервер 112 может сохранять вторые векторные представления элементов в распределенном хранилище 130 данных вместо соответствующих первых векторных представлений элементов путем замены соответствующих первых векторных представлений элементов. Вторые векторные представления элементов сохраняются в сочетании со вторым значением. Следует отметить, что вторые векторные представления элементов и вторые векторные представления пользователей сохраняются в сочетании со вторым значением, указывающим на то, что вторые векторные представления элементов и вторые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели 160 матричной факторизации.
[0211] Предполагается, что передача данных сервером 112 может инициировать процесс 550 сохранения распределенным хранилищем 130 данных. Завершение процесса 550 сохранения вторых векторных представлений элементов и соответствующих вторых значений распределенным хранилищем 130 данных показано на примере события 536. Следует отметить, что интервал времени между событиями 534 и 536 существенно меньше интервала времени между событиями 514 и 515. В одном не имеющем ограничительного характера варианте осуществления настоящей технологии предполагается, что для процесса 590 сохранения нераспределенным хранилищем 170 данных может требоваться приблизительно 4 часа, а для процесса 550 сохранения распределенным хранилищем 130 данных может требоваться приблизительно 1 час.
[0212] При этом, в отличие от процесса 590 сохранения вторых векторных представлений пользователей и соответствующих вторых значений распределенным хранилищем 130 данных, сервер 112 может сохранять вторые векторные представления элементов и соответствующие вторые значения в распределенном хранилище 130 данных путем замены или перезаписи соответствующих первых векторных представлений элементов и соответствующих первых значений. Это означает, что в ходе выполнения процесса 550 сохранения сервер 112 способен сохранять для соответствующего элемента второе (обновленное) векторное представление элемента и соответствующее второе значение путем замены или перезаписи соответствующего первого (утратившего актуальность) векторного представления элемента и соответствующего первого значения.
[0213] Для завершения процесса 550 сохранения требуется замена или перезапись первого (утратившего актуальность) векторного представления элемента и соответствующего первого значения для элемента в каждом узле из числа нескольких узлов распределенного хранилища 130 данных. Таким образом, если запрос связанного с элементом векторного представления элемента получен до завершения процесса 550 сохранения, то версия полученного для этого элемента векторного представления элемента может зависеть от узла, получившего запрос.
[0214] В по меньшей мере некоторых вариантах осуществления настоящей технологии можно сказать, что сохранение вторых векторных представлений пользователей может быть выполнено в течение первого интервала времени, а сохранение вторых векторных представлений элементов может быть выполнено в течение второго интервала времени, при этом второй интервал времени существенно меньше первого интервала времени.
[0215] В некоторых вариантах осуществления изобретения первый интервал времени может определяться моментом времени, когда сервер 112 начинает сохранение вторых векторных представлений пользователей в нераспределенном хранилище 170 данных (событие 514), и моментом времени, когда сервер 112 завершает сохранение вторых векторных представлений пользователей в нераспределенном хранилище 170 данных (событие 515), а второй интервал времени может определяться моментом времени, когда сервер 112 начинает сохранение вторых векторных представлений элементов в распределенном хранилище 130 данных (событие 534), и третьим моментом времени, когда сервер 112 завершает сохранение вторых векторных представлений элементов (событие 536).
Шаг 918: удаление первых векторных представлений пользователей, связанных с первым значением, из нераспределенного хранилища данных в третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных.
[0216] Способ 900 продолжается на шаге 918, на котором сервер 112 в третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища 130 данных, может удалять первые векторные представления пользователей, связанные с первым значением, из нераспределенного хранилища 170 данных так, чтобы в третий момент времени вторые векторные представления пользователей хранились в нераспределенном хранилище 170 данных вместо первых векторных представлений пользователей и вторых векторных представлений пользователей.
[0217] В некоторых вариантах осуществления изобретения сервер 112 может контролировать процесс 550 сохранения вторых векторных представлений элементов в распределенном хранилище 130 данных. В некоторых вариантах осуществления изобретения сервер 112 может контролировать процесс 590 сохранения вторых векторных представлений пользователей в нераспределенном хранилище 170 данных.
[0218] В других вариантах осуществления изобретения сервер 112 может определять третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища 130 данных.
[0219] В других вариантах осуществления изобретения сервер 112 может дополнительно получать из распределенного хранилища 130 данных подтверждение отказоустойчивого хранения вторых векторных представлений элементов. Третий момент времени может соответствовать моменту времени получения сервером 112 такого подтверждения. Например, получение сервером 112 этого подтверждения может соответствовать событию 527.
[0220] В некоторых вариантах осуществления настоящей технологии сервер 112 может дополнительно получать указание на запрос 150 рекомендации контента для электронного устройства 104, связанного с пользователем 102, в четвертый момент времени, между вторым моментом времени и третьим моментом времени.
[0221] Например, пусть запрос рекомендации контента получен сервером 112 и инициирует выполнение второй процедуры рекомендации контента сервером 112. Выполнение сервером 112 второй процедуры рекомендации контента показано на примере события 526. В ходе выполнения второй процедуры рекомендации контента сервер 112 может выполнять алгоритм 140 MLA на основе деревьев решений с целью ранжирования одного или нескольких элементов для пользователя 102 на основе их оцененной релевантности для него. Как описано выше, сервер 112 может получать векторное представление пользователя, связанное с пользователем 102, и одно или несколько векторных представлений элементов, соответственно, связанных с одним или несколькими элементами, подлежащими ранжированию алгоритмом 140 MLA.
[0222] В ходе выполнения второй процедуры рекомендации контента (в интерактивном режиме) сервер 112 может отправлять запрос распределенному хранилищу 130 данных для получения одного или нескольких векторных представлений элементов, связанных с одним или несколькими цифровыми элементами, подлежащими ранжированию. Можно сказать, что сервер 112 может получать из распределенного хранилища 130 данных целевое векторное представление элемента, связанное с цифровым элементом, представляющим собой потенциально рекомендуемый элемент для пользователя. Целевое векторное представление элемента представляет собой первое векторное представление элемента для этого элемента или второе векторное представление элемента для этого элемента, при этом векторное представление элемента связано с целевым значением, представляющим собой первое значение или второе значение.
[0223] Сервер 112 также может выбирать из нераспределенного хранилища 170 данных связанное с пользователем целевое векторное представление пользователя из числа первого векторного представления пользователя, связанного с пользователем и хранящегося в сочетании с первым значением, и второго векторного представления пользователя, связанного с пользователем и хранящегося в сочетании со вторым значением. Например, способность сервера 112 выбирать целевое векторное представление пользователя может означать способность определять соответствие целевого значения векторного представления элемента первому значению или второму значению. Если целевое значение соответствует первому значению, сервер 112 может выбирать первое векторное представление пользователя в качестве целевого векторного представления пользователя. Если целевое значение соответствует второму значению, сервер 112 может выбирать второе векторное представление пользователя. Сервер 112 также может формировать ранжирующий признак в виде сочетания целевого векторного представления пользователя и целевого векторного представления элемента, при этом ранжирующий признак подлежит использованию при ранжировании элемента из числа других элементов для пользователя.
[0224] Очевидно, что не все упомянутые в данном описании технические эффекты должны присутствовать в каждом варианте осуществления настоящей технологии. Например, возможны варианты осуществления настоящей технологии, когда пользователь не получает некоторые из этих технических эффектов, или другие варианты реализации, когда пользователь получает другие технические эффекты либо когда технический эффект отсутствует.
[0225] Некоторые из этих шагов и передаваемых или принимаемых сигналов хорошо известны в данной области техники и по этой причине опущены в некоторых частях описания для упрощения. Сигналы могут передаваться или приниматься с использованием оптических средств (таких как волоконно-оптическое соединение), электронных средств (таких как проводное или беспроводное соединение) и механических средств (например, основанных на давлении, температуре или любом другом подходящем физическом параметре).
[0226] Для специалиста в данной области могут быть очевидными возможные изменения и усовершенствования описанных выше вариантов осуществления настоящей технологии. Предшествующее описание приведено лишь в иллюстративных целях, а не для ограничения объема изобретения. Объем охраны настоящей технологии определяется исключительно объемом приложенной формулы изобретения.
название | год | авторы | номер документа |
---|---|---|---|
Способ и система для оценивания данных о взаимодействиях пользователь-элемент | 2018 |
|
RU2725659C2 |
Способ и система для формирования рекомендаций цифрового контента | 2018 |
|
RU2731335C2 |
Способ и сервер для определения обучающего набора для обучения алгоритма машинного обучения (MLA) | 2020 |
|
RU2817726C2 |
СПОСОБ И СИСТЕМА ДЛЯ ОБЕСПЕЧЕНИЯ УРОВНЯ СЕРВИСА ПРИ РЕКЛАМЕ ЭЛЕМЕНТА КОНТЕНТА | 2019 |
|
RU2757406C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ СОЗДАНИЯ РЕКОМЕНДУЕМОГО СПИСКА СОДЕРЖИМОГО | 2015 |
|
RU2632131C2 |
ХРОНОЛОГИЧЕСКИЙ ЖУРНАЛ ДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЯ И АССОЦИИРОВАННЫХ ЭМОЦИОНАЛЬНЫХ СОСТОЯНИЙ | 2012 |
|
RU2610944C2 |
Способ и система определения параметра релевантность для элементов содержимого | 2018 |
|
RU2714594C1 |
СПОСОБ РЕКОМЕНДАЦИИ ДРУЗЕЙ И СЕРВЕР И ТЕРМИНАЛ ДЛЯ ЭТОГО | 2013 |
|
RU2613724C2 |
Способ и устройство для обучения алгоритма машинного обучения (MLA) по созданию рекомендаций содержимого в системе рекомендаций и способ и устройство для создания рекомендуемого содержимого с помощью алгоритма машинного обучения | 2016 |
|
RU2731659C2 |
Способ и сервер создания рекомендуемого набора элементов для пользователя | 2015 |
|
RU2629638C2 |
Изобретение относится к области вычислительной техники. Технический результат заключается в снижении вычислительной нагрузки при определении цифрового контента, который должен быть предоставлен пользователям рекомендательного сервиса. Технический результат достигается за счет обучения модели для формирования первых векторных представлений пользователей и элементов, сохранения первых векторных представлений пользователей в нераспределенном хранилище данных и первых векторных представлений элементов в распределенном хранилище данных, повторного обучения модели для формирования вторых векторных представлений пользователей и элементов, сохранения вторых векторных представлений пользователей в нераспределенном хранилище данных в дополнение к первым векторным представлениям пользователей и вторых векторных представлений элементов в распределенном хранилище данных вместо соответствующих первых векторных представлений элементов путем замены первых векторных представлений элементов. Когда вторые векторные представления элементов сохранены в каждом узле распределенного хранилища данных, сервер удаляет из нераспределенного хранилища данных первые векторные представления пользователей, связанные с первым значением. 2 н. и 18 з.п. ф-лы, 10 ил.
1. Способ хранения данных, связанных с пользователями рекомендательной системы и с цифровыми элементами, рекомендуемыми в рекомендательной системе, способной предоставлять цифровые элементы в качестве рекомендации контента пользователям рекомендательной системы, который выполняется сервером, связанным с нераспределенным хранилищем данных и с распределенным хранилищем данных, содержащим множество узлов, и включает в себя:
- обучение сервером модели матричной факторизации на основе первых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, которые произошли до первого момента времени, при этом модель матричной факторизации обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих в первый момент времени;
- в ходе первой итерации этапа использования модели матричной факторизации:
- формирование сервером, использующим обученную модель матричной факторизации, первых векторных представлений пользователей для соответствующих пользователей и первых векторных представлений элементов для соответствующих цифровых элементов, при этом первые векторные представления пользователей и первые векторные представления элементов представляют собой выходные данные обученной модели матричной факторизации;
- сохранение сервером первых векторных представлений пользователей в сочетании с первым значением, указывающим на первую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных, и первых векторных представлений элементов в сочетании с первым значением в распределенном хранилище данных, при этом первые векторные представления элементов и первые векторные представления пользователей сохраняются в сочетании с первым значением, указывающим на то, что первые векторные представления элементов и первые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации;
- повторное обучение сервером модели матричной факторизации на основе вторых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, которые произошли до второго момента времени, более позднего, чем первый момент времени, при этом модель матричной факторизации повторно обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих во второй момент времени;
- в ходе второй итерации этапа использования модели матричной факторизации:
- формирование сервером, использующим повторно обученную модель матричной факторизации, вторых векторных представлений пользователей для соответствующих пользователей и вторых векторных представлений элементов для соответствующих цифровых элементов, при этом вторые векторные представления пользователей и вторые векторные представления элементов представляют собой выходные данные повторно обученной модели матричной факторизации;
- сохранение сервером вторых векторных представлений пользователей в сочетании со вторым значением, указывающим на вторую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных в дополнение к первым векторным представлениям пользователей, и вторых векторных представлений элементов в сочетании со вторым значением в распределенном хранилище данных вместо соответствующих первых векторных представлений элементов путем замены соответствующих первых векторных представлений элементов, при этом вторые векторные представления элементов и вторые векторные представления пользователей сохраняются в сочетании со вторым значением, указывающим на то, что вторые векторные представления элементов и вторые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации;
- удаление сервером первых векторных представлений пользователей, связанных с первым значением, из нераспределенного хранилища данных в третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных так, чтобы в третий момент времени вторые векторные представления пользователей хранились в нераспределенном хранилище данных вместо первых векторных представлений пользователей и вторых векторных представлений пользователей.
2. Способ по п. 1, отличающийся тем, что он дополнительно включает в себя контроль сервером процесса сохранения вторых векторных представлений элементов в распределенном хранилище данных.
3. Способ по п. 1, отличающийся тем, что он дополнительно включает в себя определение сервером третьего момента времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных.
4. Способ по п. 3, отличающийся тем, что он дополнительно включает в себя получение сервером из распределенного хранилища данных подтверждения отказоустойчивого хранения вторых векторных представлений элементов, а третий момент времени соответствует моменту времени получения сервером этого подтверждения.
5. Способ по п. 1, отличающийся тем, что сохранение вторых векторных представлений пользователей выполняется в течение первого интервала времени, а сохранение вторых векторных представлений элементов выполняется в течение второго интервала времени, при этом первый интервал времени существенно меньше второго интервала времени.
6. Способ по п. 5, отличающийся тем, что первый интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных, и моментом времени, когда сервер завершает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных, а второй интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений элементов в распределенном хранилище данных, и третьим моментом времени, когда сервер завершает сохранение вторых векторных представлений элементов.
7. Способ по п. 1, отличающийся тем, что модель матричной факторизации представляет собой модель на основе сингулярного разложения.
8. Способ по п. 1, отличающийся тем, что нераспределенное хранилище данных представляет собой хранилище данных ключ-значение.
9. Способ по п. 1, отличающийся тем, что нераспределенное хранилище данных реализовано в виде одного физического устройства хранения данных.
10. Способ по п. 1, отличающийся тем, что в четвертый момент времени, между вторым моментом времени и третьим моментом времени, способ дополнительно включает в себя:
- получение сервером указания на запрос рекомендации контента для электронного устройства, связанного с пользователем;
- получение сервером из распределенного хранилища данных целевого векторного представления элемента, связанного с цифровым элементом, представляющим собой потенциально рекомендуемый элемент для пользователя, при этом целевое векторное представление элемента представляет собой первое векторное представление элемента для этого элемента или второе векторное представление элемента для этого элемента, а векторное представление элемента связано с целевым значением, представляющим собой первое значение или второе значение;
- выбор сервером из нераспределенного хранилища данных связанного с пользователем целевого векторного представления пользователя из числа первого векторного представления пользователя, связанного с пользователем и хранящегося в сочетании с первым значением, и второго векторного представления пользователя, связанного с пользователем и хранящегося в сочетании со вторым значением, при этом выбор включает в себя:
- определение сервером соответствия целевого значения векторного представления элемента первому значению или второму значению,
- выбор первого векторного представления пользователя в качестве целевого векторного представления пользователя, если целевое значение соответствует первому значению,
- выбор второго векторного представления пользователя, если целевое значение соответствует второму значению; и
- формирование сервером ранжирующего признака в виде сочетания целевого векторного представления пользователя и целевого векторного представления элемента, при этом ранжирующий признак подлежит использованию при ранжировании элемента из числа других элементов для этого пользователя.
11. Сервер для хранения данных, связанных с пользователями рекомендательной системы и с цифровыми элементами, рекомендуемыми в рекомендательной системе, выполненной с возможностью предоставления цифровых элементов в качестве рекомендации контента пользователям рекомендательной системы, который связан с нераспределенным хранилищем данных и с распределенным хранилищем данных, содержащим множество узлов, и выполнен с возможностью:
- обучения модели матричной факторизации на основе первых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, которые произошли до первого момента времени, при этом модель матричной факторизации обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих в первый момент времени;
- в ходе первой итерации этапа использования модели матричной факторизации:
- формирования с использованием обученной модели матричной факторизации первых векторных представлений пользователей для соответствующих пользователей и первых векторных представлений элементов для соответствующих цифровых элементов, при этом первые векторные представления пользователей и первые векторные представления элементов представляют собой выходные данные обученной модели матричной факторизации;
- сохранения первых векторных представлений пользователей в сочетании с первым значением, указывающим на первую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных, и первых векторных представлений элементов в сочетании с первым значением в распределенном хранилище данных, при этом первые векторные представления элементов и первые векторные представления пользователей сохраняются в сочетании с первым значением, указывающим на то, что первые векторные представления элементов и первые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации;
- повторного обучения модели матричной факторизации на основе вторых данных о взаимодействиях пользователь-элемент, указывающих на взаимодействия между пользователями и элементами цифрового контента, которые произошли до второго момента времени, более позднего, чем первый момент времени, при этом модель матричной факторизации повторно обучается прогнозированию данных о взаимодействиях пользователь-элемент, отсутствующих во второй момент времени;
- в ходе второй итерации этапа использования модели матричной факторизации:
- формирования с использованием повторно обученной модели матричной факторизации вторых векторных представлений пользователей для соответствующих пользователей и вторых векторных представлений элементов для соответствующих цифровых элементов, при этом вторые векторные представления пользователей и вторые векторные представления элементов представляют собой выходные данные повторно обученной модели матричной факторизации;
- сохранения вторых векторных представлений пользователей в сочетании со вторым значением, указывающим на вторую итерацию этапа использования модели матричной факторизации, в нераспределенном хранилище данных в дополнение к первым векторным представлениям пользователей, и вторых векторных представлений элементов в сочетании со вторым значением в распределенном хранилище данных вместо соответствующих первых векторных представлений элементов путем замены соответствующих первых векторных представлений элементов, при этом вторые векторные представления элементов и вторые векторные представления пользователей сохраняются в сочетании со вторым значением, указывающим на то, что вторые векторные представления элементов и вторые векторные представления пользователей сформированы в ходе общей итерации этапа использования модели матричной факторизации; и
- удаления первых векторных представлений пользователей, связанных с первым значением, из нераспределенного хранилища данных в третий момент времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных так, чтобы в третий момент времени вторые векторные представления пользователей хранились в нераспределенном хранилище данных вместо первых векторных представлений пользователей и вторых векторных представлений пользователей.
12. Сервер по п. 11, отличающийся тем, что он дополнительно выполнен с возможностью контроля процесса сохранения вторых векторных представлений элементов в распределенном хранилище данных.
13. Сервер по п. 11, отличающийся тем, что он дополнительно выполнен с возможностью определения третьего момента времени, когда вторые векторные представления элементов сохранены в каждом узле из множества узлов распределенного хранилища данных.
14. Сервер по п. 13, отличающийся тем, что он дополнительно выполнен с возможностью получения из распределенного хранилища данных подтверждения отказоустойчивого хранения вторых векторных представлений элементов, при этом третий момент времени соответствует моменту времени получения сервером этого подтверждения.
15. Сервер по п. 11, отличающийся тем, что он дополнительно выполнен с возможностью сохранения вторых векторных представлений пользователей в течение первого интервала времени и сохранения вторых векторных представлений элементов в течение второго интервала времени, при этом первый интервал времени существенно меньше второго интервала времени.
16. Сервер по п. 15, отличающийся тем, что первый интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных, и моментом времени, когда сервер завершает сохранение вторых векторных представлений пользователей в нераспределенном хранилище данных, а второй интервал времени определяется моментом времени, когда сервер начинает сохранение вторых векторных представлений элементов в распределенном хранилище данных, и третьим моментом времени, когда сервер завершает сохранение вторых векторных представлений элементов.
17. Сервер по п. 11, отличающийся тем, что модель матричной факторизации представляет собой модель на основе сингулярного разложения.
18. Сервер по п. 11, отличающийся тем, что нераспределенное хранилище данных представляет собой хранилище данных ключ-значение.
19. Сервер по п. 11, отличающийся тем, что нераспределенное хранилище данных реализовано в виде одного физического устройства хранения данных.
20. Сервер по п. 11, отличающийся тем, что он дополнительно выполнен с возможностью выполнения в четвертый момент времени, между вторым моментом времени и третьим моментом времени, следующих действий:
- получение указания на запрос рекомендации контента для электронного устройства, связанного с пользователем;
- получение из распределенного хранилища данных целевого векторного представления элемента, связанного с цифровым элементом, представляющим собой потенциально рекомендуемый элемент для пользователя, при этом целевое векторное представление элемента представляет собой первое векторное представление элемента для этого элемента или второе векторное представление элемента для этого элемента, а векторное представление элемента связано с целевым значением, представляющим собой первое значение или второе значение;
- выбор из нераспределенного хранилища данных связанного с пользователем целевого векторного представления пользователя из числа первого векторного представления пользователя, связанного с пользователем и хранящегося в сочетании с первым значением, и второго векторного представления пользователя, связанного с пользователем и хранящегося в сочетании со вторым значением, при этом для выполнения выбора сервер выполнен с возможностью:
- определения соответствия целевого значения векторного представления элемента первому значению или второму значению,
- выбора первого векторного представления пользователя в качестве целевого векторного представления пользователя, если целевое значение соответствует первому значению,
- выбора второго векторного представления пользователя, если целевое значение соответствует второму значению; и
- формирование ранжирующего признака в виде сочетания целевого векторного представления пользователя и целевого векторного представления элемента, при этом ранжирующий признак подлежит использованию при ранжировании элемента из числа других элементов для этого пользователя.
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
Токарный резец | 1924 |
|
SU2016A1 |
Многоступенчатая активно-реактивная турбина | 1924 |
|
SU2013A1 |
Колосоуборка | 1923 |
|
SU2009A1 |
Способ и система для формирования рекомендаций цифрового контента | 2018 |
|
RU2731335C2 |
Авторы
Даты
2023-02-13—Публикация
2020-10-06—Подача