Как генерить список интересных тем?
Можно оценивать среднюю дистанцию (по времени) между ответами в теме за последний месяц. Чем дистанция меньше, тем тема популярнее. Далее, среди отобранных тем нужно проранжировать по количеству новых постов, например, за неделю.
Таким образом, старая тема может сделаться популярной, если там вспыхивает новое обсуждение, поторчать в рейтинге определенное время, и погрузиться обратно в пучину архива.
Повторяю третий раз, не надо ничего объяснять, я догадаюсь. Пишите сразу формулу. С конкретными коэффициентами.
Наиболее интересные темы, имхо, нужно отбирать по именам пользователей, которые в них участвуют, а вовсе не по числу постов в них. То есть если тема интересная, предполагается, что “отцы” в ней примут активное участие.
На каждого пользователя вводишь нормированный весовой коэффициент А. На известных и заслуженных близкий к единице, а на только что появившихся юзеров - нулевой почти. Таким образом, рейтинг темы вычисляется по формуле:
R= (A1*UserName1+A2*UserName2+…A(n)*UserName(n))\n, где
R - рейтинг темы
A(n) - вес пользователя,
n - число пользователей в теме.
Фсё.
Осталась мелочь. Как автоматически расчитывать этот хитрый коэффициент? Если вручную, дык наверное проще тогда сразу вручную темы перебирать.
Ну и кроме того, тут даты нигде не учитываются. Будут стары темы только всплывать, а это не очень интересно. Хочется, чтобы свежие были.
Осталась мелочь. Как автоматически расчитывать этот хитрый коэффициент? Если вручную, дык наверное проще тогда сразу вручную темы перебирать.
Ну и кроме того, тут даты нигде не учитываются. Будут стары темы только всплывать, а это не очень интересно. Хочется, чтобы свежие были.
Я, конечно, могу тебе предложить формулу расчёта, но она уж больно эмпирична и реальности, скорее всего, не отразит. Поэтому либо проставлять коэффициенты на всех вручную, либо я не знаю. Еще вариант - выбрать наиболее активных и толковых человек 30-40, и отсеивать темы по процентному содержанию постов этих людей в данной теме.
По датам всё просто. Ставь запрет на рейтинг тем возрастом больше, чем период выхода дайджеста.
Ну с ограничением по времени я примерно так и думал.
Насчет расставления коэффициентов вручную - не знаю. Мутно это. Грубо говоря, заменять задачу по ручной сортировки тем на ручную сортировку юзеров - как-то не очень привлекательно. Вот, проверил , отсортировал юзеров по количеству сообщений - намного больше чем 40 “важных” оказалось.
Пиши другую формулу, думать будем.
Кажется, ты не совсем так понял. Я имел в виду, что надо создать некий список, зараннее и однократно сформированый, из активных и толковых пользователей. Например, Графа туда вставить, Володю Василькова и так далее. Следует формула:
R=(P(UserName1)+P(UserName2)+…+P(UserNameN))\P(all), где
R - рейтинг
Р - число постов данного юзера
N - число юзеров из списка, участвующих в теме
P(all) - число постов в теме
Список можешь обновлять там, скажем, раз в квартал. Просто добавлять туда появившихся интересных ребят. Кажется, это не проблема.
ЗЫ. Вообще, я слабо себе представляю возможности твоего скрипта, поэтому не могу что-то предметно посоветовать. Давай в асю дальше, что ли.
Может просто,
K=Pi/P+k*(Vi-n)/V
Pi - число постов за неделю в данной теме, P - общее число постов за неделю на форуме, Vi - число просмотров темы за неделю, V - общее число просмотров тем форума. n - число уникальных пользователей за неделю. (Vi-n) должно быть >=0. Таким образом можно отсеить темы с интересным заголовком и неинтересным содержанием (заглянули один раз и забыли).
k - можно изначально взять заведомо маленьким (0.2, скажем), на столько ли важно вообще это количество просмотров?
To Сергеич
Понятно. Рациональное зерно бесулловно есть, я о чем-то похожем думал.
проблемы:
- можно пропустить что-нибудь суперновое, где ни один из “аксакалов” не отметился, потому что не интересно или не в курсе
- не уверен, что количество постов есть показатель ума. Показатель активности, “долгожительства” на форуме, но это не кореллирует с интересностью темы. Иначе мы темы Wit-а про турбины будем видесь в самом хвосте, только потому что он появился недавно.
- вычислительная сложность так себе, хотя это конечно больше замечание, чем минус.
To romychs
Говорил уже, количество просмотров повязано не на интересность темы, а на количество постов и время жизни темы. Поэтому не вижу смысла наворачивать формулы одновременным использованием количества постов и количества просмотров.
R=P(User1)*K(User1)/Tp(User1)+P(User2)*K(User2)/Tp(User2)+ … +P(UserN)*K(UserN)/Tp(UserN), где
R - рейтинг,
Р - общее число постов текущего юзера,
K - вес юзера. Можно задать К поумолчанию =1, и только для отдельных юзеров сделать табличку. К может быть, как больше 1, так и меньше.
Tp - время поста в днях + 1, в двухднях +1, в неделях +1. Надо пробовать.
Если рейтинг юзера брать по логарифмической шкале и темы оценивать не как средне-взвешенное, а как средне-квадратичное взвешенное, то… можно уже дисер писать. 😛
На самом деле к вопросу лучше с другой стороны подходить. К примеру, как на anekdot.ru верхняя десятка формируется. Вот это будет репрезентативно!
Но для этого скрипт надо подправлять. 😕
На самом деле к вопросу лучше с другой стороны подходить. К примеру, как на anekdot.ru верхняя десятка формируется. Вот это будет репрезентативно!
Не получится. Там каждый анекдот оценивается и анекдоты друг с другом не связаны. Если оценивать тему целиком, то все равно есть вопросы. Например, рейтинг темы может меняться по мере ее развития. Как в положительную, так и в отрицательную сторону. Если люди уже как-то голосовали за нее в начале, то что им делать потом? И еще, чем бредовее тема, тем почему-то она популярнее. Здравомыслящая часть аудитории будет оценивать такую тему ниже плинтуса, но к популярности-то такая оценка отношения не имеет. 😃
Так, трындеть хватит, а? Формулы гоните.
Я пока склоняюсь оценивать по средней скорости поступления сообщений за последнюю неделю. То есть:
Количество сообщений/[дата первого сообщения - дата последнего]
(*) Сообщения отсекаются где-то по последним 2 неделям.
Возможно, есть смысл какие-то локальные максимумы считать за 3 дня. Надо подумать.
Зато никакой привязки к “умности” пользователей, ибо это мне это почему-то не нравится. Есть вероятность что будет слишком усредненная “авторитарная попса” вылезать.
для всех сообщений в теме за последний месяц:
сумма{([дата i-го сообщения] - [дата i+1-го сообщения]) < 3 дней } / кол-во {([дата i-го сообщения] - [дата i+1-го сообщения]) < 3 дней }
чтобы “авторитарная попса” не лезла, можно засчитывать первое сообщение пользователя с весом 1, второе сообщение от этого же пользователя в этой же теме с весом 0.5, третье - 0.25 и так далее. Таким образом, тема, где участвуют два собеседника, будет проигрывать теме, где участвуют 3 и больше, при прочих равных.
так как мы берем сравнительно небольшой интервал времени, то в этом интервале можно взять от каждого участника по одному сообщению, все последующие сообщения этого участника в теме отбрасывать. получается: “чем больше разных участников высказалось за ограниченный промежуток времени, тем тема популярнее”.
О, дельная мысль, кстати. Насчет количества авторов.
Тоха прав, а то по формуле
Количество сообщений/[дата первого сообщения - дата последнего]
Самыми “интересными и актуальными” темами вылезут
Полетушки в Люберцах и
магазины нашинские. доколе ещё?