Как стать автором
Обновить

Комментарии 35

А можно рейтинг полезных постов запилить? Потомк что, например, открываю JavaScript и на первом месте пост с достаточно сомнительным содержанием.
Как только вы определите количественный критерий полезности. Рейтинг — число, количество просмотров — число, количество комментариев — число. Полезность… А фиг ее знает.

Disclaimer: Подсветку, конечно, добавили, но на всякий случай — я не автор поста.
НЛО прилетело и опубликовало эту надпись здесь
Да, полезность действительно звучит достаточно размыто. Я имел ввиду рейтинг постов, имеющих академическую ценность.
Нет, я не понимаю минусующих — откройте и посмотрите на статьи в разделе JavaScript. Я понимаю, что рейтинг статей это круто, но такой рейтинг, как мне кажется — совсем не то, что нужно. Как минимум необходимо добавить учет свежести статей, так как технологии движутся вперед и актуальность со временем теряется, так же было бы не плохо учитывать рядом стоящие теги. В общем, рейтинг это больше, чем ранжирование по одному параметру.
Так а кто виноват, что не полезные статьи заплюсованны?
Я могу доказать, что на заплюсованность статьи ее содержание может влиять слабо. Вчера был праздник на хабре было 10 человек, завтра — рабочий день — в онлайне 100 человек. Как вы считаете: когда у статьи будет больше плюсов?

Я лишь хочу, чтобы рейтинг был качественней, не по одному параметру так сказать.
Ну и как вы предлагаете считать эту «полезность» и на каких условиях? А вдруг ваша «полезность» другому не понравится?
Можно по количеству добавлений в избранное. Странно, что я раньше об этом не подумал!
Избранное — это в половине случаев read it later.
Еще по количеству комментариев, по цитируемости поста внутри Хабра, etc

И вообще нужно ввести Хабраиндекс )
НЛО прилетело и опубликовало эту надпись здесь
на первом месте пост с достаточно сомнительным содержанием? вы что пропустили хабраистерику? :)
Это вы вовремя пост оформили — сегодня я просто не высплюсь. Найди я его (или он меня) завтра, и среда стала бы пятницей (сужу по количеству открытых вкладок — некоторые прочитать, некоторые просто освежить в памяти)…
Неожиданно обнаружила свои посты в топе целых двух хабов. Кажется, впервые за все такие рейтинги. Приятно!
Аналогично, впервые попал в топ при подобной выборке, правда только в одном хабе, но почетное третье место. приятно.
Либо он оказался действительно полезным, либо как написали выше отложен в read it never.
Ваш пост унес меня в страну занимательного чтения топовых постов хабов, которые я пропустил… некоторые даже перечитал.
Спасибо, мил человек.
А где же электронная коммерция? Добавьте этот хаб плиз, если есть возможность.
Зайдите в пост вечером.
Добавлю коммерцию, чулан, node js и еще несколько хабов, которые не попали изначально.
Как-то странно. В DIY у вас на первом месте пост с рейтингом 603 вместо этого поста, у которого рейтинг 1448. В CSS на первом месте должен быть пост про цикад. "Прекратите скручивать!" попал в топ «Электроники для начинающих», но умудрился избежать топа «DIY».
Я к сожалению сейчас не могу объяснить почему топовые пост про монитор и «цикад» не попали в соответствующие топы. Вечером приду и разберусь.

А пост про провода в топе DIY.
Действительно, в моих таблицах нету статей ни про цикад, ни про «приватный монитор». Спасибо, что заметили.

Решение проблемы
Посты парсятся по классу «posts shortcuts_items», но это не единственный возможный вариант представления поста на странице. Оказывается есть ещё и «post translation shortcuts_item», и, быть может, другие.

Но это решается очень просто — убираем конкретику из xpath-запроса, и всё парсится как надо:
for elem in grab.doc.select('//div[@class="posts shortcuts_items"]/div'):
    post_url = elem.node.find('h1[@class="title"]/a').get('href')
    ...

Вот так бывает, хотел перестраховаться, a упустил целый класс статей!
По заголовку показалось, что вы посчитаете средний рейтинг постов каждого хаба. Хотел посчитать его на основе вашей базы данных, но ее структура меня очень расстроила. Я ожидал, что будет таблица хабов и таблица постов (с указанием id хаба для каждого поста). А у вас почему-то отдельная таблица для каждого хаба. Нормально работать с этим невозможно. Но я упорный, поэтому вот результаты. В скобках указан средний рейтинг поста.

Хабы с самыми успешными постами: cases (86), it_bigraphy (79), diy (76), easyelectronics (73), announcements (72), iconoskaz (72), i2p (72), asm (69), dura_lex (68), antikvariat (64), data_visualization (64), ebay (63), freelance (62), history (61), videocards (61).

Хабы с самыми заминусованными постами: joomla (2), cubrid (2), cakephp (5), bitrix (5), ms_access (6), sup_fabrik (6), sharepoint (6), azure (8), mssql (8), doctrine (8), derbyjs (9), bada_dev (9), crm (9), asterisk (10), begun (10).
Ого, пищи для ума прибыло!
Спасибо! Пропал рабочий день. )
На мой взгляд, использовать значение
количество плюсов - количество минусов
в качестве score не очень хорошо. Яркий пример: «хорошесть» статьи у которой 100 плюсов и 91 минус не равна «хорошести» статьи у которой 10 плюсов и 1 минус.

Поэтому в качестве score лучше использовать нижнюю границу доверительного интервала для значения Уилсона. Подобный алгоритм используется для сортировки комментариев в реддите. Подробнее можно почитать тут:
Reddit’s comment ranking algorithm

Еще можно воспользоваться алгоритмом ранжирования для Hacker News:
How Hacker News ranking algorithm works
Но мне кажется он тут не очень уместен. Код с учетом изменений можно найти тут.

Результаты для JavaScript выглядят так:
Изумительно.
Было бы хорошо добавить фильтрацию по времени. И в таком варианте эту «фичу» можно добавлять на сам Хабр.
Автор, спасибо большое за проделанную работу! Уже есть что почитать, но если допилить, вообще цены не будет!
Не увидел хаб GTD
UPD4: функционал запилили на хабр!
Ткните пальцем в новый функционал, не вижу его.
Ну например: лучшее хаба Python
thx
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории