Код документа: RU2643434C2
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[01] Настоящее изобретение относится к области выполняемых на компьютере способов оценки интересов пользователя.
УРОВЕНЬ ТЕХНИКИ
[02] Различные веб-сайты и он-лайн сервисы анализируют поведение своих пользователей с целью выбора того, какое содержимое следует отображать этим и другим пользователям. Например, некоторые поисковые системы отслеживают поисковую историю своих пользователей для определения того, какие рекламные объявления могут их заинтересовать, а некоторые он-лайн сервисы могут обнаруживать, что история прослушиваний первого пользователя похожа на историю прослушиваний второго пользователя, и, соответственно, предлагать второму пользователю избранные песни первого пользователя, которые еще не были прослушаны вторым пользователем.
[03] Для оценки таких рекламных объявлений, веб-страниц, географических мест или других потенциальных событий, которые могут быть интересны пользователю, он-лайн сервисы могут собирать информацию о профиле пользователя и информацию о его поведении, относящуюся к действиям, которые выполняет этот или другие пользователи. Информация о поведении может включать в себя информацию об одном или нескольких типах действий пользователя, например, выбор кнопок или гиперссылок на веб-страницы, отправку поисковых запросов поисковой системе или другим он-лайн сервисам, время пребывания на различных сетевых ресурсах (например, как долго происходил просмотр веб-страницы). Информация может храниться в формате, который поддерживает возможность анализа и экстраполяции оценки интересов пользователя и/или ожидаемого поведения пользователя.
[04] В общем случае различные типы информации хранятся в соответствующих форматах, подходящих для этих типов информации. Например, история веб-просмотра пользователя может быть представлена в виде каталога универсальных идентификаторов ресурса (URI) для различных сетевых ресурсов, посещенных пользователей, причем каждый универсальный идентификатор ресурса может сопровождаться временной отметкой, которая указывает на дату и время посещения сетевого ресурса, и/или время пребывания, которое указывает на количество времени, предположительно проведенного пользователем за просмотром сетевого ресурса. С другой стороны, история географических перемещений пользователя может быть представлена серией географических координат, связанных с пользователем, таких как геолокационные данные, собранные смартфоном пользователя, или "чек-ины" пользователя в одном или нескольких он-лайн сервисах, например, в социальных сетях.
[05] Поскольку различные типы пользовательских событий обычно представлены в различных информационных форматах, их может быть сложно или даже невозможно сравнивать или анализировать. Кроме того, огромное количество пользовательских записей может сделать анализ пользовательских событий неэффективным и даже невозможным. Поэтому существует необходимость в дальнейших улучшениях способов оценки интересов пользователя.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[06] Настоящая технология предлагает выполняемые на компьютере способы оценки интересов пользователя с помощью перевода пользовательских событий в векторы во множестве многомерных пространств, позволяя таким образом анализировать векторы, представляющие пользовательские события, чтобы определить сообщение, которое будет предоставлено пользователю.
[07] Эти способы могут быть реализованы с помощью компьютерного устройства, выполняющего их этапы, причем компьютерное устройство находится в связи с устройством вывода, подходящим для предоставления пользователю указания на одно или несколько потенциальных событий, которые были сочтены интересными. Вычислительное устройство может включать в себя модули векторного перевода, которые реализованы в аппаратном обеспечении, программном обеспечении или в их комбинации, причем каждый из модулей векторного перевода подходит для перевода входных векторов в одном многомерном пространстве в выходные векторы в другом многомерном пространстве. Многомерные пространства могут обладать любым числом измерений. Многомерные пространства могут быть определены иначе: любой набор векторов может считаться принадлежащим многомерному пространству, если каждый вектор набора обладает одинаковым числом измерений (тем же, что и в предполагаемом многомерном пространстве), а расстояние между каждым из векторов может быть определено и вычислено (например, Евклидово расстояние - квадратный
корень скалярного произведения самого вектора и векторной разницы между двумя векторами).
[08] Модули векторного перевода выполнены с возможностью переводить входные векторы, каждый из которых напрямую или косвенно соответствует одному или нескольким пользовательским событиям, в выходные векторы в многомерном пространстве. Первый модуль векторного перевода переводит первые входные векторы, определенные на основе пользовательских событий, в первые выходные векторы в первом многомерном пространстве. Второй модуль векторного перевода переводит вторые входные векторы, определенные на основе одного или нескольких первых выходных векторов, во вторые выходные векторы во втором многомерном пространстве.
[09] Далее может выполняться анализ векторов в первом многомерном пространстве и/или втором многомерном пространстве, чтобы определить сообщение, которое будет предоставлено пользователю. Затем сообщение может быть предоставлено пользователю с помощью устройства вывода. Сообщение может представлять собой любой тип информации, которая считается интересной пользователю. Не ограничивающие примеры сообщений включают в себя рекламные объявления и гиперссылки на сетевые ресурсы в Интернете.
[10] Таким образом, различные варианты осуществления предусматривают способ оценки интересов пользователя, способ выполняется на вычислительном устройстве, которое связано с устройством вывода, и способ включает в себя:
[11] В некоторых вариантах осуществления технологии модули векторного перевода выполнены с возможностью переводить входные векторы в выходные векторы таким образом, чтобы выходные векторы находились друг от друга на заданном расстоянии, причем заданное расстояние между двумя выходными векторами коррелирует с разницей между контекстами, которые связаны с соответствующими входными векторами. Другими словами, разница контекстов между двумя пользовательскими событиями (или множеством пользовательских событий) наглядно отображается в виде расстояния в многомерном пространстве между выходными векторами, в которые были переведены входные векторы, соответствующие этим пользовательским событиям. Таким образом, в некоторых вариантах осуществления:
вторым тренировочным входным вектором, переведенным в другой второй тренировочный выходной вектор.
[12] В качестве не ограничивающего примера, каждому из входных векторов может соответствовать временная отметка, указывающая на время, соответствующее пользовательскому(им) событию(ям), а контекст, связанный с каждым из тренировочных входных векторов, может быть определен на основе соответствующей временной отметки, связанной с этим тренировочным входным вектором. Таким образом, в некоторых вариантах осуществления разница между контекстом, который связан с одним из первых тренировочных входных векторов, переведенным (преобразованным) в один из первых тренировочных выходных векторов, и контекстом, который связан с другим первым тренировочным входным вектором, переведенным (преобразованным) в другой первый тренировочный выходной вектор, содержит временной интервал между временем, связанным с соответствующим первым тренировочным входным вектором, переведенным в один из первых тренировочных выходных векторов, и временем, связанным с соответствующим другим первым тренировочным входным вектором, переведенным в другой первый тренировочный выходной вектор; и разница между контекстом, который связан с одним из вторых тренировочных входных векторов, переведенным в один из вторых тренировочных выходных векторов, и контекстом, который связан с другим вторым тренировочным входным вектором, переведенным в другой второй тренировочный выходной вектор, содержит временной интервал между временем, связанным с соответствующим вторым тренировочным входным вектором, переведенным (преобразованным) в один из вторых тренировочных выходных векторов, и временем, связанным с соответствующим другим вторым тренировочным входным вектором, переведенным (преобразованным) в другой второй тренировочный выходной вектор.
[13] В некоторых вариантах осуществления выходные векторы, преобразованные во второе многомерное пространство, представляют собой одно или несколько пользовательских событий, которые произошли за определенный период времени, например, минуту, час, день, месяц, год, декаду и так далее. Таким образом, в некоторых вариантах осуществления третий выходной вектор представляет собой множество пользовательских событий, которые произошли за первый период времени.
[14] В некоторых вариантах осуществления технологии векторы во втором многомерном пространстве могут далее быть переведены в третье многомерное
пространство. Таким образом, в некоторых вариантах осуществления технологии способ дополнительно включает в себя:
[15] Опять же, как и в вышеприведенном случае в отношении первого модуля векторного перевода и второго модуля векторного перевода, третий модуль векторного перевода может быть выполнен с возможностью переводить (преобразовывать) тренировочные входные векторы в тренировочные выходные векторы на основе, по меньшей мере, частично, контекстов, связанных с тренировочными входными векторами. Таким образом, в некоторых вариантах осуществления, третий модуль векторного перевода выполнен с возможностью переводить (преобразовывать) третьи тренировочные входные векторы в третьи тренировочные выходные векторы в третьем многомерном пространстве таким образом, чтобы соответствующее расстояние, разделяющее между собой одни третьи тренировочные выходные векторы и другие третьи тренировочные выходные векторы, коррелировало с разницей между контекстом, который связан с одним из третьих тренировочных входных векторов, переведенным в один из третьих тренировочных выходных векторов, и контекстом, который связан с другим третьим тренировочным входным вектором, переведенным в другой из третьих тренировочных выходных векторов.
[16] Таким образом, разница между контекстом, который связан с одним из третьих тренировочных входных векторов, переведенным в один из третьих тренировочных выходных векторов, и контекстом, который связан с другим третьим тренировочным входным вектором, переведенным в другой третий тренировочный выходной вектор, содержит временной интервал между временем, связанным с одним из третьих тренировочных входных векторов (входной вектор третьей настройки), переведенным в один из третьих тренировочных выходных векторов (выходной вектор третьей настройки), и временем, связанным с другим третьим тренировочным входным вектором (входной вектор третьей настройки), переведенным в другой третий тренировочный выходной вектор (выходной вектор третьей настройки).
[17] В некоторых вариантах осуществления, векторы, которые были переведены во второе многомерное пространство, представляют собой одно или несколько
пользовательских событий, который произошли за достаточно короткий период времени (например, три минуты), а векторы, которые были переведены во второе многомерное пространство, представляют собой одно или несколько пользовательских событий, который произошли за достаточно долгий период времени (например, один час). Таким образом, в некоторых дальнейших вариантах осуществления третий выходной вектор представляет собой множество пользовательских событий, которые произошли за первый период времени, а четвертый выходной вектор представляет собой множество пользовательских событий, которые произошли за второй период времени, причем второй период времени длиннее первого периода времени и включает его в себя.
[18] В подобных вариантах осуществления векторы в первом многомерном пространстве представляют собой, соответственно, пользовательские события, которые произошли за более короткий период времени, а векторы во втором многомерном пространстве представляют собой пользовательские события, которые произошли за более длинный период времени. Таким образом, настоящее решение позволяет проводить последовательный анализ на основе векторов, отражающих поведение пользователя на коротком временном отрезке, длинном временном отрезке или на комбинации коротких и длинных временных отрезков. Например, в некоторых вариантах осуществления анализ поведения пользователя может происходить на коротких временных отрезках. Например, когда определение ранжирования результатов поиска, представленных пользователю, основано на истории просмотров пользователя за последние несколько минут. А анализ поведения пользователя на более длинных временных отрезках может происходить в других случаях, например, при выборе рекламного объявления, которое будет представлено пользователю, будет проведен анализ демографического профиля, определенного на основе истории просмотра пользователя за последние несколько месяцев или лет.
[19] В некоторых вариантах может происходить агрегация информации, относящейся к пользовательских событиям более чем одного типа. Это может быть достигнуто путем представления пользовательских событий всех типов в виде векторов в одном многомерном пространстве. Таким образом, будут облегчены анализ и сравнение пользовательских событий несопоставимых типов. Таким образом, в некоторых вариантах осуществления первое пользовательское событие представляет собой
пользовательское событие первого типа, а второе пользовательское событие представляет собой пользовательское событие второго типа.
[20] Некоторые варианты осуществления модулей векторного перевода могут использовать нейронные сети, подходящие для перевода входных векторов в выходные векторы. Входные узлы нейронных сетей могут принимать за входной сигнал входные векторы, затем распространять последующие значения через узлы сети к выходным узлам, которые выдают выходной вектор, соответствующий входному вектору. Нейронные сети могут быть организованы в соответствии с любой сетевой структурой, вне зависимости от наличия или отсутствия полного или частично соединения с любым числом промежуточных узлов, находящихся между входными и выходными узлами. Таким образом, в некоторых вариантах осуществления:
[21] В некоторых вариантах осуществления модуль векторного перевода был заранее настроен таким образом, что вычислительное устройство просто выполняет перевод (преобразование) входных векторов в выходные векторы с помощью заранее настроенных модулей векторного перевода. В других вариантах осуществления технологии к ненастроенному модулю векторного перевода может быть применена определенная настройка (например, путем установки конкретных величин параметров для модуля векторного перевода). В других вариантах осуществления технологии настройка модулей векторного перевода выполняется вычислительным устройством. Таким образом, в некоторых вариантах осуществления технологии способ дополнительно включает в себя:
[22] В некоторых вариантах осуществления разница в соответствующих контекстах настройки входных векторов включает в себя временной интервал между пользовательскими событиями, которые соответствуют этим входным векторам, причем настройка модулей векторного перевода основана, по меньшей мере, частично, на этих временных интервалах. Таким образом, в некоторых вариантах осуществления технологии способ дополнительно включает в себя:
[23] В вариантах осуществления, в которых используются нейронные сети, настройка модулей векторного перевода включает в себя настройку нейронных сетей. Таким образом, в некоторых вариантах настройка первого модуля векторного перевода включает настройку первой нейронной сети и второй нейронной сети, а настройка второго модуля векторного перевода включает в себя настройку третьей сети.
Настройка может происходить, например, путем обучения нейронных сетей на основе набора данных для обучения. Данные для обучения могут быть гипотетическими или полученными из фактически произошедших пользовательских событий.
[24] Поскольку эти пользовательские события могут быть не только одного типа, в некоторых вариантах осуществления могут быть использованы нейронные сети, соответствующие этим типам событий. Для эффективного перевода входных векторов, соответствующих событий различных типов, в одно и то же многомерное пространство нейронные сети могут быть обучены в то время, когда они соединены в Сиамскую нейронную сеть, как описано в "Multimodal similarity-preserving hashing" под авторством Маски и др. (Далее "Маски"), что доступно в архиве библиотеки Университета Корнуэлла "arXiv" по номеру "arXiv:1207.1522", эта запись вставлена здесь посредством ссылки для всех юрисдикций, допускающих включение в описание технологии сведений посредством ссылки. Каждая нейронная сеть, соответствующая типу пользовательского события может быть обучена таким образом, чтобы минимизировать кроссмодальные потери. Таким образом, в некоторых дополнительных вариантах осуществления технологии настройка первой нейронной сети и второй нейронной сети включает в себя соединение первой нейронной сети и второй нейронной сети в Сиамскую нейронную сеть; и обучение первой нейронной сети и второй нейронной сети для минимизации кроссмодальных потерь между первой нейронной сетью и второй нейронной сетью.
[25] Есть три различных фазы, связанные с вариантами осуществления: (1) настройка модулей векторного перевода, (2) перевод входящих векторов, соответствующих пользовательским событиям, в выходные векторы в одном или нескольких многомерных пространствах, и (3) определение сообщения, которое будет предоставлено пользователю. Каждая из фаз может выполняться в отношении одного и того же пользователя или же другого или нескольких других пользователей. Модули векторного перевода могут быть настроены путем тренировки одной или нескольких составляющих их нейронных сетей с помощью данных для обучения, которые содержат информацию о пользовательских событиях, связанных с первым пользователем (поисковые запросы, введенные первым пользователем в первую поисковую систему и информацию о геолокации в отношении электронного устройства, связанного с первым пользователем). С помощью настроенных модулей векторного перевода вычислительное устройство может переводить входные векторы,
соответствующие пользовательским событиям, которые связаны с первым пользователем или вторым пользователем, в выходные векторы в первом и втором многомерных пространствах. Анализ векторов, включая выходные векторы, может определять сообщение, которое будет предоставлено первому или второму пользователю.
[26] Таким образом, в некоторых вариантах осуществления первое пользовательское событие и второе пользовательское событие связаны с пользователем. В других вариантах осуществления по меньшей мере одно из первого пользовательского события и второго пользовательского события связано со вторым пользователем, который отличается от пользователя.
[27] В некоторых вариантах осуществления входные векторы первой настройки (первые тренировочные входные векторы) соответствуют пользовательским событиями, которые связаны с пользователем. В других вариантах осуществления по меньшей мере один из входных векторов первой настройки (первых тренировочных входных векторов) соответствует пользовательскому событию, которое связано со вторым пользователем, отличным от пользователя.
[28] В некоторых вариантах осуществления способ дополнительно включает в себя получение указания на первое пользовательское событие от пользовательского устройства ввода, находящегося в связи с вычислительным устройством. В некоторых дополнительных вариантах способ дополнительно включает в себя получение указания на второе пользовательское событие от пользовательского устройства ввода. В других вариантах способ дополнительно включает в себя получение указания на второе пользовательское событие от второго пользовательского устройства ввода, отличного от пользовательского устройства ввода.
[29] Рассматриваются различные типы пользовательских событий. В некоторых вариантах первое пользовательское событие включает в себя использование сетевого ресурса (например, веб-страницы, он-лайн сервиса, поисковой системы и т.д.). В других вариантах использование сетевого ресурса включает в себя отображение сетевого ресурса на электронном дисплее. В некоторых подобных вариантах осуществления использование сетевого ресурса включает в себя выбор гиперссылки на сетевой ресурс. В некоторых подобных вариантах сетевой ресурс представляет собой онлайн сервис и использование сетевого ресурса включает в себя по меньшей мере одно из отображения, выбора и покупки по меньшей мере одного товара и услуги через онлайн сервис. В некоторых подобных вариантах осуществления определение первого входного вектора, соответствующего первому пользовательскому событию, включает в себя определение первого входного вектора на основе, по меньшей мере, частично, единого идентификатора ресурса, который относится к сетевому ресурсу. В некоторых подобных вариантах сетевой ресурс представляет собой веб-страницу, и определение первого входного вектора, соответствующего первому пользовательскому событию, включает в себя определение первого входного вектора на основе, по меньшей мере, частично, свойства веб-страницы. В некоторых подобных вариантах свойство веб-страницы является заголовком этой веб-страницы.
[30] В некоторых вариантах сетевой ресурс является поисковой системой, а использование сетевого ресурса представляет собой введение поискового запроса. В некоторых подобных вариантах определение первого входного вектора, соответствующего первому пользовательскому событию, включает в себя определение первого входного вектора на основе, по меньшей мере, частично, поискового термина из поискового запроса.
[31] В некоторых вариантах осуществления второе пользовательское событие включает в себя установление связи между пользователем и географическим положением. В некоторых подобных вариантах осуществления установление связи между пользователем и географическим положением включает в себя присутствие пользователя в границах данного географического положения. В некоторых подобных вариантах определение второго входного вектора, соответствующего второму пользовательскому событию, включает в себя определение второго входного вектора на основе, по меньшей мере, частично, координат географического положения.
[32] В некоторых вариантах осуществления определение сообщения, которое будет предоставлено пользователю, включает в себя оценку сетевого ресурса на предмет интереса для пользователя; и инициирование предоставления устройством вывода сообщения пользователю включает в себя инициирование предоставления устройством вывода указания пользователю на сетевой ресурс. В некоторых подобных вариантах оценка сетевого ресурса на предмет интереса для пользователя включает определение ранга для множества сетевых ресурсов; и инициирование предоставления устройством вывода указания пользователю на сетевой ресурс включает в себя инициирование предоставления устройством вывода пользователю по меньшей мере одного из: указания на ранг подмножества из множества сетевых ресурсов, указания на элемент множества сетевых ресурсов, который обладает самым высоким рангом, указания на элемент множества сетевых ресурсов, который обладает самым низким рангом.
[33] В некоторых вариантах осуществления определение сообщения, которое будет предоставлено пользователю, основанного на анализе по меньшей мере одного из первого выходного вектора и третьего выходного вектора, включает в себя:
[34] В некоторых вариантах осуществления определение сообщения, которое будет предоставлено пользователю, основанного на анализе по меньшей мере одного из первого выходного вектора и третьего выходного вектора, включает в себя:
[35] В других вариантах осуществления определение сообщения, которое будет предоставлено пользователю, основанного на анализе по меньшей мере одного из первого выходного вектора и третьего выходного вектора, включает в себя:
[36] Входные векторы второго модуля векторного перевода определяются, по меньшей мере, частично, на основе выходных векторов в первом многомерном пространстве. Определение этих входных векторов может включать в себя взятие среднего из выходных векторов путем усреднения их величин в каждом измерении. Таким образом, в некоторых вариантах определение третьего входного вектора, по меньшей мере, частично, на основе вычисления средних величин вектором, включая первый выходной вектор и второй выходной вектор. Возможны и другие способы определения входных векторов на основе выходных векторов, которые могут применяться вместо или вместе с вычислением средней величины векторов. Например, статистика типов пользовательских событий, которым соответствуют выходные векторы, может быть вычислена и включена во входной вектор.
[37] Другим объектом настоящего решения является постоянный машиночитаемый носитель, хранящий программные инструкции (машиночитаемые коды) для оценки интересов пользователя, причем программные инструкции (машиночитаемые коды) используются одним или несколькими процессорами одного или нескольких вычислительных устройств для выполнения одного или нескольких из вышеупомянутых методов. Таким образом, различные варианты осуществления предусматривают наличие постоянного машиночитаемого носителя, хранящего программные инструкции (машиночитаемые коды) для оценки интересов пользователя, программные инструкции (машиночитаемые коды) используются вычислительным устройством, которое соединено с устройством вывода, и осуществляют:
[38] В контексте настоящего описания, если четко не указано иное, «вычислительное устройство» подразумевает под собой аппаратное и/или системное обеспечение, подходящее к решению соответствующей задачи. Таким образом, примерами электронных устройств, среди прочего, могут служить компьютерные процессоры, компьютерные системы (один или несколько серверов, настольных компьютеров, ноутбуков, нетбуков и т.п.) смартфоны, планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы.
[39] В контексте настоящего описания, если четко не указано иное, "устройство вывода" представляет собой любое аппаратное устройство, подходящее для предоставления информации пользователю в любом виде - визуальном, звуковом, тактильном или каком-либо ином. Не ограничивающие примеры включают в себя экраны, головные дисплеи, проекторы, а также звуковые интерфейсы, соединенные с динамиками или наушникам.
[40] В контексте настоящего описания, если четко не указано иное, "устройство ввода" представляет собой любое аппаратное устройство, подходящее для получения информации от пользователя в любом виде - визуальном, звуковом, тактильном или каком-либо ином. Не ограничивающие примеры включают в себя клавиатуры, мыши, микрофоны, сенсорные экраны, тачпады, камеры и антенны.
[41] В контексте настоящего описания, если четко не указано иное, первое устройство "находится в связи" со вторым устройством, если каждое из устройств способно передавать информацию (сигналы) другому устройству и принимать информацию (сигналы) от другого устройства через любой физический носитель или комбинацию физических носителей, на любом расстоянии и с любой скоростью. В качестве не ограничивающего примера, два цифровых электронных устройства могут быть связаны через компьютерную сеть, например, через Интернет. В качестве другого не ограничивающего примера, устройства могут работать на одном и том же цифровом электронном аппаратном обеспечении, в этом случае связь может возникнуть с помощью средств, доступных на подобном цифровом электронном аппаратном обеспечении, как, например, с помощью межпроцессного взаимодействия.
[42] В контексте настоящего описания, если четко не указано иное, "машиночитаемый носитель" подразумевает под собой носитель абсолютно любого типа и характера, не ограничивающие примеры включают в себя ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB-ключи, флеш-карты, твердотельные накопители и накопители на магнитной ленте.
[43] В контексте настоящего описания, если четко не указано иное, "поисковый запрос", подразумевает под собой информацию (информационный сигнал), которую поисковая система учитывает при проведении поиска с целью предоставить пользователю информацию, которую пользователь надеется получить при поиске. Каждая частичка информации является "элементом" поискового запроса. Поисковые запросы могут включать в себя различные элементы, например, среди прочего, один или несколько "поисковых терминов" (например, слова, буквы, цифры, символы и т.п), IP-адрес клиентского устройства, географическое положение клиентского устройства, (предполагаемый) язык поискового(ых) термина(ов), учетную запись в поисковой системе, связанную с (предполагаемым) пользователем клиентского устройства, а также приложение, используемое пользователем для выполнения поиска. Несмотря на то, что пользователь может и не быть курсе того, что различные элементы были включены в его поисковый запрос, включение различных элементов способствует предоставлению пользователю информации, которую он надеется получить при поиске. В настоящем контексте, как правило, не требуется никакого конкретного количества или типа элементов, но чем больше элементов было предоставлено поисковой системе, тем лучше будут результаты поиска.
[44] В контексте настоящего описания, если четко не указано иное, "признак" информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, признак файла может включать в себя сам файл (т.е. его содержимое), или же он может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или каким-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам в данной области техники, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указателя. Например, если до установления связи между отправителем и получателем понятно, что признак информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, содержащей информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что сам по себе информационный элемент не передавался между отправителем и получателем указания.
[45] В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной связи между этими существительными. Так, например, следует иметь в виду, что использование терминов "первый сервер" и "третий сервер " не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) серверов/между серверами, равно как и их использование (само по себе) не предполагает, что некий "второй сервер" обязательно должен существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание "первого" элемента и "второго" элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, "первый" сервер и "второй" сервер могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.
[46] В контексте настоящего описания выражение "настройка входных векторов" и "настройка выходных векторов" относятся к входным и выходным векторам, которые используются для настройки модуля векторного перевода в фазе настройки.
[47] Каждый вариант осуществления включает по меньшей мере одну из вышеупомянутых целей и/или объектов, но наличие всех не является обязательным.
[48] Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящей технологии станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы технологии.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[49] Для лучшего понимания настоящего решения, а также других аспектов и характерных черт сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:
[50] На Фиг. 1 представлена схема сетевой вычислительной среды, подходящей для настройки варианта осуществления;
[51] На Фиг. 2-4 представлены диаграммы, представляющие собой различные пользовательские события, которые используются для настройки варианта осуществления;
[52] На Фиг. 5-6 представлены диаграммы, представляющие собой определение входных векторов первой настройки, соответствующих пользовательским событиям, которые связаны с пользователем;
[53] На Фиг. 7 представлена диаграмма, показывающая перевод входных векторов первой настройки в выходные векторы первой настройки в первом многомерном пространстве с помощью настроенного первого модуля векторного перевода;
[54] На Фиг. 8 представлена блок-схема первого модуля векторного перевода, включающего в себя две настроенные нейронные сети;
[55] На Фиг. 9 представлена диаграмма, изображающая первое многомерное пространство, включающее в себя выходные векторы первой настройки;
[56] На Фиг. 10 представлена диаграмма, изображающая определение входных векторов второй настройки на основе выходных векторов первой настройки и перевод входных векторов второй настройки в выходные векторы второй настройки во втором многомерном пространстве с помощью второго настроенного модуля векторного перевода;
[57] На Фиг. 11 представлена блок-схема второго модуля векторного перевода, включающего в себя настроенную нейронную сеть;
[58] На Фиг. 12 представлена диаграмма, изображающая второе многомерное пространство, включающее в себя выходные векторы второй настройки;
[59] На Фиг. 13 представлена диаграмма, изображающая определение входных векторов третьей настройки на основе выходных векторов второй настройки и перевод входных векторов третьей настройки в выходные векторы третьей настройки в третьем многомерном пространстве с помощью третьего настроенного модуля векторного перевода;
[60] На Фиг. 14 представлена диаграмма, изображающая третье многомерное пространство, включающее в себя выходные векторы третьей настройки;
[61] На Фиг. 15 представлена схема сетевой вычислительной среды, подходящей для использования варианта осуществления настоящей технологии;
[62] На Фиг. 16-17 представлены диаграммы, представляющие собой определение первых входных векторов, соответствующих пользовательским событиям, которые связаны с пользователем;
[63] На Фиг. 18 представлена диаграмма, показывающая перевод первых входных векторов в первые выходные векторы в первом многомерном пространстве с помощью первого настроенного модуля векторного перевода, определение второго входного вектора на основе первых выходных векторов и перевод второго входного вектора во второй выходной вектора во втором многомерном пространстве с помощью второго настроенного модуля векторного перевода;
[64] На Фиг. 19 представлена диаграмма, представляющая идентификацию интересов пользователя на основе выходного вектора во втором многомерном пространстве;
[65] На Фиг. 20 представлен пример снимка экрана с выбором пользователем одной из трех гиперссылок на новостные статьи, которые отображаются в веб-браузере;
[66] На Фиг. 21-12 представлены диаграммы, представляющие собой определение первых входных векторов, соответствующих пользовательским событиям, которые связаны с пользователем;
[67] На Фиг. 23 представлена диаграмма, показывающая перевод первых входных векторов в первые выходные векторы в первом многомерном пространстве с помощью первого настроенного модуля векторного перевода, определение второго входного вектора на основе первых выходных векторов и перевод второго входного вектора во второй выходной вектора во втором многомерном пространстве с помощью второго настроенного модуля векторного перевода;
[68] На Фиг. 24 представлена диаграмма второго многомерного пространства, включающего в себя вторые выходные векторы, которые были переведены со ссылкой на Фиг. 18 и 23;
[69] На Фиг. 25 представлен пример снимка экрана с веб-браузером, в котором отображаются гиперссылки на новостные статьи в порядке, соответствующем тому, что показан на Фиг. 20; и
[70] На Фиг. 26 представлена блок-схема, отображающая этапы осуществления способа.
[71] Также следует отметить, что чертежи выполнены не в масштабе, если не специально указано иное.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[72] Все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь специалисту понять принципы настоящего решения, а не для установления границ объема правовой защиты. Следует также отметить, что специалисты в данной области техники могут разработать различные схемы, отдельно не описанные и не показанные здесь, но которые, тем не менее, воплощают собой принципы настоящего решения и находятся в границах правовой охраны.
[73] Кроме того, для ясности в понимании, следующее описание касается достаточно упрощенных вариантов осуществления. Как будет понятно специалисту в данной области техники, многие варианты будут обладать гораздо большей сложностью.
[74] Некоторые полезные примеры модификаций также могут быть охвачены нижеследующим описанием. Целью этого является также исключительно помощь в понимании. Эти модификации не представляют собой исчерпывающего списка, и специалисты в данной области техники могут создавать другие модификации, остающиеся в границах правовой охраны решения. Кроме того, те случаи, где не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента.
[75] Более того, все заявленные здесь принципы, аспекты и варианты осуществления, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ, вне зависимости от того, известны ли они на данный момент или будут разработаны в будущем. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы настоящего решения. Аналогично, любые блок-схемы, диаграммы переходного состояния, псевдокоды и т.п.представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором, вне зависимости от того, показан явно подобный компьютер или процессор или нет.
[76] Функции различных элементов, показанных на фигурах, включая функциональный блок, обозначенный как "процессор", могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. Более того, использование термина "процессор" или "контроллер" не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральная схема специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также может быть включено другое аппаратное обеспечение, обычное и/или специальное.
[77] Программные модули или простые модули, представляющие собой программное обеспечение, которое может быть использовано здесь в комбинации с элементами блок-схемы или другими элементами, которые указывают на выполнение этапов процесса и/или текстовое описание. Подобные модели могут быть выполнены на аппаратном обеспечении, показанном напрямую или косвенно.
[78] С учетом этих примечаний, далее будут рассмотрены некоторые не ограничивающие варианты осуществления.
[79] Существует две фазы, относящиеся к настоящему решению, которые представлены на следующих фигурах. На Фиг. 1-14 представлена фаза настройки, в которой различные модули векторного перевода в примерном варианте осуществления выполнены с возможностью переводить входные векторы настройки, соответствующие пользовательским событиям, в выходные векторы настройки в различных многомерных пространствах, таким образом, чтобы расстояние, отделяющее выходные векторы друг от друга, коррелировало с временным интервалом между входными векторами, которым они соответствуют. На Фиг. 15-26 представлена фаза применения, в которой настроенные модули векторного перевода в примерном варианте осуществления используются для определения содержимого веб-страницы, в качестве одного из примеров потенциального применения.
[80] На Фиг. 1 показана сетевая вычислительная среда 100, подходящая для настройки некоторых вариантов осуществления, сетевая вычислительная среда 100 содержит смартфон 112 (например, Apple iPhone™ или Samsung Galaxy S4™) с сенсорным экраном 114 для отображения информации пользователю 110 и получения сенсорных команд от пользователя 110, смартфон 122 с сенсорным экраном 124 для отображения информации пользователю 120 и получения сенсорных команд от пользователя 120, сервер 130, соединенный со смартфонами 112 и 122 через сеть 101 передачи данных (например, Интернет) и GPS-спутник 140, передающий GPS-сигналы 116 и 126 смартфонам 112 и 122 соответственно.
[81] Хотя это и не показано, специалисту будет ясно, что смартфоны 112 и 122 состоят из различных аппаратных модулей, которые включают, наряду с соответствующими сенсорными экранами 114 и 124, один или несколько одно- или многоядерных процессоров, ОЗУ, один или несколько сетевых интерфейсов для связи с сервером 130 через сеть 101 передачи данных и GPS-ресивер. Следует иметь в виду, что в других вариантах осуществления может быть использована другая технология географического позиционирования, отличная от GPS. Смартфоны 112 и 122 работают на операционных системах (например, Apple iOS, Google Android), которые включают в себя услугу умного личного помощника (например, Apple Siri, Google Now).
[82] Несмотря на то, что сервер 130 представлен в виде одиночного физического компьютера (который в данном случае включает в себя аппаратные модули, содержащие один или несколько процессоров, память и сетевой интерфейс), следует иметь в виду, что сервер 130 может быть выполнен в виде множества сетевых компьютеров или же одного или нескольких виртуальных серверов, работающих на одном или нескольких физических компьютеров (например, на облачном сервисе).
[83] На Фиг. 2 представлены два пользовательских события, связанные с пользователем 110. Первое пользовательское событие 211 включает себя предоставление пользователем 110 вопроса: "Какова высота Эйфелевой башни?" в первый момент времени 221 (17 июля 13:43) сервису умного личного помощника, работающему на его смартфоне 112. Второе пользовательское событие 212 включает себя нахождение пользователя 110 возле Эйфелевой башни в соответствии с GPS-сигналом 116 от GPS-спутника 140 во второй момент времени 222 (не показан на Фиг. 2) вскоре после первого момента времени 221.
[84] На Фиг. 3 представлены два дальнейших пользовательских события, связанных с пользователем 110, конкретнее - третье пользовательское событие 213 и четвертое пользовательское событие 214. Третье пользовательское событие 213 включает в себя нахождение пользователя 110 возле известного парижского кафе "Les Deux Magots" в соответствии с GPS-сигналом 116 от GPS-спутника 140 в третий момент времени 223 (17 июля 21:24). Четвертое пользовательское событие 214 включает себя предоставление пользователем 110 вопроса: "Что такое профитроли?" сервису умного личного помощника, работающему на его смартфоне 112, в четвертый момент времени 224 (не показан на Фиг. 3) вскоре после третьего момента времени 223.
[85] На Фиг. 4 представлены два дальнейших пользовательских события, на этот раз связанных с другим пользователем 120, конкретнее - пятое пользовательское событие 215 и шестое пользовательское событие 216. Пятое пользовательское событие 215 включает себя предоставление пользователем 110 вопроса: "До скольких сегодня работает МоМА?" сервису умного личного помощника, работающему на его смартфоне 122, в пятый момент времени 225 (10 августа 19:13). Второе пользовательское событие 216 включает себя нахождение пользователя 120 в Нью-Йореке в соответствии с GPS-сигналом 126 от GPS-спутника 140 в шестой момент времени 226 (не показан на Фиг. 4) вскоре после пятого момента времени 225. Стоит отметить, что пользовательские события 215 и 216 связаны с пользователем 120 в примерном варианте осуществления, описанном здесь, в других же вариантах пользовательские события 211-216, на основе которых настроены модули векторного перевода, могут быть связаны с одним и тем же пользователем 110 или же с другим(и) пользователем(ями) (не показаны).
[86] На Фиг. 5 представлен способ определения сервером 130 (изображен на Фиг. 1) первого входного вектора 231, соответствующего первому пользовательскому событию 211, которое произошло в первый момент времени 221 (17 июля 13:43). Первое хеширование 131, выполняемое сервером 130, используется для создания первого входного вектора 231 на основе первого пользовательского события 211, результирующий первый входной вектор 231 состоит из кортежа хеш-значений в пяти измерениях (обозначенных буквами от "а" до "е"). В то время как при первом хешировании 131 создаются пятимерные входные векторы в представленном варианте осуществления, в других вариантах число измерений может быть меньше или больше.
[87] Первое хеширование 131 может специализироваться на создании входных векторов, соответствующих пользовательских события конкретного типа, например, запроса умному личному помощнику: "Какова высота Эйфелевой башни?" из первого пользовательского события 211, или же первое хеширование может представлять собой хеширование общего типа, которое может быть использовано для создания хеш-значений в отношении пользовательских событий более чем одного типа. Создание хеш-значений на основе данных произвольной длины, таких как запросы умному личному помощнику, хорошо известно в данной области техники, и в рамках настоящего решения может быть использован любой вариант осуществления первого хеширования 131. После того, как первый входной вектор 231 был определен, он может быть связан с первым моментом времени 221 первого пользовательского события 211 по причинам, которые будут объяснены ниже.
[88] На Фиг. 6 представлен принцип определения сервером 130 (изображен на Фиг. 1) второго входного вектора 232, соответствующего второму пользовательскому событию 212, которое произошло во второй момент времени 222 (17 июля 13:43) вскоре после первого момента времени 221. Второе хеширование 132, выполняемое сервером 130, используется для создания первого входного вектора 232 на основе второго пользовательского события 212, результирующий второй входной вектор 232 состоит из кортежа хеш-значений в трех измерениях (обозначенных буквами от "f" до "h").
[89] Опять же, в других вариантах осуществления технологии число измерений может быть меньше или больше. Таким образом, как и в выше представленном варианте, второе хеширование 132 может быть использовано для создания входных векторов, соответствующих пользовательским событиям конкретного типа - в данном случае будут использоваться географические координаты (например, широта и долгота) географического положения (например, 48°51'28.7''N, 2°17'30.6''Е), связанные со вторым пользовательским событием 212. После того, как второй входной вектор 232 был определен, он может быть связан со вторым моментом времени 222 второго пользовательского события 212.
[90] На Фиг. 7 представлен принцип процесса перевода входных векторов 231-236, которые соответствуют пользовательским событиями 211-216 (показаны в соответствующие им моменты времени 221-226 на графике 220), в соответствующие выходные векторы 241-246 в первом многомерном пространстве 240. В примерном варианте осуществления технологии, представленном здесь, первое многомерное пространство 240 обладает тремя измерениями ('x1', 'у1', and 'z1'), но может обладать и большим или меньшим количеством измерений в других вариантах осуществления технологии. Перевод выполняется модулем 133 векторного перевода сервера 130, который может содержать одну или несколько нейронных сетей, например первую нейронную сеть 1331 и вторую нейронную сеть 113 В, которые показаны на Фиг. 8.
[91] Нейронные сети 1331 и 1332 могут быть выполнены с возможностью переводить (преобразовывать) входные векторы, соответствующие пользовательским событиям конкретного типа. Например, как показано на Фиг. 8, первая нейронная сеть 1331 может переводить входные векторы, соответствующие запросам умному личному помощнику, например, входной вектор 231, а вторая нейронная сеть 1332 может переводить входные векторы, соответствующие геолокационным событиям, например, входной вектор 232. В этом случае выходные векторы (например, 241 и 242), соответствующие пользовательским событиям разного типа, могут быть переведены в одно многомерное пространство (например, первое многомерное пространство 240), упрощая тем самым сравнение и анализ пользовательских событий разного типа.
[92] Каждая нейронная сеть 1331 и 1332 включает в себя входной слой с входными узлами, число которых совпадает с числом измерений входных векторов, которые будут переведены, и выходной слой с выходными узлами, число которых совпадает с числом измерений первого многомерного пространства 240. Кроме того, каждая из нейронных сетей 1331 и 1332 может дополнительно содержать один или несколько скрытых слоев с любым числом измерений, например, одиночный скрытый слой с двумя узлами (не пронумерованы) второй нейронной сети 1332, показанный на Фиг. 8. Более того, может быть использована любая подходящая топология нейронной сети, вне зависимости от того, является ли она не-полносвязной, как первая нейронная сеть 1331, или полносвязной, как вторая нейронная сеть 1332.
[93] В фазе настройки (тренировки) настоящей технологии первый модуль 133 векторного перевода настроен таким образом, что выходные векторы 241-246 - в которые были переведены входные векторы 231-236 - находятся друг от друга на расстоянии, которое коррелирует с разницей между контекстами, связанными с пользовательскими событиями 211-216. Другими словами, пользовательские события, связанные с похожими контекстами, будут преобразованы в близкие выходные векторы в первом многомерном пространстве 240, а пользовательские события, связанные с непохожими контекстами, будут преобразованы в отдаленные друг от друга выходные векторы в первом многомерном пространстве 240. В различных вариантах осуществления настоящей технологии, "контекст", с которым связано каждое пользовательское событие, может быть определен на основе различных факторов, ни один из которых не ограничивает варианты осуществления настоящей технологии. Для целей иллюстрации, примерный вариант осуществления технологии, описанный здесь, использует моменты времени, в которые происходили пользовательские события, в качестве косвенного показателя для контекста этого пользовательского события, таким образом, что пользовательские события, которые произошли по времени близко друг к другу, считаются принадлежащими к похожим контекстам, а пользовательские события, которые произошли с большой временной разницей, считаются принадлежащими к различным контекстам.
[94] Например, как показано на Фиг. 9, первый выходной вектор 241 и второй выходной вектор 242 находятся на небольшом расстоянии 241242 в первом многомерном пространстве 240, с учетом того факта, что временной интервал 221222 (показанный на Фиг. 7) между первым моментом времени 221 и вторым моментом времени 222 также является небольшим. Это же справедливо для расстояния 243244, которое коррелирует с временным интервалом 223224, а также для расстояния 245246, которое коррелирует с временным интервалом 225226. И наоборот, выходные векторы 244 и 245 находятся на достаточно большом расстоянии 244245, которое соответствует большой временному интервалу 224245 между четвертым моментом времени 224 четвертого пользовательского события 214 и пятым моментом времени 225 пятого пользовательского события 225 (как показано на Фиг. 7). Временной интервал 224225 разделяет векторы 224 и 225. Временной интервал 242243 разделяет векторы 242 и 243. Временной интервал 244245 разделяет векторы 244 и 245. Временной интервал 245246 разделяет векторы 245 и 246251.
[95] В зависимости от варианта осуществления, будет меняться способ, по которому модуль 133 векторного выполнен с возможностью инициировать перевод входных векторов, соответствующих пользовательским событиям, которые отдалены друг от друга во времени, в выходные векторы, отдаленные друг от друга в первом многомерном пространстве 240. В вариантах осуществления модуля 133 векторного перевода, которые содержат нейронные сети (например, нейронную сеть 1331 и 1332, как показано на Фиг. 8), настройка первого модуля 133 векторного перевода включает в себя обучение/наладку граничных значений узлов для нейронных сетей 1331 и 1332 для достижения желаемой корреляции расстояний между выходными векторами 241-246 и временными интервалами между пользовательскими событиями 211-216.
[96] Кроме того, в вариантах осуществления модуля 133 векторного перевода, которые содержат больше одной нейронной сети (например, 1331 и 1332) для обеспечения перевода входных векторов, соответствующих пользовательским событиям разных типов, в одно и то же многомерное пространство (например, первое многомерное пространство 240, как описано выше со ссылкой на Фиг. 7), настройка нескольких сетей (1331, 1332 и так далее) может включать в себя калибровку этих нейронных сетей по отношению друг к другу. Это может быть достигнуто, например, путем обучения нейронных сетей (1331, 1332 и так далее) во время соединения их в Сиамскую нейронную сеть, как описано у Маски, и наладки соответствующих параметров нейронных сетей (1331, 1332 и так далее) для минимизации кроссмодальных потерь между ними, причем "типы пользовательских событий" в рамках настоящей технологии могут быть приравнены к "модальностям", упомянутым у Маски, и каждая нейронная сеть (1331, 1332 и так далее) первого модуля 130 векторного перевода выполнена с возможностью переводить входные векторы, соответствующие пользовательским событиям одного типа, в выходные векторы в одном и том же многомерном пространстве (первом многомерном пространстве 240).
[97] Как показано на Фиг. 10, после перевода первых выходных векторов 241-246 в первое многомерное пространство 240, вторые векторы 251-253 могут быть определены на основе этих первых выходных векторов 241-246, например, путем использования первого модуля 134 векторной агрегации сервера 130. Как следует из названия, модуль 134 векторной агрегации объединяет один или несколько векторов, которые были выбраны из первых выходных векторов 241-246 в первом многомерном пространстве 240, и создает вторые входные векторы на их основе.
[98] Например, в вариантах осуществления первый модуль 134 векторной агрегации может выбирать подмножество первых выходных векторов 241-246, полученных из пользовательских событий 211-216, которые произошли за определенный период времени (т.е. путем проверки временных отметок на предмет того, находятся ли они в пределах конкретного диапазона значений). В зависимости от варианта осуществления, выбранный период времени может быть любой длины (например, одна минута, десять минут, один час, один день, три недели, два года и т.д.).
[99] На Фиг. 10 входной вектор 251 соответствует пользовательским событиям 211 и 212, которые произошли за один час (т.е. 17 июля между 13:00 и 14:00), входной вектор 252 соответствует пользовательским событиям 213 и 214, которые произошли за другой час (т.е. 17 июля между 21:00 и 22:00), а входной вектор 253 соответствует пользовательским события 215 и 216, которые произошли за третий час (т.е. 10 августа между 19:00 и 20:00). Естественно, для избежания путаницы в часовых поясах рассматриваемые временные периоды могут быть переведены к универсальному времени, например, среднему времени по Гринвичу (GMT). Кроме того, следует иметь в виду, что, несмотря на то, что в примерном варианте осуществления технологии только шесть первых выходных векторов 241-246 представлены на Фиг. 10, в других контекстах может быть объединено куда большее количество пользовательских событий и соответствующих первых выходных векторов.
[100] Объединение векторов, выбранных первым модулем 134 векторной агрегации может включать в себя сложение векторов (т.е. параллельное соединение их друг с другом таким образом, чтобы число измерений совокупного вектора совпадало с числом измерений объединенных векторов, умноженной на число объединенных векторов). Альтернативно или в дополнении к сложению, объединение векторов может включать в себя усреднение векторов (т.е. взятие среднего значения выбранных векторов в каждом измерении первого многомерного пространства 240). Объединение также может включать в себя составление статистики о выбранных выходных векторах для подсчета количества выходных векторов, полученных из пользовательских событий каждого типа. В результате, например, при применении усреднения, вторые входные векторы 251-253, созданные при первой векторной агрегации 251 могут обладать одним измерением для каждого измерения первого многомерного пространства 240, а также одно дополнительное измерение для каждого типа пользовательского события, на основе которых были созданы первые выходные векторы 241-246.
[101] Например, входной вектор 251 будет обладать пятью измерениями: первым измерением, соответствующим измерению "x1" первого многомерного пространства 240 и обладающим значением, равным среднему значению первых выходных векторов 241-242 в измерении "x1", вторым измерением, соответствующим измерению "y1" второго многомерного пространства 240 и обладающим значением, равным среднему значению первых выходных векторов 241-242 в измерении "y1", третьим измерением, соответствующим измерению "z1" первого многомерного пространства 240 и обладающим значением, равным среднему значению первых выходных векторов 241-242 в измерении "z1", четвертым измерением, соответствующим типу запроса умному личному помощнику и обладающим значением "1" (число первых выходных векторов 241-242, полученных из пользовательских событий этого типа), и последним пятым измерением, соответствующим геолокации пользовательского события и также обладающим значением "1" (число первых выходных векторов 241-242, полученных из пользовательских событий этого типа).
[102] После того как первые выходные векторы 241-246 были объединены во вторые входные векторы 251-253 первым модулем 134 векторной агрегации, они переводятся в соответствующие вторые выходные векторы 261-263 во втором многомерном пространстве 260 с помощью второго модуля 135 векторного перевода сервера 130. В примерном варианте осуществления технологии, представленном здесь, второе многомерное пространство 260 обладает тремя измерениями ('х2', 'у2' and 'z2'), но может обладать и большим или меньшим количеством измерений в других вариантах осуществления технологии.
[103] Перевод вторых входных векторов 251-253 во вторые выходные векторы 261-263 может быть осуществлен вторым модулем 135 векторного перевода аналогично тому, как переводились первые входные векторы 231-236 в первые выходные векторы 241-246 первым модулем 133 векторного перевода. Как показано на Фиг. 11 второй модуль 135 векторного перевода может включать в себя третью нейронную сеть 135А с входными узлами, число которых совпадает с числом измерений вторых входных векторов 251-253, созданных первым модулем 134 векторной агрегации, а число выходных узлов совпадает с числом измерений второго многомерного пространства 260. Как это уже упоминалось по отношению к первой нейронной сети 1331 и второй нейронной сети 1332 первого компонента 133 векторного перевода, третья нейронная сеть 135А второго компонента 135 векторного перевода может содержать любое число скрытых слоев узлов (скрытые слои отсутствуют в варианте осуществления технологии, представленном на Фиг. 11), третья нейронная сеть 135А может быть организована в виде любой подходящей топологии сети, например, полносвязной топологии, которая представлена на Фиг. 11.
[104] На Фиг. 12 более подробно показано многомерное пространство. Конкретно, следует обратить внимание на расстояния между вторыми выходными векторами 261-263. Во время фазы настройки второй модуль 135 векторного перевода настроен таким образом, что вторые выходные векторы 261-263 отдалены друг от друга на расстояние, коррелирующее с длиной временного интервала между моментами времени, связанными с соответствующими вторым входными векторами 251-253, которые были в них переведены.
[105] Например, как описано выше, входной вектор 251 может соответствовать одному временному периоду длиной в час, 17 июля 13:00-14:00, входной вектор 252 может соответствовать другому временному периоду длиной в час, 17 июля 21:00-22:00, а третий входной вектор 253 может соответствовать третьему временному периоду длиной в час, 10 августа 19:00-20:00. Таким образом, восемь часов отделяют временной промежуток, связанный с входным вектором 251, и временной промежуток, связанный с входным вектором 252, и 574 часа отделяют временной промежуток, связанный с входным вектором 252, и временной промежуток, связанный с входным вектором 253. Таким образом, второй модуль векторного перевода может быть настроен таким образом, что отношение расстояния 262263 (которое отделяет второй выходной вектор 263 от второго выходного вектора 262) к расстоянию 261262 (которое отделяет второй выходной вектор 262 от второго выходного вектора 261) составляет примерно 573/8=71.75.
[106] Для того, чтобы данная технология была эффективной, достижение конкретного соотношения не является необходимым. В рамках вариантов осуществления технологии, в которых второй модуль 135 векторного перевода реализован с использованием третьей нейронной сети 135А, как показано на Фиг. 11, настройка второго модуля 135 векторного перевода включает в себя обучение/наладку граничных значений узлов для третьей нейронной сети 135А таким образом, чтобы расстояния, отделяющие вторые выходные векторы 261-263 друг от друга, коррелировали с временными интервалами, соответствующими вторым векторам 251-253.
[107] В некоторых вариантах осуществления технологии объединение выходных векторов в одном многомерном пространстве для создания входных векторов и перевод таким образом созданных входных векторов в другое многомерное пространство может быть повторен один или несколько дополнительных раз. На Фиг. 13 показано дополнительное расширение настоящей технологии с помощью вторых выходных векторов 261-263, которые были объединены вторым модулем 136 векторной агрегации сервера 130 в третьи входные векторы 271-272, причем третий входной вектор 271 основан на тех вторых выходных векторах 261-263, которые были получены из пользовательских событий, произошедших в июле (т.е. вторых выходных векторах 261-262), а третий входной вектор 272 основан на тех вторых выходных векторах 261-263, которые были получены из пользовательских событий, произошедших в августе (т.е. втором выходном векторе 263).
[108] Опять же, объединение может включать в себя сложение выбранных вторых выходных векторов 261-263 и/или усреднение выбранных вторых выходных векторов 261-263, а также составление статистики о типах пользовательских событий, из которых были получены вторые выходные векторы 261-263. Третий модуль 137 векторного перевода сервера 130 далее выполнен с возможностью переводить третьи входные векторы 271-272 в третьи выходные векторы 281-282 в третьем многомерном пространстве 280, опять же, таким образом, что расстояние 281282, отделяющее третьи выходные векторы 281 и 282 (показаны на Фиг. 14), коррелирует с временным интервалом между входными векторами 271-272.
[109] После окончания настройки первого модуля 133 векторной настройки и второго модуля 135 векторной настройки (а также третьего модуля 137 векторной настройки и любых других модулей векторной настройки, которые могут использоваться в других вариантах осуществления технологии), настроенные модули могут применяться в фазе применения для перевода входных векторов, соответствующих других пользовательским событиям, в выходные векторы в первом, втором и других многомерных пространствах, в зависимости от обстоятельств. В некоторых вариантах осуществления технологии сервер 130 может сам выполнять функции настроенных модулей 133, 135, 137 векторного перевода в фазе применения. В других вариантах осуществления технологии, настройка модулей 133, 135, 137 векторного перевода может быть сохранена в постоянной машиночитаемой памяти сервера 130 и/или передана одному или нескольким компьютерам (физическим или виртуальным), находящимся в связи с сервером 130 (например, через сеть передачи данных, например, Интернет), такому как сервер 330 в сетевой вычислительной среде 300, показанной на Фиг. 15. Сервер 330 может далее настраивать свои собственные первый модуль 333 векторного перевода и второй модуль 335 векторного перевода (показаны на Фиг. 18) на основе информации о настройке, полученной от сервера 130. Как показано далее на Фиг. 15. сервер 330 через сеть 301 передачи данных (например, Интернет) соединен со смартфоном 312 (например, Apple iPhoneTM или Samsung Galaxy S4TM), обладающим сенсорным экраном 314 для отображения информации пользователю 310 и получения сенсорных команд от пользователя 310, и смартфоном 322, обладающим сенсорным экраном 324 для отображения информации пользователю 320 и получения сенсорных команд от пользователя 320.
[110] Пользователи 310 могут являться теми же самыми, что и пользователи 110, 120, которые упоминались в фазе настройки (тренировки), или же это могут быть другие пользователи. Аналогичным образом, смартфоны 312, 322 могут являться одними и тем же устройствами, что и смартфоны 112, 122, или же другими. GPS-спутник 340 передает GPS-сигналы 316, 326 смартфонам 312, 322. GPS-спутник 340 может являться тем же спутником, что и GPS-спутник 140 в фазе настройки, или же это может быть другой GPS-спутник.
[111] Хотя это и не показано, специалисту в данной области техники будет ясно, что смартфоны 312 и 322 состоят из различных аппаратных модулей, которые включают в себя, наряду с соответствующими сенсорными экранами 314 и 324, один или несколько одно- или многоядерных процессоров, ОЗУ, один или несколько сетевых интерфейсов для связи с сервером 330 через сеть 301 передачи данных и GPS-ресивер. Также следует иметь в виду, что в других вариантах осуществления настоящей технологии может быть использована другая технология географического позиционирования, отличная от GPS. Смартфоны 312 и 322 работают на операционных системах (например, Apple iOS, Google Android), которые включаются в себя услугу умного личного помощника (например, Apple Siri, Google Now). Несмотря на то, что сервер 330 представлен в виде одиночного физического компьютера (который в данном случае включает в себя аппаратные модули, содержащие один или несколько процессоров, память и сетевой интерфейс), следует иметь в виду, что сервер 330 может быть выполнен в виде множества сетевых компьютеров или же одного или нескольких виртуальных серверов, работающих на одном или нескольких физических компьютеров (например, на облачном сервисе).
[112] На Фиг. 16 показано пользовательское событие 411, связанное с пользователем 310. Конкретнее, в момент времени 421 (2 сентября 18:51) пользователь 310 задает вопрос: "Какой последний фильм с Дженнифер Лопез?" умному личному помощнику, работающему на смартфоне 312 Первое хэширование 331 выполняется на сервере 330 для определения входного вектора 431, соответствующего событию 411.
[113] На Фиг. 17 показано другое пользовательское событие 412, связанное с пользователем 310. Конкретнее, в момент времени 422 (8 сентября 22:06) смартфон 213 пользователя 310 находится в ресторане "Super Star Chinese", географические координаты которого получены в соответствии с GPS-сигналом 316 от GPS-спутника 340 и переданы серверу 330. Затем сервер 330 выполняет второе хэширование 332 для определения входного вектора 432, соответствующего событию 412.
[114] При этом операция хэширования представляет собой разновидность преобразования, но не ограничивая преобразование только операцией хэширования. Настоящая операция указана в рамках настоящей заявки только как иллюстрация одного из вариантов осуществления. Другие варианты осуществления настоящего решения могут предполагать использование иных операций, например, тождественного преобразования (без преобразования, что актуально для таких данных как геолокационные данные, время и другие), с преобразованием предполагающим использование части входных данных и другие варианты. Кроме того, само хэширование может осуществляться различными способами, в частности может применяться хэширование, основанное на делении, хэширование строк переменной длины, хэширование по мультипликативной схеме, идеальное хэширование, универсальное хэширование и другое.
[115] На Фиг. 18 представлен способ перевода входных векторов 431-432 в соответствующие выходные векторы 441-442 в первом многомерном пространстве 440 (не показано), выполняемого сервером 330 с помощью первой нейронной сети 3331 и второй нейронной сети 3332 первого модуля 333 векторного перевода сервера 330; затем объединения выходных векторов 441 и 442 для создания входного вектора 451 с помощью модуля 334 векторной агрегации сервера 330 (аналогично способу объединения векторов, описанному выше по отношению к фазе настройки); и, наконец, перевода входного вектора 451 в выходной вектор 461 второго многомерного пространства 460 (показано на Фиг. 24) с помощью третьей нейронной сети 3351 второго модуля 335 векторного перевода сервера 330. Созданный таким образом выходной вектор 461, соответственно представляет поведение пользователя 310, включая в себя введение запроса о Дженнифер Лопез, и присутствие в ресторане "Super Star Chinese".
[116] На Фиг. 19 модуль 338 идентификации интереса сервера 330 анализирует выходной вектор 461. Модуль 338 идентификации интереса может включать в себя выученные функции (с помощью различных способов машинного обучения, известных в данной области техники) для определения интересов пользователя, например, пользователя 310, на основе анализа одного или нескольких выходных векторов в первом многомерном пространстве 440 и/или вторым многомерном пространстве 460, эти выходные векторы были переведены из входных векторов, соответствующих пользовательским событиям, с помощью модулей 333, 335 векторного перевода сервера 330. Как показано на Фиг. 19, результатом анализа, выполненного модулем 338 идентификации интереса, может быть список 490 приблизительных интересов пользователя 310.
[117] На Фиг. 20 изображен переход пользователя 310 на веб-страницу 500 новостей ВВС. Как часть предоставления веб-страницы 500, веб-сервер ВВС, обрабатывающий веб-страницу 500, может получать идентификатор от пользователя и связывать его с сервером 330. Сервер 330 может предоставлять веб-серверу ВВС список 490 приблизительных интересов пользователя 310. На основе приблизительных интересов 490 пользователя 310 веб-сервер ВВС может выбирать новостные статьи 511, 512 и 513 как наиболее релевантные новостные статьи для пользователя 310. Веб-сервер ВВС далее может определять, что гиперссылки на новостные статьи необходимо предоставить в порядке, показанном на Фиг. 20, т.е. гиперссылка на новостную статью 511 будет отображена до гиперссылки на новостную статью 512, а гиперссылка на новостную статью 512 будет отображена до гиперссылки на новостную статью 513. Предыдущее поведение пользователя 310, которое представлено в выходном векторе 461 и интерпретировано модулем 338 идентификации интересов, таким образом, повлияло на содержимое и порядок новостной веб-страницы 50 ВВС. Как показано на Фиг. 20, пользователь 310 выбирает гиперссылку на новостную статью 513 (показан курсор 502).
[118] На Фиг. 21 показано пользовательское событие 413, связанное с пользователем 320, отличным от пользователя 310, в котором пользователь 320 задает вопрос: "Сколько лет Дженнифер Лопез?" умному личному помощнику, работающему на его смартфоне 322 в момент времени 423 (7 сентября 15:12). Первое хэширование 331 выполняется на сервере 330 для определения входного вектора 433, соответствующего пользовательскому событию 413.
[119] На Фиг. 22 представлено другое пользовательское событие 414, связанное с пользователем 320, в котором смартфон 322 пользователя 320 находится в ресторане "Super Star Chinese" в момент времени 424 (12 сентября 19:15) в соответствии с GPS-сигналом 326, полученном от GPS-спутника 340. Затем сервер 330 выполняет второе хэширование 332 для определения входного вектора 434, соответствующего пользовательскому событию 414.
[120] На Фиг. 23 представлен принцип процесса перевода входных векторов 433-434 в соответствующие выходные векторы 443-444 в первом многомерном пространстве 440 (не показано), выполняемого сервером 330 с помощью первой нейронной сети 3331 и второй нейронной сети 3332 первого модуля 333 векторного перевода; затем объединения выходных векторов 443 и 444 для создания входного вектора 452 с помощью модуля 334 векторной агрегации; и, наконец, перевода входного вектора 452 в выходной вектор 462 второго многомерного пространства 460 (показано на Фиг. 24) с помощью третьей нейронной сети 3351 второго модуля 335 векторного перевода. Созданный таким образом выходной вектор 462, соответственно представляет поведение пользователя 320, включая в себя введение запроса о Дженнифер Лопез, и присутствие в ресторане "Super Star Chinese".
[121] Поскольку поведения пользователей 310 и 320 схожи - оба вводили запрос о Дженнифер Лопез, и оба находились в ресторане "Super Star Chinese", то полученные выходные векторы 461 и 462, созданные модулями 333 и 335 векторного перевода, могут быть расположены рядом друг с другом во втором многомерном пространстве 460, что показано на Фиг. 24. Также показано, что во втором многомерном пространстве 460 находится несколько выходных векторов, которые были переведены во второе многомерное пространство 460, но которые не основаны на пользовательских событиях, сходных с пользовательскими событиями 411 и 414, из которых были получены в выходные векторы 461 и 462, и, соответственно, они не находятся близко к выходным векторам 461 и 462 во втором многомерном пространстве 460.
[122] Поскольку выходной вектор 461, указывающий на поведение пользователя 310, находится возле выходного вектора 462, указывающего на поведение пользователя 330, сервер 330 может устанавливать связь между пользователем 320 и пользователем 310. Эта связь между пользователем 320 и пользователем 310 может быть использовано для направления пользователю 320 сообщение, которое было показано пользователю 310. Например, пользователь 310 выбрал гиперссылку на новостную статью 513, когда ему были показаны гиперссылки на различные новостные статьи 511-513, далее, когда пользователь 320 посещает новостную веб-страницу 500 ВВС, ссылка на новостную статью 513 может быть отображена над ссылками на новостные статьи 511 и 512. Аналогичным образом, схожесть выходных векторов, соответствующих поведению пользователей 310 и 320, может способствовать установлению связи между этими пользователями таким образом, например, что известный интерес для одного пользователя может считаться приблизительным интересом для другого пользователя. Кроме того, в других вариантах осуществления технологии (не показаны) пользователь может быть связан не с одиночных другим пользователем, а с группой пользователей, и известный интерес для этой группы пользователей (например, демографической группы профессионалов в возрасте 25-34 года) может быть использован для того, чтобы определить сообщение, которое будет предоставлено пользователю.
[123] На Фиг. 26 представлена блок-схема способа варианта 600 осуществления настоящей технологии, что может выполняться сервером 330, представленном на Фиг. 15 (как описано выше), или любым другим вычислительном устройстве, который может собирать информацию о пользовательских событиях, связанных с одним или несколькими пользователями. На этапе 610 определяются первый входной вектор (например, входной вектор 431), соответствующий первому пользовательскому событию (например, пользовательскому событию 411) и второй входной вектор (например, входной вектор 432), соответствующий второму пользовательскому событию (например, пользовательскому событию 412). На этапе 620 первый входной вектор 431 переводится в первый выходной вектор 441 в первом многомерном пространстве 440, а второй входной вектор 432 переводится во второй выходной вектор 442 в первом многомерном пространстве 440 с помощью первого модуля 333 векторного перевода, который настроен на перевод первых входных векторов (например, 231-236) в первые выходные векторы (например, 241-246) в первом многомерном пространстве таким образом, чтобы соответствующее расстояние, отделяющее каждый из выходных векторов друг от друга, коррелировало с временным интервалом между моментом времени, связанном с соответствующим первыми входными векторами, которые были переведены в соответствующие первые выходные векторы, и моментом времени, связанном с соответствующим другими первыми входными векторами, которые были переведены в соответствующие другие первые выходные векторы. На этапе 630 третий входной вектор (например, входной вектор 451) определяется на основе, по меньшей мере, частично, первого выходного вектора 441 и второго выходного вектора 442. На этапе 640 третий входной вектор 451 переводится в третий выходной вектор 4671 во втором многомерном пространстве 460, а второй модуль 335 векторного перевода, который настроен на перевод вторых входных векторов (например, 251-253) во вторых выходные векторы (например, 261-263) во втором многомерном пространстве таким образом, чтобы соответствующее расстояние, отделяющее каждый из выходных векторов друг от друга, коррелировало с временным интервалом между моментом времени, связанном с соответствующим вторыми входными векторами, которые были переведены в соответствующие вторые выходные векторы, и моментом времени, связанном с соответствующим другими вторыми входными векторами, которые были переведены в соответствующие другие вторые выходные векторы. На этапе 650 определяется сообщение, которое будет предоставлено пользователю, на основе, по меньшей мере, частично, анализа по меньшей мере одного из: первого выходного вектора и третьего выходного вектора. На этапе 660 устройство вывода (например, дисплей, отображающий новостную веб-страницу 500 ВВС) предоставляет сообщение (содержимое веб-страницы включает в себя ранжирование гиперссылок на новостные статьи) пользователю.
[124] Модификации и улучшения вышеописанных вариантов осуществления будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящего изобретения ограничен только объемом прилагаемой формулы изобретения.
Изобретение относится к области выполняемых на компьютере способов оценки интересов пользователя. В способе предоставления пользователю сообщения посредством электронного устройства, имеющего устройство вывода, определяют первый входной вектор, соответствующий первому пользовательскому событию, и второй входной вектор, соответствующий второму пользовательскому событию. Переводят первый и второй векторы в первый и второй выходные векторы в первом многомерном пространстве с помощью первого модуля векторного перевода. Определяют третий входной вектор на основе первого и второго выходных векторов. Переводят третий вектор в третий выходной вектор во втором многомерном пространстве с помощью второго модуля векторного перевода. Определяют сообщение, которое будет предоставлено пользователю, на основе анализа первого выходного вектора или третьего выходного вектора. Инициируют предоставление устройством вывода сообщения для пользователя. 2 н. и 36 з.п. ф-лы, 26 ил.
Предоставление пользователю специальной информации на основании идентификации тренда