- PVSM.RU - https://www.pvsm.ru -
Когда система рекомендаций работает с большим количеством контента, основной задачей становится не фильтрация этого контента, а его ранжирование. Если говорить о новостях — каждый день выходят сотни тысяч статей, тысячи из которых могут затрагивать интересы каждого человека, читающего новости. Но в основном пользователи не читают больше 5-10 статей в день (по данным News360). Какие статьи показать первыми?
Ответ на этот вопрос в News360 ищут уже третий год. Мы нашли уже много разных ответов, но в этом году решили отказаться от концепции, которая была основной на протяжении всех предыдущих лет.
В статье простыми словами постараюсь рассказать о том, почему в News360 сначала несколько лет работали над реализацией и развитием системы кластеризации статей по событиям и ранжирования событий, а затем выбросили этот подход и решили реализовать другой. А также немного о том, как работает News360, что под капотом и где об этом почитать.

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

CNN показывает не персонализированную ленту, а набор самых важных и популярных новостей.

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

Главный экран News360 старается объединить все новости, которые могут меня заинтересовать. Это и самые важные мировые новости, и то, что мне может быть любопытно, и то, что напрямую относится к моим интересам.
Для решения этой задачи, новости, поступающие в систему из Интернета, анализируются на предмет выявления дополнительных сведений:
Для простоты именованные понятия, темы, рубрики и все остальные знания о статье мы называем тэгами статьи. В виде этих же тэгов News360 определяет интересы пользователя путем анализа статей, которые ему нравятся, или когда пользователь явно сообщает о своих интересах:

Для дальнейшей оптимизации ленты новостей, News360 группирует статьи из разных источников об одном и том же, чтобы в основной ленте пользователь не видел повторов, но, погрузившись в чтение истории, мог выбрать, с какой точкой зрения ему интересно ознакомиться. Такая кластеризация контента осуществляется специальным механизмом по алгоритму, близкому к методу Minimum Cut Trees [6], основанному на графах.

Граф статей News360, кластеры выделены цветом.
В результате работы механизма кластеризации, каждый кластер не просто включает в себя близкие по смыслу статьи, а представляет собой набор статей из разных источников об одном и том же событии. Эти события News360 показывает пользователю вместо статей для того, чтобы решить задачу скрытия повторов в ленте новостей пользователя и иметь возможность учитывать резонансность события в ранжировании.
На основе атрибутов статей, попавших в кластер, для него рассчитываются его атрибуты. Например, наиболее свежая статья, часто встречающиеся тэги, а так же уникальный атрибут — резонансность события, который показывает, насколько активно обсуждается это событие в мире.
Кластеры используются в News360 как базовые единицы информации, то есть именно их система и рекомендует.
Когда пользователь читает статью, делится ей или лайкает, система старается выяснить, что из того, что известно об этой статье, больше нравится пользователю. Таким образом, система обучается для каждого пользователя, формируя его «портрет» и использует этот портрет для того, чтобы выбирать наиболее, на ее взгляд, интересные пользователю новости. Например, мой портрет выглядит примерно так (длинный хвост из редких тэгов я убрал для удобства чтения):
| Cloud Computing | 0.95 |
| William Gates III | 0.72 |
| Steve Jobs | 0.62 |
| Microsoft | 0.44 |
| Music | 0.40 |
| IBM | 0.24 |
| Startups | 0.18 |
| Richard Branson | 0.17 |
| Business | 0.17 |
| Small Business | 0.16 |
| Entertainment | 0.16 |
Вес — это уверенность системы в том, что тематика Cloud Computing будет мне интересна. Этот вес вычисляется на основе того, насколько активно пользователь «взаимодействует» с определенной тематикой. Например, читая статьи о Cloud Computing, я повышаю вес этой тематики у себя в профиле.
Основываясь на портрете, система берет актуальные кластеры информации, и решает, какие из них мне показать.
Все три истории рассказывают об облачных технологиях, а значит, в соответствии с моим портретом, они могут быть мне интересны. Таким образом, процесс персонализации контента можно представить вот так:

То есть система фильтрует контент по интересам пользователей.
Такой подход позволяет избавить пользователя от не интересных ему новостей, но при современном изобилии контента не гарантирует, что пользователь узнает все самое важное, что происходит в интересных ему областях, т.е. не решает проблему перегруженности информацией.
С введением понятия «важность новости для пользователя» мы вводим сравнительную характеристику (т.е. одни новости могут быть более важными для пользователя, другие — менее), что приводит к необходимости ранжировать новости в соответствии с этой характеристикой индивидуально для каждого пользователя.
Подобная техника называется «рекомендации на основе контента» [7] и широко используется различными продуктами, такими как система рекомендаций imdb.com.
Для каждого документа выявляется набор атрибутов, каждый из которых взвешивается относительно пользователя, определяя, насколько новость может быть важна для этого пользователя. Для примера в этой статье попробуем использовать такие параметры:
В момент, когда я обращаюсь к системе за новостями, известная обо мне информация (мой «портрет») используется как параметры запроса к системе, как это описано, например, в статье «Fab: Content-based, collaborative recommendation» [8]. Так параметры статей и информация о пользователе используются для ранжирования новостей.
Попробуем сделать это на наших данных (для примера допустим, что мы выполняем ранжирование 20-го июня 2013 года):
Для простоты баллы я посчитал, отсортировав новости по каждому из параметров, и назначил 2 за первое место, 0 за третье и 1 за все остальное.
Итого, получаем новости, ранжированные следующим образом:
Здесь мы ранжировали кластеры (= истории = события). При ранжировании кластеров рождается три неоспоримых преимущества:
Но у данного подхода есть проблема, которая привела нас к тому, чтобы уйти от ранжирования кластеров и начать ранжировать статьи поодиночке. Проблема заключается в том, что многие из выбранных нами атрибутов кластера невозможно сопоставить с интересами пользователя.
Например, если в кластере пять статей, то резонансность кластера берется за 5, но это не значит, что все пять статей интересны пользователю. То есть, при ранжировании конкретного кластера для конкретного пользователя в каждом параметре надо учитывать все интересы пользователя. В данном случае, вычислять резонансность по количеству статей кластера, интересных пользователю (упоминающих интересы пользователя), а не по общему количеству статей кластера.
То же касается и свежести кластера, и выбора главной статьи кластера (т.е. что из этого кластера показывать пользователю на «обложке» кластера).
В то же время пользователю нужно показывать именно истории (кластеры), а не статьи. Во-первых, потому что пользователь не хочет в своей ленте видеть несколько разных статей об одном и том же, даже если они опубликованы в разных источниках; во-вторых, потому что для ранжирования нам обязательно нужен такой параметр, как резонансность события.
Так мы пришли к системе, в которой ранжируются статьи, но при этом учитывается резонансность событий, а пользователю показываются истории.
Попробуем взять все статьи, указанные на графе выше:
| Does This Mean the CIA Might Soon Have Access to Your Amazon Wish List? | Time | CIA, Amazon | 18.06.2013 |
| Amazon, IBM wrangle over CIA spying cloud contract | The Australian | IBM, CIA, Amazon | 18.06.2013 |
| Report: The CIA Picked Amazon To Build Its Cloud | Finding Out About | CIA, Cloud Computing | 18.06.2013 |
| Government IT Spending Globally To Decline | SiliconIndia | Gartner, India | 19.06.2013 |
| Forecast: Global state agencies spend on Information Technology (IT) this year | YoPakistan | Pakistan | 19.06.2013 |
| CIA faulted for choosing Amazon over IBM | Physorg.com | IBM, CIA, Amazon | 18.06.2013 |
| Report: The CIA Picked Amazon To Build Its Cloud | Business Insider | CIA, Amazon, Cloud Computing | 18.06.2013 |
| What I Use: Office 365 and SkyDrive Pro | Winsupersite | Office 365, SkyDrive, Cloud Computing, Gadgets | 20.06.2013 |
| Global IT Spend Projected to Increase | The Strategic Sourceror | Gartner, World News | 19.06.2013 |
| Mobile and cloud top governments' tech shopping lists | Tech Republic | Gartner, Cloud Computing, World News | 19.06.2013 |
И выбрать из них те, которые подходят пользователю (фильтрация):
| Amazon, IBM wrangle over CIA spying cloud contract | The Australian | IBM (0.24) | 18.06.2013 |
| Report: The CIA Picked Amazon To Build Its Cloud | Finding Out About | Cloud Computing (0.95) | 18.06.2013 |
| CIA faulted for choosing Amazon over IBM | Physorg.com | IBM (0.24) | 18.06.2013 |
| Report: The CIA Picked Amazon To Build Its Cloud | Business Insider | Cloud Computing (0.95) | 18.06.2013 |
| What I Use: Office 365 and SkyDrive Pro | Winsupersite | Cloud Computing (0.95) | 20.06.2013 |
| Mobile and cloud top governments' tech shopping lists | Tech Republic | Cloud Computing (0.95) | 19.06.2013 |
Теперь отсортируем статьи по сумме баллов, посчитанных так же, как выше мы рассчитывали веса кластеров (в скобках указаны баллы по каждому параметру, в последнем столбце — сумма баллов). В этом случае в качестве резонансности мы учтем количество интересных пользователю статей в кластере, а не общее количество статей в кластере:
| What I Use: Office 365 and SkyDrive Pro | Winsupersite | Cloud Computing (0.95) (2) | 20.06.2013 (2) | 1 (0) | 4 |
| Report: The CIA Picked Amazon To Build Its Cloud | Finding Out About | Cloud Computing (0.95) (2) | 18.06.2013 (0) | 4 (2) | 4 |
| Report: The CIA Picked Amazon To Build Its Cloud | Business Insider | Cloud Computing (0.95) (2) | 18.06.2013 (0) | 4 (2) | 4 |
| Mobile and cloud top governments' tech shopping lists | Tech Republic | Cloud Computing (0.95) (2) | 19.06.2013 (1) | 1 (0) | 3 |
| Amazon, IBM wrangle over CIA spying cloud contract | The Australian | IBM (0.24) (0) | 18.06.2013 (0) | 4 (2) | 2 |
| CIA faulted for choosing Amazon over IBM | Physorg.com | IBM (0.24) (0) | 18.06.2013 (0) | 4 (2) | 2 |
На последнем этапе сгруппируем выдачу по кластерам (в соответствии с графом на рисунке выше), взяв первую статью каждого кластера, и спрятав остальные:
Этот результат больше похож на то, что мне интересно.
Кроме использования весов тэгов из портрета пользователя, система также может взвешивать параметры статьи по-разному относительно разных тэгов. Параметры — это дата статьи, количество источников, количество текстовой информации, индекс влиятельности в социальных сетях и другие подобные атрибуты статей. Например, мало текстовой информации в аналитических статьях для тега Politics — это плохо. Однако точно такое же количество информации для фотоблога — это допустимо. Таким образом, одна и та же статья будет обладать разными весами для разных тегов. После нормирования с помощью разработанной в News360 функции ранжирования эти параметры агрегируются в вес статьи относительно тега.
Рассмотрев портрет пользователя как желание видеть тот или иной тег у статьи, мы агрегируем веса статьи в тех тегах, которые есть у пользователя в портрете, таким образом получив окончательный общий вес статьи относительно пользователя.
Итоговый механизм позволяет ранжировать истории используя любой набор следующих признаков:
А так же, предоставляет широкие возможности выбора варианта представления ленты пользователю:
Эта система ранжирования в настоящее время проходит тестовую эксплуатацию внутри News360, но уже начата разработка следующего обновления системы, которое включает в себя такие вещи, как использование в ранжировании коллаборативных знаний о новостях (насколько статья нравится всем пользователям в целом или пользователям, похожим на текущего), рекомендации по добавлению в профиль того или иного интереса, автоматическую адаптацию алгоритма рекомендаций для конкретного пользователя на основе итеративного процесса тестирования и оценки эффективности работы разных алгоритмов для этого пользователя.
Ссылки:
Автор: saynurin
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/data-mining/41958
Ссылки в тексте:
[1] именованные понятия: http://en.wikipedia.org/wiki/Named-entity_recognition
[2] «Named Entity Recognition: A LocalGrammar-based Approach»: http://www.scribd.com/doc/13455590/Named-Entity-Recognition-A-Local-Grammarbased-Approach
[3] libsvm: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
[4] Oracle Rule Based Classificaiton: http://docs.oracle.com/cd/B28359_01/text.111/b28303/classify.htm
[5] «A Comparison of Classification Techniques for Technical Text Passages»: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.149.2319
[6] Minimum Cut Trees: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.6592
[7] «рекомендации на основе контента»: http://en.wikipedia.org/wiki/Recommender_system#Content-based_filtering
[8] «Fab: Content-based, collaborative recommendation»: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.108.4092
[9] citeseer.ist.psu.edu: http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.1189
[10] Источник: http://habrahabr.ru/post/191528/
Нажмите здесь для печати.