Примечательно, что с каким бы программистом я не начинал обсуждать алгоритм составления ТОПа, в итоге каждый говорил, что вот он сейчас пойдет создаст сайт, выложит там новый ТОП и станет популярным. Это с одной стороны хорошо, так как показывает, что программисты - люди дела и любители играть в разные алгоритмы, а также мечтают стать знаменитыми. Но с другой стороны показывает, что они не понимают
1) Как работать в команде,
2) Что так как все работают с одним векторным пространством и одинаковыми сырыми данными, то в итоге рейтинг у всех будет совпадать в значительной степени.(~20%)
3) Самая сложность не в первоначальной сортировке, а в последующих фильтрах, которые должны отсеять спамерские посты. А спамерские посты чаще всего имеют ссылки как входящие, на сам пост, так и исходящие - на рекламу - которые нужно уметь определять и фильтровать. Вот об этом алгоритме
работы нового ТОПа и поговорим.
После 4х летнего изучения топов я с полной уверенностью могу сказать, что нет смысла составлять списки бана, то есть лишать определенныз определенных блогеров шанса попасть в ТОП. Ибо это равносильно тому, чтобы посадить своего модератора, так как спамер может создавать новые блоги каждый день. В связи с этим логичным видится
1) фильтр по ссылкам, которые содержаться в посте - то есть все ссылки должны проходить проверку через сервис opendns, чтобы исключить ссылки на фишинговые сайты в топе или на сайты с вирусами. Минус - медленная работа по отбору записей, поэтому я пока ограничился самосоставленным списком с плохими ресурсами. И если в после есть ссылка на плохой ресурс, то пост не попадет в топ. Также я расматриваю вариант, когда на наличие плохих ссылок будет анализироваться вся главная страница блога и страница профиля, так как вероятно их откроет человек захотевший узнать побольше об авторе ТОПа и этим тоже пользуются спамеры.
2) ссылки на популярные сервисы сокращения ссылок (bit.ly) можно пока не фильтровать, так как эти сервисы сами заинтересованы в фильтрации ссылок на фишинговые и вирусные сайты.
3) Ранее я упомянул фильтр на локальный экстримум - он заключается в том, что проверяется, что за локальный период времени ссылок именно на этот пост блогера было больше всего или комментариев было больше всего. Это прежде всего позволяет отфильтровать тех у кого есть трансляции и у кого стабильно по несколько ссылок между своими трансляциями. Также отфильтрует тех, у кого стабильно много комментариев, например из-за спама в комментариях.
4) Анализируя спамерскую активность я пришел к выводу в необходимости фильтра "LinksIntegrity" - задача которого проверить все ссылки на расматриваемый пост, отбросить одинаковые, отбросить те, которые сделаны из сообществ и отбросить все ссылки с микроблогов. Повышенная активность в микроблогах и то, что там почти каждый пост содержит ссылки - говорит о том, что нельзя микроблоги причислять к полноценным блогам. Кроме того в микроблогах сейчас каждый упоминание типа "@user" - считается ссылкой и это сильно перекосило рейтинг блогеров и вызывает недоумение в определенных кругах. Итак, после отбора ссылок, проверяется, что оставшееся число ссылок достаточно для того, чтобы интегральная характеристика поста оставалась среди 20% постов с наибольшим значением.