Pull to refresh

Comments 35

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

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

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

И вообще нужно ввести Хабраиндекс )
UFO just landed and posted this here
на первом месте пост с достаточно сомнительным содержанием? вы что пропустили хабраистерику? :)
Это вы вовремя пост оформили — сегодня я просто не высплюсь. Найди я его (или он меня) завтра, и среда стала бы пятницей (сужу по количеству открытых вкладок — некоторые прочитать, некоторые просто освежить в памяти)…
Неожиданно обнаружила свои посты в топе целых двух хабов. Кажется, впервые за все такие рейтинги. Приятно!
Аналогично, впервые попал в топ при подобной выборке, правда только в одном хабе, но почетное третье место. приятно.
Либо он оказался действительно полезным, либо как написали выше отложен в 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 выглядят так:
Изумительно.
Было бы хорошо добавить фильтрацию по времени. И в таком варианте эту «фичу» можно добавлять на сам Хабр.
Автор, спасибо большое за проделанную работу! Уже есть что почитать, но если допилить, вообще цены не будет!
Ткните пальцем в новый функционал, не вижу его.
Sign up to leave a comment.

Articles