Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Жаңы жылдык Оливье бүткөндө, менде эч нерсе жок болчу жана мен Хабрахабрдан (жана тиешелүү платформалардан) бардык макалаларды компьютериме жүктөп алып, изилдөөнү чечтим.

Бир нече кызыктуу окуялар болду. Алардын биринчиси – сайттын 12 жыл аралыгындагы макалалардын форматын жана темаларын иштеп чыгуу. Мисалы, кээ бир темалардын динамикасы бир топ көрсөткүч болуп саналат. Уландысы - кесилген асты.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Талдоо процесси

Хабрдын кантип өнүгүп жатканын түшүнүү үчүн анын бардык макалаларын карап чыгып, алардан мета-маалыматтарды (мисалы, даталарды) алуу керек болчу. Айлап өтүү оңой болду, анткени бардык макалаларга шилтемелер "habrahabr.ru/post/337722/" сыяктуу көрүнөт жана сандар ирети менен берилген. Акыркы билдирүүдө 350 миңден бир аз азыраак сан бар экенин билип, мен жөн гана циклде бардык мүмкүн болгон документ идентификаторлорун карап чыктым (Python коду):

import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
    docs = p.map(download_document, np.arange(350000))

милдети download_document тиешелүү идентификатор менен баракты жүктөөгө аракет кылат жана html түзүмүнөн маанилүү маалыматты алууга аракет кылат.

import requests
from bs4 import BeautifulSoup

def download_document(pid):
    """ Download and process a Habr document and its comments """
    # выгрузка документа
    r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
    # парсинг документа
    soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
    doc = {}
    doc['id'] = pid
    if not soup.find("span", {"class": "post__title-text"}):
        # такое бывает, если статья не существовала или удалена
        doc['status'] = 'title_not_found'
    else:
        doc['status'] = 'ok'
        doc['title'] = soup.find("span", {"class": "post__title-text"}).text
        doc['text'] = soup.find("div", {"class": "post__text"}).text
        doc['time'] = soup.find("span", {"class": "post__time"}).text
        # create other fields: hubs, tags, views, comments, votes, etc.
        # ...
    # сохранение результата в отдельный файл
    fname = r'files/' + str(pid) + '.pkl'
    with open(fname, 'wb') as f:
        pickle.dump(doc, f)

Талдоо процессинде мен бир нече жаңы нерселерди ачтым.

Биринчиден, алар процессордогу өзөктөрдөн көбүрөөк процесстерди түзүү пайдасыз деп айтышат. Бирок менин учурда, чектөөчү ресурс процессор эмес, тармак экени белгилүү болду жана 100 процесс 4 же, айталы, 20га караганда тезирээк иштейт.

Экинчиден, кээ бир посттордо өзгөчө белгилердин айкалышы болгон - мисалы, "%&#@" сыяктуу эвфемизмдер. Ошол экен html.parser, мен биринчи колдонгон, айкалыштырууга жооп берет &# аны html объектинин башталышы деп эсептесек, азаптуу. Мен буга чейин кара магия кылам деп жаткам, бирок форум жөн гана талдоочуну өзгөртүүнү сунуштады.

Үчүнчүдөн, үчөөнөн башка бардык басылмаларды түшүрүүгө жетиштим. 65927, 162075 жана 275987 номерлүү документтер менин антивирусум тарабынан заматта жок кылынды. Булар, тиешелүүлүгүнө жараша, зыяндуу pdf жүктөөчү JavaScript чынжырчасы, браузердин плагиндеринин топтому түрүндөгү SMS ransomware жана iPhone телефондорун кайра жүктөөгө жөнөтүүчү CrashSafari.com сайты жөнүндө макалалар. Антивирус кийинчерээк, системаны скандоо учурунда дагы бир макаланы тапты: үй жаныбарлары дүкөнүнүн веб-сайтында криптовалютаны казып алуу үчүн колдонуучунун процессорун колдонгон скрипттер жөнүндө 338586 жайгаштырыңыз. Ошентип, антивирустун иштеши жетиштүү деп эсептей алабыз.

"Live" макалалар мүмкүн болгон максимум жарымы гана болуп чыкты - 166307 даана. Калгандары тууралуу Хабр "барак эскирген, жок кылынган же такыр жок" деген варианттарды берет. Ооба, баары болушу мүмкүн.

Макалаларды жүктөө техникалык иштер менен коштолду: мисалы, жарыялоо даталары "'21-декабрь 2006-жыл, саат 10:47" форматынан стандартка которулушу керек болчу. datetime, жана "12,8k" көрүүлөр - 12800. Бул этапта, дагы бир нече окуялар чыкты. Эң күлкүлүүсү добуштарды эсептөө жана маалыматтардын түрлөрү менен байланыштуу: кээ бир эски посттордун ар бири 65535 добушка ээ болгон.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Натыйжада, макалалардын тексттери (сүрөтсүз) мага 1.5 гигабайт, мета-маалыматтар менен комментарийлер - дагы 3, ал эми жүзгө жакын мегабайт - макалалар жөнүндө мета-маалымат алып келди. Бул толугу менен RAMда сакталышы мүмкүн, бул мен үчүн жагымдуу сюрприз болду.

Мен макалаларды талдоону тексттердин өзүнөн эмес, мета-маалыматтардан баштадым: даталар, тегдер, хабтар, көрүүлөр жана жактыруулар. Көрсө, ал көп нерсени айта алат экен.

Habrahabr өнүгүү тенденциялары

Сайттагы макалалар 2006-жылдан бери жарыяланып келет; эң интенсивдүү - 2008-2016-жылдары.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Бул макалалар ар кайсы убакта канчалык активдүү окулганына баа берүү оңой эмес. 2012-жылдагы жана андан кичирээк тексттер көбүрөөк комментарийлерди жана рейтингдерди алышты, бирок жаңыраак тексттер көбүрөөк көрүүлөр менен кыстармаларга ээ. Бул көрсөткүчтөр 2015-жылы бир гана жолу ушундай болгон (эки эсеге кыскарган). Балким, экономикалык жана саясий кризистин шартында окурмандардын көңүлү IT-блогдордон бир топ оорулуу маселелерге бурулгандыр.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Макалалардан тышкары, мен аларга дагы комментарийлерди жүктөдүм. 6 миллион комментарий бар болчу, бирок алардын 240 миңине тыюу салынган («НЛО учуп келип, бул жазууну ушул жерде жарыялаган»). Комментарийлердин пайдалуу өзгөчөлүгү - аларда убакыт белгиси бар. Комментарийлердин убактысын изилдөө менен, сиз макалалардын качан окулганын болжол менен түшүнө аласыз.

Көрсө, макалалардын көбү бир жерде эртең мененки саат 10дон кечки саат 20га чейин жазылып да, комментарий да болот, б.а. Москванын кадимки жумушчу күнү. Бул Хабр профессионалдык максатта окулат дегенди билдириши мүмкүн жана бул жумушта кийинкиге калтыруунун жакшы жолу. Айтмакчы, сутканын убакытынын мындай бөлүштүрүлүшү Хабрдын түптөлгөндөн баштап бүгүнкү күнгө чейин туруктуу.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Бирок, комментарий убакыт белгисинин негизги артыкчылыгы - бул күндүн убактысы эмес, макаланын "активдүү жашоосунун" узактыгы. Макала жарыялангандан баштап комментарийге чейин убакыт кандай бөлүштүрүлгөнүн эсептеп чыктым. Көрсө, азыр медианалык комментарий (жашыл сызык) болжол менен 20 саатта келет, б.а. жарыялангандан кийин биринчи күнү, орто эсеп менен, макала боюнча бардык комментарийлердин жарымынан бир аз көбү калган. Ал эми эки күндүн ичинде алар бардык комментарийлердин 75% калтырышат. Ошол эле учурда мурунку макалалар дагы тезирээк окулчу – мисалы, 2010-жылы комментарийлердин жарымы алгачкы 6 саатта келген.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Комментарийлердин узарышы мен үчүн таң калыштуу болду: комментарийдеги каармандардын орточо саны Хабрдын өмүр бою дээрлик эки эсеге көбөйдү!

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Пикирлерге караганда добуш берүү оңой. Башка көптөгөн ресурстардан айырмаланып, Habréде сиз плюстарды гана эмес, минустарды да кое аласыз. Бирок, окурмандар акыркы мүмкүнчүлүктү көп колдонушпайт: азыркы дислайктардын үлүшү бардык берилген добуштардын болжол менен 15% түзөт. Мурда көп болчу, бирок убакыттын өтүшү менен окурмандар боорукер болуп калышты.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Тексттердин өзү убакыттын өтүшү менен өзгөрдү. Мисалы, тексттин типтүү узундугу кризистерге карабастан, сайт ишке киргенден баштап туруктуу өсүүнү токтотпойт. Он жылдын ичинде тексттер дээрлик он эсе узарды!

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Тексттердин стили (биринчи жакындоо) да өзгөргөн. Хабрдын алгачкы жылдарында, мисалы, тексттердеги код жана сандардын үлүшү көбөйдү:

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Сайттын жалпы динамикасын түшүнгөндөн кийин, мен ар кандай темалардын популярдуулугу кандайча өзгөргөнүн өлчөөнү чечтим. Темалар тексттерден автоматтык түрдө тандалып алынышы мүмкүн, бирок башталгычтар үчүн сиз дөңгөлөктү кайра ойлоп таба албайсыз, бирок ар бир макаланын авторлору тарабынан коюлган даяр тегдерди колдонуңуз. Мен диаграммада төрт типтүү тренддерди тарттым. "Google" темасы башында үстөмдүк кылган (балким, негизинен SEO менен байланыштуу), бирок жылдар бою салмагын жоготуп келет. Javascript популярдуу тема болгон жана акырындык менен өсүп жатат, бирок машина үйрөнүү акыркы жылдары гана тез популярдуулукка ээ боло баштады. Linux, экинчи жагынан, он жыл бою бирдей актуалдуу бойдон калууда.

Мен Хабрды кантип талдадым, 1-бөлүк: тенденциялар

Албетте, окурмандардын активдүүлүгүн кайсы темалар көбүрөөк тартууга кызыкты. Ар бир темадагы көрүүлөрдүн, добуштардын жана комментарийлердин медианалык санын эсептеп чыктым. Бул жерде эмне болду:

  • Эң көп көрүлгөн темалар: arduino, веб дизайн, веб иштеп чыгуу, дайджест, шилтемелер, css, html, html5, nginx, алгоритмдер.
  • Эң көп "жакты" темалар: вконтакте, юмор, jquery, opera, c, html, веб иштеп чыгуу, html5, css, веб дизайн.
  • Эң көп талкууланган темалар: опера, скайп, фриланс, вконтакте, ubuntu, work, nokia, nginx, arduino, firefox.

Баса, мен темаларды салыштырып жаткандыктан, сиз аларды жыштыгы боюнча (жана натыйжаларды 2013-жылдагы окшош макала).

  • Хабрдын бардык жылдарында эң популярдуу тегдер (кемүү тартибинде) google, android, javascript, microsoft, linux, php, apple, java, python, программалоо, стартаптар, иштеп чыгуулар, iOS, стартаптар, социалдык тармактар.
  • 2017-жылы эң популярдуу JavaScript, python, java, android, developing, linux, c++, programming, php, c#, ios, machine learning, information security, microsoft, react болду.

Бул рейтингдерди салыштырганда, мисалы, Pythonдун жеңиштүү жүрүшүнө жана phpдин жок болушуна, же стартап темаларынын “күн батканына” жана машина үйрөнүүнүн өсүшүнө көңүл бурууга болот.

Habréдеги бардык тегдер мындай ачык-айкын тематикалык түскө ээ эмес. Мисалы, бул жерде бир гана жолу жолуккан, бирок мага күлкүлүү көрүнгөн ондогон теги бар. Ошентип: "идея - прогресстин кыймылдаткычы", "дискеттин сүрөтүнөн жүктөө", "Айова штаты", "драма", "супералеш", "буу машинасы", "ишембиде боло турган нерселер", "менде эт туурагычтагы түлкү», «баягыдай болуп чыкты», «күлкүлүү биркаларды ойлоп табуу мүмкүн эмес». Мындай макалалардын темасын аныктоо үчүн теги жетишсиз - макалалардын тексттери боюнча тематикалык моделдөө жүргүзүүгө туура келет.

Макалалардын мазмунуна кененирээк талдоо кийинки постто болот. Биринчиден, мен анын мазмунуна жараша макаланын беттин көрүүлөрүнүн санын болжолдогон моделди курайын деп жатам. Экинчиден, мен нейрондук тармакты Хабрдын авторлору сыяктуу стилде тексттерди түзүүнү үйрөткүм келет. Андыктан жазылыңыз 🙂

PS Жана бул жерде сигнал угулат маалымат топтому.

Source: www.habr.com

Комментарий кошуу