Здрасте здрасте, мои ненаглядные! Угадайте, что у меня есть для вас? Да это же ваша любимая теоретическая база! *Пипчанские яшперицы агрессивно шипят* Но-но! Полегче! Это скучно. Но это и важно.
Сегодня про анализ той информации, которую можно собирать и получать из постов. Так что не совсем только про рейтинг будет.
Итак, для начала надо определиться, какие параметры можно получить с опубликованного поста в процессе его существования. Я уже постарался, так что вот списочек:
Pg - PositiveGrades, количество плюсов
Ng - NegativeGrades, количество минусов
Us - UsersSeen, количество пользователей, видевших пост в ленте
Vс - ViewsComments, количество захождений в комментарии поста
Uvс - UsersViewedComments, количество пользователей, заходивших в комментарии поста
С - Comments, количество комментариев
Uc - UsersCommented, количество пользователей, оставивших комментарии
Напоминаю, что это список того, что можно получить, а не того, что получается. На данный момент скорее всего есть только Vс и С; даже количество плюсов и минусов сохраняется вряд ли, а только суммарное значение рейтинга.
Отдельно стоит заметить, что даже Vс и C - ужасно непоказательные параметры. Vс считается от количества заходов в комментарии, даже если это делает буквально один и тот же пользователь. Можете сами убедиться в этом, прожав "обновить страницу" несколько раз, когда вы зашли в комментарии к посту - количество просмотров будет повышаться на 1 с каждым обновлением страницы. Этот параметр отображается под пиктограммой в виде мишени возле поста.
С - по сути тоже не очень полезен, поскольку это количество комментариев как таковых, а не количество пользователей, участвующих в обсуждении поста. 10 комментариев от 10-и пользователей - это одно, а 10 комментариев от 2-х пользователей, закусившихся на каком-то вопросе и посылающих друг дружку куда подальше - это другое.
Теперь представим, что все означенные параметры из списка собираются. Какую информацию можно было бы получить на их основе?
Для начала самое очевидное:
R = Pg - Ng
где:
R - Rating, значение рейтинга поста
Pg - PositiveGrades, количество плюсов
Ng - NegativeGrades, количество минусов
И да, R - это буквально тот самый рейтинг поста, который есть сейчас. Его значение показательно: отражает, насколько сильно вверх или вниз тянет этот пост рейтинг пользователя, его опубликовавшего.
Далее можно рассчитать то, насколько пост не оставляет равнодушными пользователей:
W = (Pg + Ng) / Us
где:
W - Warmth, неравнодушие пользователей
Pg - PositiveGrades, количество плюсов
Ng - NegativeGrades, количество минусов
Us - UsersSeen, количество пользователей, видевших пост в ленте
W буквально отражает, какая часть от общего числа пользователей, видевших пост, поставила ему оценку. Диапазон значений от 0 до 1, где 0 - никто не поставил оценку, 1 - все, кто видел пост, оценили его.
Опять же не стоит забывать про репрезентативность данного показателя, выражаемую значением Us.
Ещё один любопытный показатель: насколько пост вызывает желание зайти что-то обсудить или посмотреть, что там думают на его счёт. Разумеется, он может быть объективным только если количество комментариев C не будет отображаться, как это делается сейчас.
A = Uvc / Us
где:
A - Attraction, насколько пост завлекает в свои комментарии
Uvс - UsersViewedComments, количество пользователей, заходивших в комментарии поста
Us - UsersSeen, количество пользователей, видевших пост в ленте
0 >= A >= 1; Репрезентативность: Us. A отражает какая часть пользователей из тех, кто видел пост, заинтересовалась его обсуждением, зайдя в комментарии.
И самое, пожалуй, интересное - обсуждаемость поста:
По сути этот параметр находится в прямой зависимости от количества людей, оставивших комментарии, и количества самих комментариев. Можно просто получить произведение для C и Uc.
Например если в комментариях отписалось 8 человек, а всего комментариев 48, то обсуждаемость = 8 * 48 = 384, а если пришёл 9-й и написал ещё комментарий, то уже 9 * 49 = 441. В таких числах сложно ориентироваться - они достаточно быстро растут и очень сложны для анализа.
Для решения этой проблемы всегда можно поступить как обычно, то есть закатать логарифмами! Конечно же, натуральными, потому что только натуральные логарифмы сделаны из высококачественного природного сырья.
D = ln(C) * ln(Uc)
где:
D - Discussion, уровень обсуждаемости
С - Comments, количество комментариев
Uc - UsersCommented, количество пользователей, оставивших комментарии
Что отдельно приятно в этой формуле: если 1 человек оставил под постом сколько угодно комментариев, то обсуждаемость будет равна 0, потому что ln(1) = 0. То есть логика такова, что если нет хотя бы двух человек, оставивших комментарии, то ничего не обсуждается.
Конечно, можно было бы разработать и более серьёзный способ расчёта обсуждаемости, учитывающий ветвистость комментариев и прочие вещи. Но в целом даже предоставленная формула уже даёт вполне показательное значение.
На примерах:
Под постом 25 комментариев от 3-х юзеров. D = ln(25) * ln(3) ~ 3,54
Тут присоединяется ещё один, написав один комментарий. D = ln(25 + 1) * ln(3 + 1) ~ 4.52 (рост обсуждаемости почти в единицу)
И ещё один: D = ln(26 + 1) * ln(4 + 1) ~ 5.30 (рост уже заметно меньше, чем на 1)
Но вот если никто новый не приходит, то вот на 5-х +10 комментариев и: D = ln(27 + 10) * ln(5) ~ 5.81 (рост не такой значительный: +0.51 за прибавку в 10 комментариев)
Пишут ещё +10 комментариев и: D = ln(37 + 10) * ln(5) ~ 6.19 (+0.38)
В общем, всё логарифмически: чем больше есть, тем хуже рост. Таким образом достигаются вменяемые, в пределах 10-и пунктов, значения параметра обсуждаемости.
Ну и как обычно в финале ответ на вопрос: "нахрена, а главное зачем?"
Да на самом деле за тем же, зачем и всегда: для работы всяких автоматизированных систем ресурса. Много чего можно придумать. Статистику опять-таки для анализа собирать, по пользователям или по тегам, например. Как привлекают посты с тегом "политика" или насколько обсуждаемы с тегом "NSFW"...
В общем, теоретическая база на то и база, что не ней уже можно какую-то теорию базировать, что от чего зависит, выявлять. Ведь чтобы когда-то выяснить, что F = m * a неплохо сначала понимать что за m, a и F такие.
А на этом пока всё, граждане пипчане. До новых встреч!
Братан, тебе бы раздел для ЛЛ делать, желательно в начале, а то яебу
Я бы сделал, но мне лень :)
ПРОТЕСТУЮ БЛЯДЬ! ОН НЕ ПОЛЕНИЛСЯ ДЛИННОПОСТ ЗАЕБАШИТЬ
Ваша честь, ебаните на кол за то что притворяется адептом лл
Нихуя уже! Оправдалочки — не обвинялочки! И вообще я в домике.
Агаааа а на в домик лени не хватило!!! Хитрозадый расчетун)
А чё, на ноль делить уже можно?
Оценку поставил, но внутрь не заходил...
Но где-то же должен сохраняться статус того что пост увиден, как-то же, на том же пикабу, реализованы скрытие просмотренных постов, не обязательно открывать пост, что бы получить с него статус просмотренного.
З.Ы. для ТС, можно ещё разделить, для длиннопостов, параметр просто просмотрен и открыт пост или развернут прям в ленте. Тоже можно будет увидеть разницу между «лайк не глядя» и реально просматриваемыми постами
З.з.ы. решается вопрос с делением на ноль ещё проще, после публикации, автору открывается его пост, на чем сразу же получаешь один просмотр
Есть несколько программных способов более-менее достоверно определить, что «пост увиден».
1. Он (пост) ОЧЕНЬ большой и юзверь нажал «раскрыть» (не годится, посты чаще «влазят», чем нет).
2. Юзверь перешёл на комментирование (не факт, что Пользователь действительно увидел пост), но 100% подобных ресурсов приравнивают события «пошёл комментировать» = «просмотрел пост»
3. В момент открытия сайта включить камеру и отслеживать состояние зрачков юзверя (за такое набутыливание положено, но тем не менее)...
Вот, исходя из п.2. очевидно, что ТС любит сову на глобус ради ЧСВ, т.к. ФГМ...
На пикабу это как-то по другому было реализовано, там статус увиденного давался и тем постам которые просто пролистнул.
В веб-кодинге я не очень, но наверняка есть параметр положения фрейма поста на экране и если ориентироваться на то что он был в центре экрана и был пролистан на следующий* пост, пост помечается прочитанным, или даже упростить и привязаться к центру экрана и нижней части фрейма с постом.
[Upd] *на следующий пост со статусом непрочитанного
Гарантию, что прокрученная лента постов не только промотана, но ещё и прочитана — может дать только очень ярый оптимист.
Ну, это уже погрешности, хорошо что не стоит задача определить понят ли пост
У меня ни один пост из околонулевых значений не выйдет в таком случае. Даже те, что с картинками, блин :)
Насколько мне удалось пощупать этот алгоритм на пикабу: пост считается виденным в ленте, если он вылез на экран полностью, то бишь целым окошком, даже если это окошко свёрнутого из-за длины поста. Если хоть половинку такого окошка оставить за экраном, недоскроллив, а затем переключиться куда-то ещё и вернуться, то как просмотренный такой пост не скроется и будет снова показан в ленте.
Можно попробовать HTTrack'ом вытянуть скрипты
Там, скорее всего, JS, у меня серьёзная аллергическая реакция на него.
Я бы даже сказал что там гарантированно JS, но, как гласит мудрость башорга, совет номер 0 при изучении js — не учить js ))
Не знаю, мне замороченность тс, с точки зрения инженерного подхода и аналитики, нравится, чувствуется что мозги у человека есть и он умеет ими пользоваться.
Я отношусь к этой серии постов как к неплохому примеру по аналитике, а не как к советам как надо сделать на Пике.
Если смотреть с этой точки зрения, до и с ЧСВ там всё в порядке.
Насчёт вот этого, у меня мысль такая, что если пост большой и при этом юзер его видел и не развернул, то по логике он же его всё равно видел, то бишь счётчик Us + 1 должен быть. Но так-то да, можно было бы подумать об отдельном счётчике, который для малых постов всё равно, что Us, а для больших имеет +1 только при нажатии «раскрыть полностью», то есть подсчитывает, сколько юзеров ознакомились с полным содержанием. Тогда на основании показаний такого счётчика можно ещё один полезный параметр рассчитывать, подобный завлекательности.
С делением на ноль, понятно, вопрос чисто технический.
Можно, чисто с точки научного интереса и понимания нужно ли стимулировать авторов на написание длиннопостов. Может выясниться что длиннопост, разбитый на 2-3 коротких, будет более востребован публикой
Это всё дело пахнет серьёзным метаисследованием. И костром, почему-то… :)
Порадовало скрытие алгоритмов под спойлер, приятнее читать стало
Вот сколько спойлеров открыл, а ни одного алгоритма так и не встретил.
Ладно, формул расчета, если включить зануду ))
Уважаемый, а можно для тупых — хоть один «рабочий» расчёт по этим формулам привести? Ну вот так, чтобы выпукло, убедительно и неоспоримо? А то сове на глобусе совсем душно.
И не лень же такой хуйнёй занимаца. Мне читать такое в лом, а чел ещё и расписал всю эту хуергу. В двух словах ответьте, на хуя это всё надо?
Короче, смотри: все люди в этих ваших интернетах разные — есть такие, которые любят всякую сложную тему понять, есть и такие, которые кроме односложных мемасиков нихуя вывозить не желают. Каждый тут за своим. И если тебе не хочется что-то понимать, то проходи мимо. Можешь даже тег «рыбля воротит нось» поставить в игнор, он как раз для тех, кто сильно умные посты не любит.
Ну а если тебе и думать не хочется и при этом что-то понять хочется, то тут, увы, не могу (да и мог бы — не хочу) тебе чем-то помочь.