Как стать автором
Обновить

Карма, основанная на кластерах

Время на прочтение4 мин
Количество просмотров2.1K

По мотивам статьи Кармическое проклятье Хабра и десятков подобных. Здесь предлагается почелленджить идею, как можно сделать лучше. Есть куча алгоритмов ранжирования контента, среди пользователей Хабра лучшие умы России, предлагаю обсудить этот вопрос и придумать решение. Затравку для обсуждения я дам, а дальше в комментариях доработаем. Погнали!

Очевидно, что пользователи не одинаковы и контент не одинаков. Возьмём простой пример из мира JavaScript: есть сторонники ООП и есть сторонники ФП, эти парадигмы считаются конфликтующими. В среднем сторонники каждой парадигмы лайкают статьи своей школы и дизлайкают статьи противоположной. Подобные холивары происходят не только с ООП и ФП: React vs Angular, Java vs C#, Python vs R, Windows vs Linux vs Mac, и так далее. Это очень распространённое явление. Формируем задачу:

Можно ли сделать такую систему ранжирования, чтобы пользователям показывались статьи их школы, которые они больше лайкают, и не показывались те, которые они дизлайкают?

В идеале должна возникнуть ситуация, когда исходя из оценок и схожести интересов пользователи принадлежат каким-то кластерам. Сторонники ООП имеют свой рейтинг, сторонники ФП - свой. Конечно кластеры должны не создаваться модераторами, а высчитываться динамически, так как с каждой новой технологией, новой идеей будут появляться новые кластеры и со временем исчезать старые. В результате будет два важных следствия:

  • каждому пользователю показывается интересный ему контент. Адептам парадигм и фреймворков - соответствующие их убеждениям, докторам наук - написанный для докторов наук, школьникам - адаптированный для школьников, исходя из уровня читателя. Мне например во многих статьях не хватает глубины, хочется чтобы показывалось больше вдумчивых статей, но я понимаю, что среднему читателю приятнее читать что-то верхнеуровневое, нужно дать возможность разным людям потреблять контент исходя их своих потребностей.

  • лайк-дизлайк не разрушает карму, а просто переносит статью в другой кластер. Все м..даки попадут в кластер с такими же, сторонники какой-то редкой технологии будут в первую очередь получать статьи по своей зоне интересов. Даже от ботов и накруток не нужно будет защищаться, просто боты попадут в кластер с ботами и раскрученные ботами статьи будут показываться только таким же ботам.

Как это можно сделать? Вопрос открытый. Я вижу два варианта: кластеризация пользователь-пользователь и кластеризация пользователь-контент.

Первый механизм похож на личную репутацию: я лайкнул какого-то пользователя, значит я считаю его интересным, его контент показывается в приоритетно. Так же можно подумать над показом контента пользователей, которых он лайкнул, к каким-то коэффициентом, или даже пользователей, который его лайкнули, с защитой от лайк-спама. Таким образом естественно и не очень дорого сформируются кластеры по интересам. Кроме того, можно будет даже вывести некоторый персональный рейтинг одного пользователя по отношению к другому, или рейтинг пользователя среди 10% самых близких к нему по духу пользователей Хабра. Преимущество такой системы в том, что сильно усложняются репрессии несогласных с доминирующей концепцией пользователей. Можно писать что угодно и если есть такие-же чокнутые, которым это интересно - ваша карма в безопасности. Существенный плюс такого механизма в масштабируемости. Я докажу, что текущая система кармы не масштабируема: допустим, что сейчас достаточно много статей на Хабре на тему паттернов проектирования, кому-то это более интересно, кому-то менее, но все понимают что это такое и статьи получают свое заслуженное место в рейтинге. Представим, что мы захотели демократизировать Хабр и привлечь людей всех профессий, и врачей, и юристов, и поваров, и шахтёров. Как будет воспринята в такой среде статья про паттерны проектирования? Она получит кучу минусов, потому что она большинству не интересна. Тоже самое происходит с со статьями про узкие нишевые технолигии сейчас, есть ограниченный набор тегов, которые не расширяются, и глобальный список лучшего за день или неделю, куда попадают самые статьи на самые попсовые темы. Если ввести хотя бы кластеризацию по сходству пользователей - мы увидим совсем другой Хабр.

Второй механизм, во многом классический, кластеризация пользователя и контента. Показ контента, который лайкнули пользователи, похожие на вас. Похожесть определяется сходством профиля лайков. Если одни пользователи лайкают только собачек React, а другие - только кошечек Angular, то мы делим их на кластеры, и когда следующий раз собачник что-то лайкнет - мы скорее покажем это другому собачнику, чем кошатнику. Похожий подход реализован в социальных сетях, в Яндекс Дзен, ранее был Имхонет и другие сервисы. Кажется это не очень сложно реализовать в коде, и за последние годы знания науки об алгоритмах персонификации контента ушли далеко вперёд.

Такой подход не исключает глобальный рейтинг и рейтинг по тегам/хабам. Просто появится ещё один способ, как вылавливать интересное из хаоса. А самое главное - можно будет не бояться говорить не популярные вещи, баниться будет только самое маргинальное, а адекватное, но принадлежащее другой школе, будет просто менять веса рекомендательной машины. Можно полностью отменить запрет на публикации и комментарии пользователей с "отрицательной кармой", но показывать их только схожим пользователям, которые такие публикации и комментарии ценят.

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

P.S.: Делитесь статьёй с друзьями если считаете, что проблема живая и нужно какое-то решение.

UPD: Тут предложили ещё одну хорошую идею. Проблема кармы в отсутствие баланса. Минусуют карму часто, плюсуют по значимым поводам. Нужно стимулировать пользователей которые минусуют, пропорционально плюсовать кому либо. Можно добавить к счётчитику кармы счётчик "кармомёт" — баланс между тем как чел плюсует и минусует кармы людям — будет видно чего он и сам стоит. То есть есть гипотеза, что проблема кармы не в разных мнениях, а в том, что кто-то более токсичен, кто-то менее, и можно начать измерять и показывать это. В перспективе можно начать как-то ограничивать самых токсичных. Плюс этой идеи в том, что для неё практически не нужно ничего менять и можно дёшево внедрить на нынешнем Хабре

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как лучше ранжировать статьи?
32.14% Ничего не менять27
11.9% Кластеризация по пользователю10
33.33% Кластеризация по пользователю и контенту28
16.67% Другой вариант (в комментариях)14
21.43% Хочу посмотреть результаты18
Проголосовали 84 пользователя. Воздержались 23 пользователя.
Теги:
Хабы:
+9
Комментарии41

Публикации

Истории

Работа

Data Scientist
63 вакансии

Ближайшие события