Связанное облако тэгов

Добрый день, товарищи!

Я делаю небольшой студенческий проект со своим другом. Это сайт, конечная цель максимум – сделать из этого сайта интернет-СМИ. Пока же это просто небольшой сетевой журнал. Но это всё лирика.
Сейчас количество контента на сайте доросло до того уровня, когда стоит озаботиться грамотной системой тэгов, чтобы более мелко дробить имеющиеся рубрики и упростить поиск. Естественно простой маркировке контента меточками – грош цена, и сами тэги должны идти рука об руку с облаком тэгов. Но было бы не интересно просто копировать уже сделанное (например Flickr), поэтому я решил попробовать улучшить существующие идеи. Но найти интересные пример реализации облака тэгов мне не удалось. Кроме, пожалуй, вот этого. Прошу вас поделиться своим опытом, интересными примерами, ссылками на статьи по теме.

Для тех, кто не знаком с понятием графов. Представьте себе несколько точек на бумаге. Каждая точка называется узлом или нодом(англ. Node — узел). Совокупность точек можно назвать несвязным графом. Теперь соединим несколько точек линиями. Каждая линия называется ребром. Теперь, поставим конец ручки в произвольную точку, если можно по рёбрам пройти в любую другую – граф полносвязный, иначе он частично-связанный. Теперь если присвоить каждому ребру число – граф будет взвешенный. Вот так кратко.

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

То есть то, что мы получили – это несвязный граф. На мой взгляд, основным недостатком этой структуры является отсутствие связей, так как тэг весит в воздухе, и непонятно как сильно он связан с другими тэгами. А нам бы хотелось узнать как, например, тэг «хип-хоп» связан с тэгом «музыка», мы бы тогда смогли создать для тэга «хип-хоп» контекст из похожих тэгов, и дать пользователю почитать что-нибудь ещё и на эти темы, например, выдать список исполнителей в жанре «хип-хоп». Но для этого нам нужен взвешенный неориентированный и хотя бы частично-связный граф.

Основное неудобство облака тэгов в классическом исполнении – это слишком большой его объём. Пользователь не в состоянии охватить такое количество информации, поэтому выделяет лишь самые «весомые» узлы, пропуская всё остальное.

Моя идея проста. Каждую статью можно маркировать несколькими тэгами. Пускай это будет «рок», «музыка», «Beatles». У нас в базе скорее всего все эти 3 тэга уже есть, поэтому как только страница маркируется таким образом, мы добавляем единичку к весу рёбер графа между узлами «музыка»-«рок», «музыка»-«Beatles», «Beatles»-«Рок».

В итоге мы получаем структуру, которая хранит в себе не только информационный контекст тэга, но и контекст из других тэгов. То есть, предположим, мы находимся на странице статьи, которая помечена одним тэгом – «Beatles». Справа у нас находится облако тэгов, но в нём находится информация не о всех тэгах на сайте, а только о тех, которые встречаются в паре с «Beatles», при этом размер каждого элемента в облаке определяется тем, насколько часто он встречаются вместе с «Beatles».

В результате, мы фильтруем информацию и показываем пользователю, не только то, что связано с текущим тэгом или тэгами. Мы показываем больше, показываем связь между темами.
Вот и всё, спасибо за внимание.


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.