[Техническое] Рейтинг - настоящее и будущее
Фиркрааг · А зачем этот регрессивный рейтинг вообще?
И почему у меня обычного рейтинга стало больше?
Карма, плюсики и минусики
Голосование в минус недоступно. Никому, даже админу.
Что делать с ботами? Пока что писать мне в телеграм. Возможно, еще кто-нибудь из уважаемых лиц нашего городка согласится взвалить на себя модераторские полномочия (с возможностью банить пользователей).
В будущем, возможно, я добавлю кнопку «пожаловаться на пользователя».
Обычный рейтинг
Обычный рейтинг пересчитан на основании голосов за ваши посты и комментарии.
При этом уничтожены оценки, сделанные людьми, решившими навсегда нас покинуть (с удалением всего своего контента). Я счел, что к контенту относятся не только посты и комментарии, но и все проставленные оценки.
Рейтинг равен [сумме голосов за топики] + 0.1 * [сумма голосов за комментарии].
Почему его стало больше (а у кого-то меньше)? Скорее всего ответ надо искать в преданьях старины глубокой — когда-то давно на имажинарии работал другой механизм начислений рейтинга, влияющий на карму и силу одновременно. Потом админ поставил плагин SimpleRating, убирающий силу и меняющий принцип начисления рейтинга. Нюанс в том, что движок ливстрита записывает рейтинг в три разных места:
1. В таблицу `ls_vote` записываются результаты голосований (в плюс, минус, воздержался) к разным сущностям (topic, comment, blog)
2. В таблицу `ls_topic` или `ls_comment` записывается текущий рейтинг топика или комментария (точнее, соотв. поле изменяется на единицу при обработке факта голосования)
3. В таблице `ls_user` одно из полей меняется на ±1 или ±0.1.
В итоге, рейтинг пользователей в таблице `ls_user` изменялся сначала по одним правилам, а потом по другим. Отсюда и расхождение.
Кроме того, несколько лет назад на сервер набегали анонимные минусосеры. Коммуниздий их выгнал, но пересчитал только рейтинги топиков. Суммарные рейтинги пользователей не менялись.
Регрессивный рейтинг
(правильно, конечно, регрессирующий)Эта штука, скажу честно, мне приснилась (и мучала меня всю ночь).
Вчера я задумался, а можно ли ввести какой-нибудь рейтинг, отражающий актуальную активность пользователя, а не его «вклад в ИНРИНРЯ» за всё время?
Очевидно, последняя активность пользователя должна влиять на рейтинг сильнее, чем активность три года назад. То есть пост, написанный в позапрошлом году, слабее влияет на рейтинг, чем пост, написаный вчера. Как?
Пока что, навскидку, используется следующая форумала:
$${R} = {R_t} * {1 \over 1 + MAX(0, Y — F_c)}$$
Где
R — добавка к рейтингу
Rt — реальный рейтинг топика
Y — сколько полных лет прошло с момента создания топика (0 — не более года назад)
Fc — количество добавлений этого топика в избранное
(Здесь используется кастомный рендер MathML, поэтому если вы видите что-то сломавшимся — ПКМ на картинке, select render -> SVG)
То есть пост, написанный в этом году дает +1 к рейтингу
Пост, написанный в прошлом году — + 1/2 к рейтингу
В позапрошлом — + 1/3 к рейтингу и так далее.
Важно: «пост, созданный в прошлом году» — это пост, созданный более чем 365 дней назад, то есть год считается астрономический, а не календарный.
Разумеется с течением времени окно «сегодняшнего года» двигается по временной шкале и пост, написанный в ноябре 2017 года через два месяца будет считаться прошлогодним.
Влияние количества добавлений поста в избранное сейчас прямое — пост, добавленный в избранное дважды и написанный 5 лет назад считается как написанный 3 года назад.
С этими коэффициентами можно (и, наверное, нужно) поиграться.
Важно: реальные рейтинги комментариев и постов остаются неизменными, пересчитывается только регрессивный рейтинг (занимает это меньше секунды и делаться будет раз в сутки)
Как-то так.
P.S. Тут я попытался применить свежепоставленный плагин для разметки математических формул, но он работает как-то странно. Поэтому красивая формула в тексте только одна.
57 комментариев
Считается ли добавление топика в избранное самим собой?
А то этот механизм скорее помогает находить записи, чем давать оценку. Мои топики лежат в моем собственном избранном для удобства поиска.
Ну… я подумаю, что можно сделать.
Это вообще или к какой-то части поста? Потому что я вижу попытку в математическую формулу, но не вижу картинок.
Но. Идея показывать актуальную «активность» пользователей мне тоже нравится. Вот ее можно сделать именно по той регрессивной формуле. И либо в профиле указывать, либо вывести в тот же сайдбар список самых активных. Впрочем на мой взгляд, это тоже, не столько полезно, сколько любопытно.
Но текущая формула для этого имхо не очень подходит, тк длительность протухания исчисляется годами (:
Лучше бы в комментах прикрутить счетчик плюсов и минусов вместо суммы, как в топике.
Рейтинги пересчитаны — и многие, сидевшие «в минусах» (Ангон, к примеру) — сейчас имеют положительный рейтинг. Как оно и должно было быть, на самом-то деле.
Почему?
Понимаете, механизм кармы — как механизм самомодерации сообщества — работает эффективно на площадках с большой аудиторией. Минимальный размер аудитории, по моей оценке, 100 человек.
Технически, она хорошо работала бы на хабре, если бы на хабре не было прямого голосования за карму пользователя.
На имажинарии этот механизм не работает. Нас пока что меньше 100.
Топики я минусую довольно редко, но когда начинается «бурная дискуссия» про то, кто здесь медвежья подстилка, а кто граф простой — хочется комментаторов несколько осадить.
Пусть минус к комментарию слабо влияет на рейтинг, психологически он всё равно значим.
Это интересная идея. Но я не уверен, что смогу реализовать это за разумное время.
Но я прямо таки вижу эти иконки :)
NSFW — оскорбительно
знак, запрещающий проезд — неверно
?WTF? — это неинтересно
А «неинтересно» и «неверно» — или дело вкуса и обычного минуса достаточно («ДнД — лучшая система в мире»), или в случае фактической ощибки («есть всего три редакции ДнД: 3, пасфайндер и некст») действительно требует развернутого комментария помимо общего дизлайка.
Возможно, когда-то, во времена Дориана, дам и кавалеров правила были.
При переезде на ливстрит их точно не появилось.
Все эти годы никаких правил не было.
Неделю назад, когда я поднял в фан-чате ролекона вопрос «А давайте напишем правила для имажинарии», я получил в ответ вой, нытьё, харассмент, оскорбления и крики о нарушении всех мыслимых и немыслимых свобод свободных ролевиков. И предупреждение от админа вдобавок.
Похоже, ряд граждан считают, что ролевая социальная сеть должна быть без правил совсем. Или уж точно без правил, которые могу ввести я ;-) Ну, тут стоит вспомнить первоапрельскую шутку от Коммуниздия, когда имажинария стала квазианонимной (все пользователи стали анонами и без аватарок).
Ну, а чем анонимусам двач не угодил? Там вполне можно жить без этих ваших оскорбляющих свободу правил.
Так вот, по поводу правил.
Я хочу взять за основу правила ФМРИ: rpg-world.org/index.php?action=pages
Тут вопрос то на самом деле сводится вот к чему:
А) на ресурсе механизм самомодерации
Б) на ресурсе работают модераторы
Я считаю, что ни тот, ни другой механизм по отдельности неэффективны.
а) есть тот, кто следит за их выполнением (и наказывает невыполнение)
б) уровень социального сознания настолько высок, что все соблюдают правила по умолчанию.
Like — Hugs — Informative — Insightful — Funny
Так что у поста получается 5 шкал оценок. В общий рейтинг они как-то сводятся, но детали не смотрел.
У нас, с учётом специфики, можно сделать примерно так
Like — просто понравилось (круто).
Hugs — обнимашки — дай тебя пожалею.
Useful — информативно, полезно, наводит на идеи
Funny — смешно
Rude — грубо — мат, троллинг и прочее неджентльменское поведение
Debatable — НИСОГЛАСИН! — неправильный мир тьмы, ДНД-ДВ-ГУРПС и прочая вкусовщина.
Скрывать по умолчанию — комментарии где много Rude.