Как генерить список интересных тем?
Повторяю третий раз, не надо ничего объяснять, я догадаюсь. Пишите сразу формулу. С конкретными коэффициентами.
Наиболее интересные темы, имхо, нужно отбирать по именам пользователей, которые в них участвуют, а вовсе не по числу постов в них. То есть если тема интересная, предполагается, что “отцы” в ней примут активное участие.
На каждого пользователя вводишь нормированный весовой коэффициент А. На известных и заслуженных близкий к единице, а на только что появившихся юзеров - нулевой почти. Таким образом, рейтинг темы вычисляется по формуле:
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 и больше, при прочих равных.
так как мы берем сравнительно небольшой интервал времени, то в этом интервале можно взять от каждого участника по одному сообщению, все последующие сообщения этого участника в теме отбрасывать. получается: “чем больше разных участников высказалось за ограниченный промежуток времени, тем тема популярнее”.
О, дельная мысль, кстати. Насчет количества авторов.
Тоха прав, а то по формуле
Количество сообщений/[дата первого сообщения - дата последнего]
Самыми “интересными и актуальными” темами вылезут
Полетушки в Люберцах и
магазины нашинские. доколе ещё?