Разработка рекомендательной системы на основе данных из профиля социальной сети "ВКонтакте"

Автор: Авхадеев Булат Ринатович, Воронова Лилия Ивановн, Охапкина Елена Павловна

Журнал: Вестник Нижневартовского государственного университета @vestnik-nvsu

Статья в выпуске: 3, 2014 года.

Бесплатный доступ

В статье рассматривается проблема автоматизации процесса веб-сёрфинга и фильтрации контента. Автоматизация процесса веб-сёрфинга с фильтрацией отображаемого контента на основе онтологий конкретных предметных областей - весьма интересная и нетривиальная задача, которая решается в рамках направления, связанного с разработкой рекомендательных систем (РС). В статье описано проектирование и реализация мультиагентной рекомендательной системы «EZSurf», обеспечивающей анализ интересов и предоставление рекомендаций пользователям социальной сети «ВКонтакте» на основе данных из профиля конкретного пользователя. Проанализированы методы, технологические решения, продукты-аналоги, связанные с проблемой фильтрации контента, и сформулированы требования к системе. Рекомендательная система «EZSurf» автоматизирует процесс веб-сёрфинга и фильтрации контента, используя профиль пользователя в конкретной социальной сети для сбора данных и API сторонних сервисов (LastFM, TheMovieDB) для получения сведений о схожих объектах...

Еще

Мультиагентная, рекомендательная система, система, фильтрация содержимого, социальные сети, рекомендательный контент, веб-сёрфинг

Короткий адрес: https://sciup.org/14116843

IDR: 14116843

Текст научной статьи Разработка рекомендательной системы на основе данных из профиля социальной сети "ВКонтакте"

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

Автоматизация процесса веб-сёрфинга с фильтрацией контента от неподходящей информации — весьма интересная и нетривиальная задача, которая решается с помощью рекомендательных систем (РС).

Нет

Рис. 1. Процесс веб-сёрфинга

Рекомендательные системы (РС) — новое направление информационных технологий, связанное с выявлением предпочтений пользователей.

РС — программы, которые пытаются предсказать, какие объекты (фильмы, музыка, книги, новости, товары, веб-сайты) будут интересны пользователю, имея определенную информацию о его профиле.

Существует несколько основных алгоритмов РС:

  • -    Коллаборативная фильтрация — метод построения рекомендательных систем, основанный на предположении о том, что пользователям со схожими оценками к предметам, просмотренным ранее, будет нравиться одно и то же в будущем. Группа пользователей, наиболее схожая по интересам с активным, называется «соседями» [5; 7].

  • -    Фильтрация содержимого — при данном подходе для каждого пользователя создается профиль в системе, который хранит историю его оценок объектам этой системы. Система выдает пользователю предметы, схожие с теми, которые ему понравились в прошлом [7].

  • -    Гибридные рекомендательные системы — строятся с использованием комбинации подходов, перечисленных выше. Такие системы направлены на то, чтобы компенсировать недостатки одного подхода внедрением другого [7].

Каждый из подходов обладает некоторыми недостатками, которые могут помешать при выполнении поставленной задачи. К примеру, рекомендательные системы, использующие метод коллаборативной фильтрации, зачастую сталкиваются с проблемой «холодного старта», ситуацией, когда в системе появляется новый пользователь и нет никакой информации о том, что ему нравится [8]. В частности, в социальной сети «ВКонтакте» ее политика ограничивает доступ к данным друзей пользователя, возникает сложность определения «соседей», что делает использование подхода коллаборативной фильтрации невозможным.

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

Главным аналогом является российский сервис Surfingbird с интегрированной рекомендательной системой, который занимается подборкой персонально интересных веб-страниц [9]. Таким образом, Surfingbird тоже подбирает контент на основе рекомендаций и автоматизирует процесс веб-сёрфинга, однако разница в том, что данный сервис использует для сбора данных опрос нового пользователя, чтобы избежать проблемы «холодного старта», и в дальнейшем опирается на оценки пользователя.

В социальной сети «ВКонтакте» есть встроенные рекомендации (рис. 2), но распространяются они только на музыку, и далеко не всем нравится, как этот сервис работает.

Q Pitbull FeaL Ke$ha -Timber

Suggested music

4:18 Скачать все

Скачать плейлист

Si 13

Popular music

320 kbps (a.os mb)

О Hacklemore & Ryan Lewis -Can't Hold Us [feat. Ray Dalton) 320kbps [9.96 MB)

  • □    Martin Garrix - Animals (Original Mix) - .

320 kbps (1226 MB)

D Katy Perry -Dark Horse (feat. Juicy J)

Рис. 2. Пример рекомендации музыкального контента «ВКонтакте»

Ниже приведены примеры интеграции рекомендательных систем в различные проекты:

  •    IMDb . com

Сайт IMDb.com — крупнейшая в мире база данных кинофильмов, сериалов и телешоу. Под каждым фильмом можно найти раздел «People who liked this also liked…», что значит, что эти фильмы рекомендуют вам на основании схожести ваших вкусов со вкусом других людей. Очевидно, что в данном сервисе используется коллаборативная фильтрация, основанная на принципе поиска «соседей».

  •    Amazon.com

Крупнейший интернет-сервис продажи товаров. Пройдя регистрацию и начав просматривать товары, пользователь заполняет историю активности своего профиля, затем под каждым товаром можно найти рекомендации по тому же принципу, что и у IMDb: «Customers Who Bought Items in Your Recent History Also Bought».

  •    Grooveshark

Музыкальный веб-сайт с потоковым мультимедиа и интегрированной рекомендательной системой, позволяющий пользователям искать, слушать, загружать и сохранять музыку бесплатно. Одной из особенностей сайта является его рекомендательный сервис, подбирающий песни, похожие на те, которые находятся в очереди воспроизведения у пользователя. Специальной иконкой (смайликом) можно сообщить сервису, была ли та или иная рекомендация удачной. В данном сервисе используется рекомендательная система, основанная на фильтрации содержимого [6].

По результатам анализа предметной области [3; 4] были сформулированы функциональные требования к РС «EZSurf»:

  • 1.    Система строится на основе мультиагентной архитектуры.

  • 2.    Авторизация в системе «EZSurf» происходит через социальную сеть «ВКонтакте».

  • 3.    РС не производит каких-либо действий до прохождения корректной авторизации.

  • 4.    При первом запуске РС «EZSurf» после успешной авторизации система должна потребовать разрешения пользователя на обработку данных с его страницы «ВКонтакте».

  • 5.    Система выполняет сбор аудио-, видеоданных, а также данных об интересах из профиля пользователя «ВКонтакте».

  • 6.    Система хранит собранные данные в базе данных.

  • 7.    Система производит ранжирование аудиоданных по количеству их встречаемости на странице «ВКонтакте».

  • 8.    Система находит аудио- и видеообъекты (рекомендации), схожие с теми, что были собраны из профиля «ВКонтакте», посредством обращения к сторонним базам и API (lastFM, IMDb).

  • 9.    Система производит индексацию веб-страниц для каждого сайта из реестра, созданного модератором.

  • 10.    Система производит поиск рекомендаций на проиндексированных страницах.

  • 11.    Система должна отображать конечный результат работы в виде рекомендации, содержащей заголовок, изображение и краткое описание статьи.

В мультиагентной архитектуре РС «EZSurf» выполнение функциональных задач распределяется между разными агентами.

  • 1)    Задача сбора информации.

Сборщик — агент, собирающий информацию из профиля пользователя сети «ВКонтакте». Это такая информация как статус, оценки «мне нравится», сообщества, аудиозаписи, видео, всё, что может помочь выявить интересы пользователя.

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

Анализатор — агент, осуществляющий анализ контента со страницы пользователя, определение предпочтений и формирование рекомендаций по содержанию контента.

  • 3)    Задача поиска и сбора рекомендуемого контента в сети Интернет для последующего предоставления пользователю.

Рекомендатель — агент, собирающий подходящий контент в сети Интернет, основываясь на рекомендациях для каждого конкретного пользователя.

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

Рис. 3. Архитектура системы «EZSurf»

Профиль «ВКонтакте» подразумевает все данные со страницы пользователя. Страница пользователя «ВКонтакте» содержит информацию разного рода: персональная информация, которую пользователь заполняет сам, список сообществ, подписок, который формируется в ходе активности на сайте ВКонтакте, медиа-контент (фото, аудио, видео).

Агент Сборщик , посредством вызова методов ВКонтакте API, получает ответ в формате JSON, откуда он вычленяет необходимую информацию. Например, в случае с аудиозаписями из запроса ВКонтакте API audio.get (рис. 4), Сборщик извлечет только тег artist , так как именно по артисту будут выдаваться рекомендации. Затем Сборщик заносит собранные данные в базу данных для дальнейшего анализа.

Когда Сборщик закончил сбор данных, он подает сигнал Анализатору. Агент Анализатор, в первую очередь, производит ранжирование по данным, собранным Сборщиком. Это позволит в дальнейшем расставить приоритеты для рекомендаций (более или менее интересные). Для ранжировки объектов по важности используется вариация метода количественного контент-анализа. В случае контент-анализа по количеству встречаемых слов в тексте определяется тематика, например, статьи в газете. По такому же принципу можно оценить, какой исполнитель интересует пользователя больше других по количеству песен каждого исполнителя в списке аудиозаписей из профиля социальной сети «ВКонтакте». После ранжирования Анализатор, путем обращения к сторонним базам, имеющим классификацию объектов (IMDb, lastFM), выявляет объекты, схожие с теми, что были собраны со страницы пользователя «ВКонтакте», которые будут являться критериями поиска реко- мендаций.

Рис. 5. Пример работы программы — PC «EZSurf»

Закончив определение предпочтений пользователя и выявив объекты для рекомендаций, Анализатор подает сигнал агенту Рекомендатель . Рекомендатель в свою очередь обращается к реестру сайтов, где он получает список сайтов, на которых может быть найден рекомендуемый контент. Реестр сайтов сократит масштаб поиска и индексирования множества лишних страниц. Рекомендатель индексирует каждый сайт из реестра и записывает список страниц каждого сайта в базу данных. Затем, имея список URL для поиска и объекты, которые могут заинтересовать активного пользователя, Рекомендатель собирает в Интернете контент и предоставляет его пользователю в виде, приведенном на рис. 5.

Для реализации системы «EZSurf» была использована среда разработки Netbeans IDE 8.0 и язык программирования Java. На рис. 6 представлена диаграмма классов системы «EZSurf». Для создания агентов использовалась сторонняя библиотека JADE (Java Agent Development Environment), каждый агент представлен отдельным классом, который наследует класс jade.core.agent.

Рис. 6. Диаграмма классов системы «EZSurf»

Все агенты инициализируются при запуске программы. Происходит вызов метода setup всех трех агентов. Дальнейшее взаимодействие происходит посредством обмена ACL сообщениями, где JADE создает очередь и управляет потоком ACL-сообщений [1].

Агент Сборщик, представленный классом Collector, в котором происходит сбор данных из профиля пользователя в социальной сети «ВКонтакте», также отвечает за создание окна приложения в методе setup, который вызывается при создании агента. После того как пользователь авторизуется «ВКонтакте» и нажмет кнопку «SURF», сработает обработчик событий actionPerformed в классе CollectorGuiAuth, в котором происходит вызов метода агента onGuiEvent, который в свою очередь производит вызов метода сбора данных (collectData). Перед тем как начать собирать новые данные, метод clearDBs удаляет данные из базы по текущему пользователю.

Метод сбора данных использует объект класса VKCommunication, содержащий методы вызова VK API для получения списков аудио-, видео- и персональной информации, в которых также происходит парсинг JSON ответов для получения нужных данных. В случае с аудио это исполнитель.

По окончании сбора данных происходит отправление ACL сообщения агенту Анализатору при помощи средств библиотеки JADE, класса ACL Message.

Агент Анализатор, представленный классом Analyzer на диаграмме классов (рис. 6), производит вызов методов API LastFM и TheMovieDB для сбора схожих объектов для аудио и видео соответственно. Затем Анализатор посылает ACL сообщение-сигнал Рекомендателю . На рис. 7 виден результат работы Анализатора , во второй колонке содержится информация об объекте, в третьей колонке — id объекта, для которого данный объект является схожим, и в четвертой колонке — тип объекта.

136

7cb02ce8e4c

Black" Sabbath

793481d6e4c611e391craba

audio

252880058

137

7cbclSa0e4c

White snake

7934Sld6e4c611e391cfaba

audio

252880058

13S

7cc5alzee4c

Die

793481d6e4c611e391cfaba

audio

252880058

139

7cd3f006e4c

Ian Gillan

7934Sld6e4c611e391cfaba

audio

252880058

140

7cdd7964e4c

Led Zeppelin

793481d6e4c611e391cfaba

audio

252880058

141

7ce96512e4c

Nazareth

793481d6e4c611e391czaba

audio

252880058

142

7cf2ee70e4c

UFO

793481d6e4c611e391cfaba

audio

252880058

143

7cfeda28e4c

Glenn Hughes

793481d6e4c611e391czaba

audio

252880058

144

7dQac5d6e4c

■deep purple

793481d6e4c611e391craba

audio

252880058

Рис. 7. Таблица recommendation

Получив сообщение о начале поиска, Рекомендатель (класс Recommender) — по сути, поисковый робот — производит индексацию каждого сайта из реестра, где реестр представляет собой таблицу базы данных, содержащую URL сайта и тип контента, который может быть найден на этом сайте (Рис. 8).

site_id [PK] charade site_url charader varying (255} type charader varying(50) 1 |ld8de54edec http://www, 2 2 37e38e0cdec 3 3 4efScb56e3t http://www, 2 4 51e06dbae3f 2 5 5c46d46ae3f 2 6 70407ae8e3f 2 7 76cade32dek http: / /www. afi sha .. ru/mevie s /movi e_l i st./ cinemas a on/ 2 В 8e7ffedee07 ,ru/msk/concerts/ 1 9 9329222edec http://www, 3 10 SebaedSedec 3 11 df5Q6efadec 3

12 f79bfad6e07 http: //www. afiaha. ru/mcvie3/mcvie_li3t/cinematoday/ 2

Рис. 8. Таблица registry

В таблице registry используется следующая зависимость (тип контента), позволяющая расшифровать значения поля type: 0 (Интересы), 1 (Музыка), 2 (Видео), 3 (Все типы).

Индексация страниц происходит в классе Crawler по следующему алгоритму: загрузить страницу с адресом pageURL; поместить адрес pageURL в список посещенных страниц; найти ссылки на загруженной странице с адресом pageURL; для каждой найденной ссылки, не находящейся в списке посещенных страниц, запустить процедуру из пункта 1 [7].

Алгоритм использует рекурсивный вызов, что означает большую трудоемкость и ре-сурсоемкость, которые можно понизить параллельным запуском алгоритма в разных потоках. Для управления заданиями и потоками использованы такие структуры данных как пул потоков — ThreadPoolExecutor и связанная блокирующая очередь — LinkedBlockingQueue [2] из стандартной библиотеки java.util, что также позволяет оптимизировать данный процесс. Если создано заданий больше, чем может пул потоков обработать одновременно, то задачи простаивают в этой очереди, и время их жизни задается в конструкторе пула потоков. В данном случае время жизни заданий составляет 5 минут. За хранение адресов уже посещенных страниц отвечает такая структура данных как hash map из той же библиотеки java.util.

В процессе каждая страница проверяется на наличие рекомендательного контента. Из таблицы recommendation в структуру данных List записывается колонка rec_info. В rec_info будет записано имя артиста, название видео или хобби, в случае, если в колонке type значение audio, video или hobby соответственно. Для каждого объекта в этом List, выявленного Анализатором как рекомендуемого, происходит поиск совпадений на странице. С помощью сторонних библиотек Jericho и jSoup происходит извлечение содержимого метатегов title, description и keywords. Если хотя бы в одном из метатегов присутствует вхождение искомой строки и хотя бы одно вхождение найдено в теле HTML страницы, т.е. внутри тега body, то страница принимается за рекомендуемую. Содержимое тегов title и description записывается в базу результатов как заголовок и описание статьи соответственно.

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

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

Список литературы Разработка рекомендательной системы на основе данных из профиля социальной сети "ВКонтакте"

  • Глибовец Н.Н. Использование JADE (Java Agent Development Environment) для разработки компьютерных систем поддержки дистанционного обучения агентного типа. URL: http://www.ebiblioteka.lt/resursai/ Uzsienio leidiniai/IEEE/Russian/2005/Nr 3/OTO_2005_3_04.pdf
  • Журавский В. Простой поисковый робот. URL: http://juravskiy.ru/?p=1005
  • Охапкина Е.П., Лукоянов И.А., Воронов В.И., Воронова Л.И. Разработка и внедрение поискового робота для анализа интересов клиентов // Студенческий научный форум: VI Международная студенческая электронная научная конференция (15 февраля - 31 марта 2014 года). URL: http://www.scienceforum.ru/2014/ 495/4758
  • Пестряев А.А., Воронова Л.И. Мультиагентная система. Взаимодействие агента-собирателя с базой данных // Студенческий научный форум: VI Международная студенческая электронная научная конференция (Электронный ресурс), 15 февраля - 31 марта 2014 года. URL: http://www.scienceforum.ru/2014/495/4036
  • Ekstrand M.D., Riedl J.T., Konstan J.A. Collaborative Filtering Recommender Systems // Retrieved January 26, 2014, from Social Computing Research at the University of Minnesota website. URL: http://files.grouplens.org/ papers/FnT CF Recsys Survey.pdf
  • Lane J. Musicians Find Fans At Grooveshark Artists. URL: http://blogcritics.org/musicians-find-fans-at-grooveshark-artists/
  • Ricci F., Rokach L., Shapira B. Introduction to Recommender Systems Handbook, Recommender Systems Handbook, Springer.
  • Sahebi S., Cohen W.W. Community-Based Recommendations: a Solution to the Cold Start Problem. URL: http://d-scholarship.pitt.edu/13328
  • Surfingbird. Официальный сайт компании. URL: http://surfingbird.ru/about REFERENCES
Еще
Статья научная