В первой части были рассмотрены некоторые закономерности развития такого интересного ресурса, как habrahabr. Материал получился длинный, так что продолжение здесь. В этой части мы заодно посмотрим как строить такие картинки, и наконец, завершим нашу статистику и рейтинг.
Кому интересны результаты, прошу под кат.
Названия статей (word cloud)
Перед выводом рейтинга статей стало интересно посмотреть, какие же ключевые слова наиболее популярны в заголовках. Вполне очевидно что популярность разных технологий со временем меняется, хочется увидеть это в наглядном виде.
Это несложно сделать с помощью Python:
from wordcloud import WordCloud
def split_words(s):
try:
words = re.split('[:?., "''()<>-\[\]|!]', s)
return map(to_ascii, words)
except:
return []
def filter_words(s):
s = s.decode('utf-8').encode("ascii", errors="ignore").decode()
return len(s) > 2
def to_ascii(s):
s = s.replace("'", '').replace("-", '').replace("|", '')
return s.decode('utf-8').encode("ascii", errors="ignore").decode()
titles = df['title'].str.lower()
ts = titles.apply(lambda x: pd.value_counts(filter(filter_words, split_words(x)))).sum(axis = 0)
ts = ts.sort_values(ascending=False)
print(ts[:50])
print()
s_all = ""
for p in range(min(ts.shape[0], 200)):
s_all += (ts.index[p] + ' ') * int(ts.values[p])
wc = WordCloud(width=1600, height=1200, background_color="white",
relative_scaling=1.0, collocations=False,
).generate(s_all)
plt.figure(figsize=(9,6))
plt.title("%d" % year)
plt.xticks([])
plt.yticks([])
plt.tight_layout()
file_name = 'habr-words-%d.png' % year
plt.savefig(file_name)
Однако выводить «простыню» из 12 картинок, было бы неудобно — сделаем все это в виде gif-анимации. Вынесем код в отдельную функцию и запустим ее циклически для нужного диапазона лет.
import imageio
images = []
for y in range(2006, 2019+1):
file_name = make_words_cloud(df, y)
images.append(imageio.imread(file_name))
imageio.mimsave('habr-words.gif', images, duration=2)
И последний момент: чтобы слова было удобнее сравнивать, сделаем так, чтобы одинаковым словам всегда соответствовали одинаковые цвета.
colors_dict = dict()
def random_color_func_(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
if word in colors_dict:
return colors_dict[word]
else:
c = random_color_func(word, font_size, position, orientation, font_path, random_state)
colors_dict[word] = c
return c
wc = WordCloud(width=2600, height=2200, background_color="white", relative_scaling=1.0, collocations=False, color_func=random_color_func_).generate(text)
...
Окончательный результат в виде GIF:
И размер слов (он пропорционален количеству вхождений) и их разнообразие говорят сами за себя. Некоторые закономерности интересны — незыблимо остался на первом месте лишь Google, ушли в прошлое Flash, Opera и Yahoo, про Amazon 10 лет назад никто еще не писал, да и не было таких названий как Tesla, Kotlin или GDPR.
Была сделана аналогичная попытка создать распределение для русских слов, однако она закончилась полным провалом — из-за склонений приставок и окончаний в русском языке результат больше напоминал генератор случайных чисел. Попытка «нормализации» всего этого, выделения существительных, приведения их к именительному падежу и пр, наверно потребовала бы не этой статьи, а объема диссертации. А было бы заманчиво посмотреть, насколько например поднялось в рейтинге цитируемости слово «Роскомнадзор» или «Дума» (но не будем о грустном).
На этом мы наконец-таки закончим с программированием, и перейдем к собственно рейтингу.
Рейтинг
Еще раз повторюсь, что рейтинг неофициальный, и абсолютной достоверности не гарантируется. Если например, сервер на какой-то статье вернул timeout, то такая статья в список не попадет. Возможно существуют еще какие-то скрытые индексы, про которые я не знаю. Проверить вручную 206тыс статей с 2006 по 2019 год довольно сложно. Если кто-то из авторов не нашел себя в рейтинге, но уверен что должен там быть, пишите, добавлю вручную. Какие-то статьи 10-летней давности возможно, уже устарели, ну впрочем, тем и интереснее — какие-то забытые моменты можно вспомнить.
Поехали :) Ну и всех авторов, заочно поздравляю с попаданием в супер-топ. Хотя имена не анализировались при парсинге и не записаны в рейтинг, но думаю, те кто создавал статьи, «себя» наверно, узнают.
Правка: как заметили некоторые пользователи, пара статей повторяется дважды. Это не ошибка парсинга, эти статьи действительно выкладывались повторно — ссылки разные, а редирект ведет на ту же самую статью.
Топ-20 статей по числу просмотров
Взломать Wi-Fi за… 3 секунды 2000000 просмотров, 63 комментария, рейтинг +112.0/-21.0
Скрытые смайлы в Skype 1655000 просмотров, 69 комментариев, рейтинг +173.0/-74.0
Пишем своё первое приложение на Android 1535000 просмотров, 95 комментариев, рейтинг +123.0/-15.0
300 потрясающих бесплатных сервисов 1482000 просмотров, 104 комментария, рейтинг +325.0/-16.0
Взломать Wi-Fi за 10 часов 1416000 просмотров, 164 комментария, рейтинг +294.0/-10.0
Сети для самых маленьких. Часть нулевая. Планирование 1388000 просмотров, 133 комментария, рейтинг +100.0/-4.0
Wi-Fi: неочевидные нюансы (на примере домашней сети) 1186000 просмотров, 138 комментариев, рейтинг +231.0/-3.0
Учим Python качественно 1181000 просмотров, 87 комментариев, рейтинг +59.0/-27.0
Начинающим Java программистам 1084000 просмотров, 58 комментариев, рейтинг +113.0/-7.0
1000+ часов видео по Java на русском 1076000 просмотров, 38 комментариев, рейтинг +111.0/-9.0
Программирование под Android для начинающих. Часть 1 1043000 просмотров, 29 комментариев, рейтинг +50.0/-34.0
Практика настройки Mikrotik для чайников 1006000 просмотров, 114 комментариев, рейтинг +34.0/-5.0
5 практических советов по эксплуатации литий-ионных аккумуляторов 999000 просмотров, 34 комментария, рейтинг +21.0/-2.0
Еще раз про IP-адреса, маски подсетей и вообще 972000 просмотров, 203 комментария, рейтинг +261.0/-25.0
Как начать работать с GitHub: быстрый старт 948000 просмотров, 50 комментариев, рейтинг +165.0/-17.0
27+ ресурсов для онлайн-обучения 939000 просмотров, 68 комментариев, рейтинг +163.0/-11.0
Памятка пользователям ssh 925000 просмотров, 135 комментариев, рейтинг +352.0/-8.0
Что такое CRM-системы и как их правильно выбирать? 916000 просмотров, 30 комментариев, рейтинг +21.0/-7.0
Простая стратегия игры 2048 897000 просмотров, 43 комментария, рейтинг +63.0/-20.0
Откровенные фото Дженнифер Лоуренс и еще десятков знаменитостей утекли через iCloud 895000 просмотров, 328 комментариев, рейтинг +183.0/-23.0
Топ-20 статей по рейтингу
Делаем приватный монитор из старого LCD монитора, 320 комментариев, рейтинг +1466.0/-18.0, 486000 просмотров
Были получены исходники 3300 глобальных интернет-проектов, 909 комментариев, рейтинг +1190.0/-36.0, 240000 просмотров
История игрушки. Поле Чудес, 302 комментария, рейтинг +923.0/-10.0, 150000 просмотров
Как Денис Крючков выкупил Хабр у Mail.ru, 337 комментариев, рейтинг +817.0/-35.0, 275000 просмотров
Воронежец заключил с банком договор, внеся свои правки, и собирается отсудить 24 миллиона рублей, 860 комментариев, рейтинг +778.0/-25.0, 397000 просмотров
За что конкретно я ненавижу некоторых отдельно взятых маркетологов — или как айтишник по магазинам ходил, 777 комментариев, рейтинг +769.0/-45.0, 591000 просмотров
Стив Джобс умер, 648 комментариев, рейтинг +783.0/-75.0, 22700 просмотров
Принцип цикады и почему он важен для веб-дизайнеров, 119 комментариев, рейтинг +682.0/-14.0, 172000 просмотров
Как мы искали Марс-3, 169 комментариев, рейтинг +669.0/-8.0, 225000 просмотров
Прекратите скручивать!, 337 комментариев, рейтинг +667.0/-15.0, 865000 просмотров
История интернет-магазина, ставшего мировым монополистом за $5 000, 189 комментариев, рейтинг +641.0/-5.0, 81800 просмотров
Спать мало, но правильно?, 420 комментариев, рейтинг +670.0/-43.0, 464000 просмотров
Что не так с редизайном Хабрахабра, 361 комментарий, рейтинг +673.0/-62.0, 143000 просмотров
Читаем QR код, 103 комментария, рейтинг +612.0/-9.0, 490000 просмотров
Уязвимость на Habrahabr или как украсть инвайт, 138 комментариев, рейтинг +600.0/-19.0, 160000 просмотров
Деревянная мышь. История проекта, 440 комментариев, рейтинг +574.0/-6.0, 137000 просмотров
Нифига себе сходил за хлебушком, или история одного взлома, 147 комментариев, рейтинг +576.0/-16.0, 102000 просмотров
30 копеек для Михалкова, 295 комментариев, рейтинг +588.0/-29.0, 28700 просмотров
Как я наказал Firaxis или история о том, как перебрать бинарный движок через глушитель, 176 комментариев, рейтинг +547.0/-4.0, 95100 просмотров
Бейджи для Хабра, версия, 143 комментария, рейтинг +552.0/-10.0, 18500 просмотров
Топ-20 статей по относительному рейтингу
Обновление версий Android: печальная статистика 10000 просмотров, рейтинг +412.0/-46.0
Расписание выхода статей на Хабре (на любую неделю) 12000 просмотров, рейтинг +418.0/-14.0
Поможем Сбербанку 12300 просмотров, рейтинг +424.0/-18.0
С Днем программиста! 13100 просмотров, рейтинг +0.0/-0.0
Стив Джобс умер 22700 просмотров, рейтинг +783.0/-75.0
QIP — Минутка ненависти (хистори на сервере) 12100 просмотров, рейтинг +413.0/-44.0
Прогрессивные технологии, как способ выжать из сервера максимум 10300 просмотров, рейтинг +314.0/-4.0
Бейджи для Хабра, версия 18500 просмотров, рейтинг +552.0/-10.0
Про системного администратора, обыск в его квартире и незаконное изъятие компьютерной техники 10800 просмотров, рейтинг +344.0/-37.0
Про системного администратора, обыск в его квартире и незаконное изъятие компьютерной техники 10800 просмотров, рейтинг +344.0/-37.0
Как был взломан Вконтакте.ру 11300 просмотров, рейтинг +381.0/-71.0
Медиамагия: Приходишь домой, берёшь пульт и выбираешь, чтобы посмотреть с трекера 11700 просмотров, рейтинг +318.0/-12.0
Русский Наебизнес 12500 просмотров, рейтинг +355.0/-31.0
Русский Наебизнес 12500 просмотров, рейтинг +355.0/-31.0
Мысли вслух о протоколе X 10600 просмотров, рейтинг +283.0/-11.0
Грустная статистика или никогда не надейтесь на фрилансеров 12400 просмотров, рейтинг +365.0/-49.0
Что же яблофилы и яблофобы так и не поняли? 16700 просмотров, рейтинг +0.0/-0.0
Мал, да удал: Trojan-Downloader.Win32.Tiny 13300 просмотров, рейтинг +351.0/-14.0
Это Вы купили программу? Да ладно... 13000 просмотров, рейтинг +371.0/-42.0
IT-эмиграция в Страну Улыбок, в Тайланд 10400 просмотров, рейтинг +271.0/-11.0
Боитесь что снова закроют ex.ua? Не стоит — все можно скачать на сервере Министерства внутренних дел Украины 13000 просмотров, рейтинг +332.0/-7.0
Живая каркасная модель мотоцикла 11200 просмотров, рейтинг +302.0/-24.0
Топ-20 по числу закладок
300 потрясающих бесплатных сервисов 1482000 просмотров, 9119 закладок
Памятка пользователям ssh 925000 просмотров, 5822 закладки
27+ ресурсов для онлайн-обучения 939000 просмотров, 4851 закладка
Сети для самых маленьких. Часть нулевая. Планирование 1388000 просмотров, 4347 закладок
Прекратите скручивать! 865000 просмотров, 4330 закладок
Спать мало, но правильно? 464000 просмотров, 3946 закладок
1000+ часов видео по Java на русском 1076000 просмотров, 3616 закладок
Знай сложности алгоритмов 522000 просмотров, 3563 закладки
Делаем приватный монитор из старого LCD монитора 486000 просмотров, 3539 закладок
Принцип цикады и почему он важен для веб-дизайнеров 172000 просмотров, 3511 закладок
Ускорение загрузки Windows for fun and profit 448000 просмотров, 3497 закладок
Взломать Wi-Fi за 10 часов 1416000 просмотров, 3405 закладок
Руководство по оформлению HTML/CSS кода от Google 266000 просмотров, 3349 закладок
Шпаргалка по шаблонам проектирования 785000 просмотров, 3344 закладки
Несколько полезных сервисов 121000 просмотров, 3319 закладок
Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО 319000 просмотров, 3277 закладок
Много бесплатных книг по программированию 282000 просмотров, 3203 закладки
Подборка полезного для любителей Twitter Bootstrap 248000 просмотров, 3079 закладок
Wi-Fi: неочевидные нюансы (на примере домашней сети) 1186000 просмотров, 3070 закладок
Хочешь быть iOS разработчиком? Будь им! 377000 просмотров, 2980 закладок
Топ-20 по отношению числа закладок к просмотрам
Шпаргалки для тех, кто делает первые шаги 1114 закладок, 15900 просмотров
Упражнения по взлому Linux-систем 876 закладок, 13300 просмотров
Анатомия шрифта 1495 закладок, 22700 просмотров
38 статей о создании закругленных углов на сайтах 677 закладок, 10400 просмотров
Где погрызть гранит науки 830 закладок, 13200 просмотров
Прогрессивные технологии, как способ выжать из сервера максимум 646 закладок, 10300 просмотров
Торрент лекций Лекториум 947 закладок, 16200 просмотров
Полезные ссылки для изучения CSS анимации 1280 закладок, 22300 просмотров
Новые бесплатные онлайн курсы от Stanford 623 закладки, 11300 просмотров
UICloud: Самая большая база пользовательских интерфейсов 1780 закладок, 32400 просмотров
Подборка html/javascript/css инструментов и библиотек от SmashingMagazine 1000 закладок, 18400 просмотров
8 полезных сервисов для веб-разработчика и дизайнера 1658 закладок, 33800 просмотров
Лекториум записал почти тысячу лекций за год 2516 закладок, 54200 просмотров
IPO for dummies. Часть I: акции, мажоритарии, контроль над компанией 564 закладки, 12200 просмотров
Кроссбраузерная одноцветная полупрозрачность 499 закладок, 11000 просмотров
Медиамагия: Приходишь домой, берёшь пульт и выбираешь, чтобы посмотреть с трекера 518 закладок, 11700 просмотров
Скринкасты о том, как резать и натягивать 448 закладок, 10300 просмотров
Noty — необычайно гибкий плагин jQuery для вывода уведомлений 1099 закладок, 26200 просмотров
Визуализация данных 491 закладка, 12200 просмотров
9 статей на тему круглых кнопок 396 закладок, 10100 просмотров
Топ-20 самых «спорных» статей
Первый пост, 667 комментариев, рейтинг +596.0/-445.0
Дискриминация пользователей ВКонтакте, 319 комментариев, рейтинг +399.0/-258.0
Почему упал Вконтакте, 380 комментариев, рейтинг +306.0/-255.0
Пора завязывать использовать символы табуляции в коде, 217 комментариев, рейтинг +258.0/-234.0
И чтец, и на дуде игрец, 175 комментариев, рейтинг +337.0/-233.0
Прощай, карма или Кому нужен iPad?, 520 комментариев, рейтинг +661.0/-223.0
Неюзабельные продукты от Apple, 504 комментария, рейтинг +397.0/-218.0
Бессмысленная 'Операционная Система', 325 комментариев, рейтинг +394.0/-215.0
Чо! Мейл.ру. Чо?, 497 комментариев, рейтинг +316.0/-205.0
Пепяка, 255 комментариев, рейтинг +239.0/-204.0
Костюм лисички-Firefox [фото], 105 комментариев, рейтинг +285.0/-204.0
Давайте поговорим о Microsoft, 990 комментариев, рейтинг +261.0/-201.0
OpenSource-курсач, или заставляем преподавателя выпасть в осадок, 538 комментариев, рейтинг +276.0/-200.0
Браузер Yandex, 825 комментариев, рейтинг +266.0/-199.0
Merchant API, 136 комментариев, рейтинг +231.0/-198.0
Бог — бестолковый гейм-дизайнер, 531 комментарий, рейтинг +351.0/-195.0
Почему я отказался от Mozilla Firefox, 324 комментария, рейтинг +225.0/-193.0
'Тайна' журнала Vogue, 199 комментариев, рейтинг +225.0/-189.0
Орден Белых Рыцарей Хабра, 553 комментария, рейтинг +213.0/-188.0
Весь PHP в двух строчках, 322 комментария, рейтинг +240.0/-187.0
Топ-20 самых комментируемых статей
Моё разочарование в софте 2435 комментариев, 278000 просмотров
Как раздавать инвайты на Google+ 2266 комментариев, 17600 просмотров
Hello, world! 2194 комментария, 10300 просмотров
Лучшие компьютерные игры всех времен и народов по версии хабрасообщества 2013 года 1887 комментариев, 163000 просмотров
Про рынок ИТ в России по-честному 1834 комментария, 128000 просмотров
Раздача слонов или инвайты на Google+ 1829 комментариев, 1500 просмотров
Ещё +2Гб для вашего DropBox аккаунта. На сей раз, промо-акция DropBox и Three.com.hk 1729 комментариев, 13600 просмотров
Праздничная раздача инвайтов! 1663 комментария, 1300 просмотров
Slack банит аккаунты из Крыма 1660 комментариев, 64200 просмотров
Первая версия Opera 15 для компьютеров 1585 комментариев, 187000 просмотров
Хватит подозревать разрабов в самозванстве. Научитесь лучше собеседовать 1579 комментариев, 111000 просмотров
Завершено самое масштабное исследование влияния ГМО на здоровье человека 1579 комментариев, 224000 просмотров
Инвайты на Google Wave 1476 комментариев, 408 просмотров
Зачем нужны попы в ВУЗе? 1475 комментариев, 157000 просмотров
Чего вам не хватает для полного перехода с windows на linux? 1381 комментарий, 17600 просмотров
Ракета 9М729. Несколько слов о «нарушителе» Договора РСМД 1371 комментарий, 83000 просмотров
Инвайты на Турбофильм! 1313 комментариев, 2200 просмотров
Приверженцы статической и динамической типизаций никогда не поймут друг друга. И TypeScript им не поможет 1301 комментарий, 49300 просмотров
Иди-ка ты на !@# со своей 'токсичностью' 1300 комментариев, 176000 просмотров
Amazon сдался и повысил зарплаты сотрудникам 1288 комментариев, 63600 просмотров
Антитоп-20 статей с самым большим числом дизлайков
Первый пост, 667 комментариев, рейтинг +596.0/-445.0
Дискриминация пользователей ВКонтакте, 319 комментариев, рейтинг +399.0/-258.0
Почему упал Вконтакте, 380 комментариев, рейтинг +306.0/-255.0
Пора завязывать использовать символы табуляции в коде, 217 комментариев, рейтинг +258.0/-234.0
И чтец, и на дуде игрец, 175 комментариев, рейтинг +337.0/-233.0
Прощай, карма или Кому нужен iPad?, 520 комментариев, рейтинг +661.0/-223.0
Неюзабельные продукты от Apple, 504 комментария, рейтинг +397.0/-218.0
Бессмысленная 'Операционная Система', 325 комментариев, рейтинг +394.0/-215.0
Чо! Мейл.ру. Чо?, 497 комментариев, рейтинг +316.0/-205.0
Пепяка, 255 комментариев, рейтинг +239.0/-204.0
Костюм лисички-Firefox [фото], 105 комментариев, рейтинг +285.0/-204.0
Давайте поговорим о Microsoft, 990 комментариев, рейтинг +261.0/-201.0
OpenSource-курсач, или заставляем преподавателя выпасть в осадок, 538 комментариев, рейтинг +276.0/-200.0
Браузер Yandex, 825 комментариев, рейтинг +266.0/-199.0
Merchant API, 136 комментариев, рейтинг +231.0/-198.0
Бог — бестолковый гейм-дизайнер, 531 комментарий, рейтинг +351.0/-195.0
Почему я отказался от Mozilla Firefox, 324 комментария, рейтинг +225.0/-193.0
'Тайна' журнала Vogue, 199 комментариев, рейтинг +225.0/-189.0
Орден Белых Рыцарей Хабра, 553 комментария, рейтинг +213.0/-188.0
Весь PHP в двух строчках, 322 комментария, рейтинг +240.0/-187.0
Бонус
И небольшой бонус для тех, кто дочитал до сюда — выложим мини-рейтинг статей, написанных на английском. Этот рейтинг по сути за один год, т.к. раньше из просто не было, но что есть, то есть. Чтобы его получить, достаточно добавить одну строчку кода — выбрать в фильтре статьи, имеющие "/en/" в поле link:
df = df[df['link'].str.contains("/en/")]
Результаты приведены ниже. Все категории приводить не буду, т.к. англоязычных статей пока мало, и многое повторяется.
Топ англоязычных статей по числу просмотров
I ruin developers' lives with my code reviews and I'm sorry 164000 просмотров, 12 комментариев, рейтинг +33.0/-3.0
A small notebook for a system administrator 98300 просмотров, 56 комментариев, рейтинг +88.0/-3.0
Flightradar24 — how it works? 91000 просмотров, 12 комментариев, рейтинг +74.0/-1.0
I lost faith in the industry, burned out, but the cult of the tool saved me 30400 просмотров, 2 комментария, рейтинг +21.0/-2.0
PC Speaker To Eleven 24600 просмотров, 0 комментариев, рейтинг +31.0/-2.0
Making a DIY text laser projector 22900 просмотров, 5 комментариев, рейтинг +25.0/-1.0
A bot for Starcraft in Rust, C or any other language 21200 просмотров, 3 комментария, рейтинг +44.0/-1.0
Hello world! Or Habr in English, v1.0 21000 просмотров, 249 комментариев, рейтинг +178.0/-2.0
Running image viewer from Windows XP on modern Windows 8900 просмотров, 1 комментарий, рейтинг +25.0/-2.0
Yet another plea against using public WiFi 8000 просмотров, 0 комментариев, рейтинг +17.0/-1.0
Real-time edge detection using FPGA 7500 просмотров, 45 комментариев, рейтинг +41.0/-14.0
Stack-based calculator on the Cyclone IV FPGA board 7200 просмотров, 27 комментариев, рейтинг +58.0/-17.0
On higher education, programmers and blue-collar job 7100 просмотров, 7 комментариев, рейтинг +22.0/-1.0
I am a useless idiot, so I want to quit my job: 10 questions to a software developer, a pilot episode 7000 просмотров, 6 комментариев, рейтинг +24.0/-0.0
Vim for beginners 6400 просмотров, 2 комментария, рейтинг +19.0/-0.0
Do more with patterns in C# 8.0 5700 просмотров, 5 комментариев, рейтинг +18.0/-2.0
Naive Math: the Mendocino motor and Earnshaw's theorem 5300 просмотров, 1 комментарий, рейтинг +44.0/-1.0
?Wanna Play a Detective? Find the Bug in a Function from Midnight Commander 5100 просмотров, 0 комментариев, рейтинг +31.0/-0.0
How does a barcode work? 4500 просмотров, 0 комментариев, рейтинг +20.0/-2.0
How to learn English 4400 просмотров, 17 комментариев, рейтинг +15.0/-1.0
Топ англоязычных статей по числу закладок
Flightradar24 — how it works? 91000 просмотров, 28 закладок
How to learn English 4400 просмотров, 21 закладка
A small notebook for a system administrator 98300 просмотров, 19 закладок
Vue, Storybook, TypeScript-starting a new project with the best practices in mind 2700 просмотров, 17 закладок
Hello world! Or Habr in English, v1.0 21000 просмотров, 16 закладок
Vim for beginners 6400 просмотров, 15 закладок
A bot for Starcraft in Rust, C or any other language 21200 просмотров, 14 закладок
Kalman Filter 2000 просмотров, 11 закладок
Things you need to know should you want to switch from PHP to Python 2700 просмотров, 11 закладок
Isometric Plugin for Unity3D 1500 просмотров, 10 закладок
Ternary computing: basics 2100 просмотров, 10 закладок
I ruin developers' lives with my code reviews and I'm sorry 164000 просмотров, 9 закладок
Currying and partial application in C++14 1300 просмотров, 9 закладок
Time Series Modelling 1100 просмотров, 8 закладок
Generic Methods in Rust: How Exonum Shifted from Iron to Actix-web 3300 просмотров, 8 закладок
.NET Reference Types vs Value Types. Part 1 1400 просмотров, 8 закладок
How do technical indicators on stock market actually work? 791 просмотров, 7 закладок
Making a DIY text laser projector 22900 просмотров, 7 закладок
Send an email with attachements by JavaMailSender from SpringFramework 563 просмотров, 7 закладок
Low-budget stereo rendering in few lines of code (stereogram, anaglyph, stereoscope) 1100 просмотров, 7 закладок
Выводы
Выводов не будет. Всем спасибо за внимание, и приятного чтения :)
Комментарии (25)
Ktulhy
02.03.2019 02:39Для нормализации можно использовать один из существующих стеммеров
Проще всего установить стеммер от Яндекса (yandex mystem), который достаточно хорошо работает с русскими словами и работает как сервис (все вычисления происходят на сервере)DmitrySpb79 Автор
02.03.2019 09:48Спасибо, поэкспериментирую. Хотя сомневаюсь, что они дадут сделать 200тыс запросов «без регистрации и SMS» :)
Если кому интересно попробовать, исходник в CSV тут: cloud.mail.ru/public/GgYT/KEXDzixsSAlexey_mosc
02.03.2019 10:29+1Mystem.exe я вызываю локально из R. Вполне хорошо работает. Для питона рекомендую pymorphy2. Это вообще огонь.
Cekory
02.03.2019 12:43А я раньше дергал из R питоновский pymorphy2, но потом обнаружил udpipe, который очень прилично работает с русским языком.
tvl
02.03.2019 13:28Спасибо за файлик ) Теперь когда я хочу что то найти на хабре я делаю например так:
awk -F "," 'BEGIN {i=0} {if ($3 ~ /Redis/) {print $1 " " $3 " " $2;i++}} END {print "Total: " i "/" NR}' habr_all.txt
third112
02.03.2019 12:13Набрал в гугле «программа анализа текста» и получил кучу ссылок. Задача очень востребованная. Есть он-лайн и офф-лайн ПО, есть бесплатное, есть с бесплатным пробным периодом. Похоже есть что выбрать для данного исследования.
Alexey_mosc
02.03.2019 10:31Давайте 3 часть: предсказание рейтинга публикации по тексту публикации, с токенизайией, ембеддингом и deep learning ом.
third112
02.03.2019 12:54Отличная идея! Было бы интересно: загрузить в прогу черновик статьи и получить прогноз по рейтингу, а потом сравнить с реальностью. А если кроме прогноза будут советы по улучшению, то будет вообще бесценный инструмент. Выдают ведь компиляторы «варнинги» на строки в исходном коде, где высокая вероятность ошибки, м.б. и для естественного языка что-то подобное (пусть и несложное) возможно?
Alexey_mosc
02.03.2019 16:13It's doable. Я реализовал эту идею в ТАССе: модель предсказывает рейтинг статей. Про остальное попозже отвечу.
Alexey_mosc
03.03.2019 10:05В теории точно возможно, а на практике как сделать не вполне понятно. Вот если бы была простая модель, типа линейной регрессии или несложной полносвязной нейронки, можно после ее обучения получить ответ на вопрос, какие входы модели максимизируют выхлоп. Для этого берется производная не по параметрам, а по входам и делается градиентное восхождение до максимизации.
С текстом посложнее. Как вариант текст будет многомерным временным рядом и обучаться будет рекурр.сеть. Как там оптимизировать входы это вопрос. Даже если все получится, не факт, что «оптимальный» с тчк.зр. нейронки текст вообще будет читаться. Но вопрос интересный, да. Как минимум, можно написать класс «новость» (хе хе я уже мыслю как на работе), который будет содержать метод перестановки абзацев и предложений, да и слов в предложении. Рекуррентная сетка будет давать разный отклик на один и тот же текст с разным позиционированнием слов.third112
03.03.2019 12:27Если я правильно понял, то есть модель, которая предсказывает рейтинг статей, но объяснить почему получился низкий или высокий рейтинг она не может. Это открытая проблема ИИ, на Хабре был ряд публиказий на эту тему. ИМХО цель не чтобы программа переписала статью, а чтобы она показала что конкретно ей понравилось и не понравилось в статье. Как компилятор сообщает «данная переменная нигде не используется», «функция может вернуть неопределенный результат». Чекер в Ворде пытается улучшать тексты, но получается у него не очень. ИМХО тут нужно найти золотую сердину не замахиваясь на слишком многое.
Alexey_mosc
03.03.2019 13:38Ну, да. Проблема открытая, она жутко сложная по реализации, даже если понятны примитивы.
Ну, вот, пользователь читает ПРЕДЛОЖЕНИЯ. Например, «ии от компании х выиграл у людей в игре z. Тут все важно, комбинация слов важна, то есть, предложение. Сама по себе тема ИИ уже оскомину набила. Компания какая-то мало кому известна, игре уже 20 лет, а игроки сотнями партий проигрывают. Но в связке, можно сказать, максимизирует счастья энтропия предложения. Вот как это выделить в виде фактора требующего улучшения вопрос хороший.third112
03.03.2019 13:59Но в связке, можно сказать, максимизирует счастья энтропия предложения. Вот как это выделить в виде фактора требующего улучшения вопрос хороший.
А как существующая модель предсказания рейтинга выделяет? Или она не учитывает такую энтропию, а делает прогноз по другим параметрам и другим предложениям?
И не менее интересный вопрос: от чего в основном зависит рейтинг? Если смотреть по комментам, то у меня с большим отрывом от прочих моих комментов идет:
> как вы проверите?
Подключим центрифугу и посмотрим нормально ли она работает:)
Ну, удачно пошутил и не более того. Может удачная шутка в статье гораздо важнее оскомины от темы?
JamboJet
02.03.2019 20:15+3Отдельный вопрос: интересно, а сколько процентов от этих «топовых» статей сохранили актуальность?
Обсуждение QIP, инвайтов на Google+, множество других устаревших материалов…Alexey_mosc
03.03.2019 10:11Я думаю так — модель будет опираться не на сами ключевые термины (хотя отчасти и на них), а на контекст их использования. Поэтому некоторую обобщающую способность можно выжать, типа если речь про сетевые технологии, то средненько, а если про большие компании, то побольше.
Вот лично мне реально интересно, сможет ли НС научиться меняющимся моде и духу самого сообщества, включая также меняющийся лексикон и просто привычки. Юмор туда же. Думаю, хорошая статья, набравшая много лайков, затрагивает глубинные чувства людей (масс) и разговаривает на их языке. По этому принципу можно наклепать до черта материалов, которые будут просто приятным чтивом.
Если нейронка сможет обобщать эти абстракции то это будет большой вин для машин.обуч.
Enmar
02.03.2019 21:41Вопрос.
А код запросов на синхронном питоне?
Просто для такого кол-ва запросов было бы неплохо асинхронный Python(aiohttp) или вообще на чем-нибудь быстрее питонеDmitrySpb79 Автор
03.03.2019 14:18Запросы специально делались в один поток, чтобы не нагружать сервер.
vasily-v-ryabov
02.03.2019 22:48Спасибо, только сейчас узнал, что есть хабрастатьи на английском. При подписке на узкий список хабов можно что-то упустить.
Кстати, заметил два дубликата в списке по относительному рейтингу: «Про системного администратора, обыски...» и «Русский н##бизнес».DmitrySpb79 Автор
03.03.2019 14:17Это не ошибка парсинга, эти статьи действительно выкладывались повторно — ID разные, а редирект ведет на ту же самую статью.
Centimo
03.03.2019 16:50Символично, что в топах статей на русском нет ни одной (я не нашёл), которая была бы посвящена алгоритмам, математике и прочим «серьёзным» вещам. Зато есть про фотографии Лоуренс, «IT-эмиграцию» и «русский наебизнес».
В то же время на английском есть про фильтры Калмана и каринг в C++14, хотя статьи на английском появились относительно недавно.
fillpackart
Вот бы в в топе статей была статья про топ статей.