Как генерить список интересных тем?

Vitaly

Повторяю третий раз, не надо ничего объяснять, я догадаюсь. Пишите сразу формулу. С конкретными коэффициентами.

Сергеич

Наиболее интересные темы, имхо, нужно отбирать по именам пользователей, которые в них участвуют, а вовсе не по числу постов в них. То есть если тема интересная, предполагается, что “отцы” в ней примут активное участие.

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

R= (A1*UserName1+A2*UserName2+…A(n)*UserName(n))\n, где

R - рейтинг темы
A(n) - вес пользователя,
n - число пользователей в теме.

Фсё.

Vitaly

Осталась мелочь. Как автоматически расчитывать этот хитрый коэффициент? Если вручную, дык наверное проще тогда сразу вручную темы перебирать.

Ну и кроме того, тут даты нигде не учитываются. Будут стары темы только всплывать, а это не очень интересно. Хочется, чтобы свежие были.

Сергеич
Vitaly:

Осталась мелочь. Как автоматически расчитывать этот хитрый коэффициент? Если вручную, дык наверное проще тогда сразу вручную темы перебирать.

Ну и кроме того, тут даты нигде не учитываются. Будут стары темы только всплывать, а это не очень интересно. Хочется, чтобы свежие были.

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

По датам всё просто. Ставь запрет на рейтинг тем возрастом больше, чем период выхода дайджеста.

Vitaly

Ну с ограничением по времени я примерно так и думал.

Насчет расставления коэффициентов вручную - не знаю. Мутно это. Грубо говоря, заменять задачу по ручной сортировки тем на ручную сортировку юзеров - как-то не очень привлекательно. Вот, проверил , отсортировал юзеров по количеству сообщений - намного больше чем 40 “важных” оказалось.

Пиши другую формулу, думать будем.

Сергеич

Кажется, ты не совсем так понял. Я имел в виду, что надо создать некий список, зараннее и однократно сформированый, из активных и толковых пользователей. Например, Графа туда вставить, Володю Василькова и так далее. Следует формула:

R=(P(UserName1)+P(UserName2)+…+P(UserNameN))\P(all), где

R - рейтинг
Р - число постов данного юзера
N - число юзеров из списка, участвующих в теме
P(all) - число постов в теме

Список можешь обновлять там, скажем, раз в квартал. Просто добавлять туда появившихся интересных ребят. Кажется, это не проблема.

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

romychs

Может просто,
K=Pi/P+k*(Vi-n)/V
Pi - число постов за неделю в данной теме, P - общее число постов за неделю на форуме, Vi - число просмотров темы за неделю, V - общее число просмотров тем форума. n - число уникальных пользователей за неделю. (Vi-n) должно быть >=0. Таким образом можно отсеить темы с интересным заголовком и неинтересным содержанием (заглянули один раз и забыли).
k - можно изначально взять заведомо маленьким (0.2, скажем), на столько ли важно вообще это количество просмотров?

Vitaly

To Сергеич

Понятно. Рациональное зерно бесулловно есть, я о чем-то похожем думал.

проблемы:

  • можно пропустить что-нибудь суперновое, где ни один из “аксакалов” не отметился, потому что не интересно или не в курсе
  • не уверен, что количество постов есть показатель ума. Показатель активности, “долгожительства” на форуме, но это не кореллирует с интересностью темы. Иначе мы темы Wit-а про турбины будем видесь в самом хвосте, только потому что он появился недавно.
  • вычислительная сложность так себе, хотя это конечно больше замечание, чем минус.

To romychs

Говорил уже, количество просмотров повязано не на интересность темы, а на количество постов и время жизни темы. Поэтому не вижу смысла наворачивать формулы одновременным использованием количества постов и количества просмотров.

Taboo

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. Надо пробовать.

vovic

Если рейтинг юзера брать по логарифмической шкале и темы оценивать не как средне-взвешенное, а как средне-квадратичное взвешенное, то… можно уже дисер писать. 😛

На самом деле к вопросу лучше с другой стороны подходить. К примеру, как на anekdot.ru верхняя десятка формируется. Вот это будет репрезентативно!
Но для этого скрипт надо подправлять. 😕

toxa
vovic

На самом деле к вопросу лучше с другой стороны подходить. К примеру, как на anekdot.ru верхняя десятка формируется. Вот это будет репрезентативно!

Не получится. Там каждый анекдот оценивается и анекдоты друг с другом не связаны. Если оценивать тему целиком, то все равно есть вопросы. Например, рейтинг темы может меняться по мере ее развития. Как в положительную, так и в отрицательную сторону. Если люди уже как-то голосовали за нее в начале, то что им делать потом? И еще, чем бредовее тема, тем почему-то она популярнее. Здравомыслящая часть аудитории будет оценивать такую тему ниже плинтуса, но к популярности-то такая оценка отношения не имеет. 😃

Vitaly

Так, трындеть хватит, а? Формулы гоните.

Я пока склоняюсь оценивать по средней скорости поступления сообщений за последнюю неделю. То есть:

Количество сообщений/[дата первого сообщения - дата последнего]

(*) Сообщения отсекаются где-то по последним 2 неделям.

Возможно, есть смысл какие-то локальные максимумы считать за 3 дня. Надо подумать.

Зато никакой привязки к “умности” пользователей, ибо это мне это почему-то не нравится. Есть вероятность что будет слишком усредненная “авторитарная попса” вылезать.

toxa

для всех сообщений в теме за последний месяц:
сумма{([дата i-го сообщения] - [дата i+1-го сообщения]) < 3 дней } / кол-во {([дата i-го сообщения] - [дата i+1-го сообщения]) < 3 дней }

чтобы “авторитарная попса” не лезла, можно засчитывать первое сообщение пользователя с весом 1, второе сообщение от этого же пользователя в этой же теме с весом 0.5, третье - 0.25 и так далее. Таким образом, тема, где участвуют два собеседника, будет проигрывать теме, где участвуют 3 и больше, при прочих равных.

так как мы берем сравнительно небольшой интервал времени, то в этом интервале можно взять от каждого участника по одному сообщению, все последующие сообщения этого участника в теме отбрасывать. получается: “чем больше разных участников высказалось за ограниченный промежуток времени, тем тема популярнее”.

Vitaly

О, дельная мысль, кстати. Насчет количества авторов.

SAN

Тоха прав, а то по формуле

Количество сообщений/[дата первого сообщения - дата последнего]

Самыми “интересными и актуальными” темами вылезут
Полетушки в Люберцах и
магазины нашинские. доколе ещё?