Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Yeni il Olivier başa çatdıqda, mənim heç bir işim yox idi və Habrahabr-dan (və əlaqəli platformalardan) bütün məqalələri kompüterimə endirmək və araşdırmaq qərarına gəldim.

Bir neçə maraqlı hekayə var idi. Bunlardan birincisi saytın mövcud olduğu 12 il ərzində yazıların formatı və mövzularının hazırlanmasıdır. Məsələn, bəzi mövzuların dinamikası kifayət qədər göstəricidir. Davamı - kəsik altında.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Təhlil prosesi

Habrın necə inkişaf etdiyini başa düşmək üçün onun bütün məqalələrini nəzərdən keçirmək və onlardan meta-məlumat çıxarmaq lazım idi (məsələn, tarixlər). Yan keçid asan idi, çünki bütün məqalələrə keçidlər "habrahabr.ru/post/337722/" kimi görünür və nömrələr ciddi şəkildə verilir. Son yazının 350 mindən bir qədər az olduğunu bilərək, mən sadəcə bir döngədə bütün mümkün sənəd identifikatorundan keçdim (Python kodu):

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

Function download_document səhifəni müvafiq id ilə yükləməyə çalışır və html strukturundan mənalı məlumat çıxarmağa çalışır.

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)

Təhlil prosesində bir neçə yeni şey kəşf etdim.

Birincisi, prosessorda nüvələrin sayından daha çox proses yaratmağın faydasız olduğunu söyləyirlər. Amma mənim vəziyyətimdə məlum oldu ki, məhdudlaşdırıcı resurs prosessor deyil, şəbəkədir və 100 proses 4-dən və ya məsələn, 20-dən daha sürətli işləyir.

İkincisi, bəzi yazılarda xüsusi simvolların birləşmələri var idi - məsələn, "%&#@" kimi evfemizmlər. Məlum oldu ki html.parser, ilk istifadə etdiyim birləşməyə reaksiya verir &# html varlığının başlanğıcı olduğunu nəzərə alsaq, ağrılı şəkildə. Mən artıq qara sehrlə məşğul olacaqdım, amma forum təklif etdi ki, sadəcə təhlilçini dəyişə bilərsiniz.

Üçüncüsü, üçdən başqa bütün nəşrləri boşaltmağı bacardım. 65927, 162075 və 275987 nömrəli sənədlər antivirusum tərəfindən dərhal silindi. Bunlar, müvafiq olaraq, zərərli pdf faylı yükləyən javascript zənciri, brauzer plaginləri dəsti şəklində SMS ransomware və iPhone-ları yenidən işə salan CrashSafari.com saytı haqqında məqalələrdir. Antivirus daha sonra, sistem skanı zamanı başqa bir məqalə aşkar etdi: pet mağazasının veb saytında kriptovalyuta əldə etmək üçün istifadəçinin prosessorundan istifadə edən skriptlər haqqında 338586 göndərin. Beləliklə, antivirusun işini kifayət qədər adekvat hesab edə bilərik.

"Canlı" məqalələr potensial maksimumun yalnız yarısı oldu - 166307 ədəd. Qalanları haqqında, Habr "səhifə köhnəlmişdir, silinmişdir və ya ümumiyyətlə mövcud deyil" variantları verir. Yaxşı, hər şey ola bilər.

Məqalələrin yüklənməsi texniki işlərlə izlənildi: məsələn, nəşr tarixləri "21 dekabr 2006-cı il saat 10:47" formatından standarta çevrilməli idi. datetime, və "12,8k" baxış - 12800-də. Bu mərhələdə daha bir neçə insident çıxdı. Ən gülməlisi səslərin sayılması və məlumat növləri ilə bağlıdır: bəzi köhnə yazılarda int daşması olub və hər biri 65535 səs alıb.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Nəticədə məqalələrin mətnləri (şəkilsiz) mənə 1.5 giqabayt, meta-informasiyalı şərhlər - daha 3 və təxminən yüz meqabayt - məqalələr haqqında meta-məlumat aldı. Bu, tamamilə RAM-da saxlanıla bilər, bu mənim üçün xoş sürpriz oldu.

Məqalələrin təhlilinə mətnlərin özündən deyil, meta-məlumatlardan başladım: tarixlər, etiketlər, mərkəzlər, baxışlar və bəyənmələr. Məlum oldu ki, o, çox şey deyə bilir.

Habrahabr İnkişaf Trendləri

Saytda məqalələr 2006-cı ildən dərc olunur; ən intensiv - 2008-2016-cı illərdə.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Bu məqalələrin müxtəlif vaxtlarda nə qədər fəal oxunduğunu qiymətləndirmək o qədər də asan deyil. 2012 və daha gənc mətnlər daha çox şərh və reytinq aldı, lakin yeni mətnlərdə daha çox baxış və əlfəcin var. Bu göstəricilər yalnız bir dəfə, 2015-ci ildə eyni şəkildə davrandı (yarım azaldı). Ola bilsin ki, iqtisadi və siyasi böhran şəraitində oxucuların diqqəti İT bloqlarından daha ağrılı məsələlərə yönəlib.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Məqalələrin özlərinə əlavə olaraq, onlara daha çox şərh yüklədim. 6 milyon şərh var idi, lakin onlardan 240 mini qadağan edildi ("UFO uçdu və bu yazını burada dərc etdi"). Şərhlərin faydalı xüsusiyyəti onların vaxt möhürünün olmasıdır. Şərhlərin vaxtını öyrənməklə, məqalələrin ümumiyyətlə nə vaxt oxunduğunu təxminən başa düşə bilərsiniz.

Məlum oldu ki, yazıların əksəriyyəti səhər saat 10-dan axşam saat 20-ə kimi hardasa həm yazılır, həm də şərh verilir, yəni. tipik bir Moskva iş günündə. Bu, Habrın peşəkar məqsədlər üçün oxunduğu anlamına gələ bilər və bu, işdə süründürməçilik üçün yaxşı bir yoldur. Yeri gəlmişkən, günün vaxtının bu bölgüsü Habrın yaranmasından bu günə qədər sabitdir.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Bununla belə, şərh vaxt damğasının əsas faydası günün vaxtı deyil, məqalənin "aktiv həyat" müddətidir. Məqalənin dərcindən onun şərhinə qədər vaxtın necə bölündüyünü hesablamışam. Məlum oldu ki, indi median şərh (yaşıl xətt) təxminən 20 saat ərzində gəlir, yəni. dərc edildikdən sonra ilk gündə, orta hesabla, məqaləyə dair bütün şərhlərin yarıdan bir qədər çoxu qalır. Və iki gün ərzində bütün şərhlərin 75%-ni buraxırlar. Eyni zamanda, əvvəlki məqalələr daha sürətli oxunurdu - məsələn, 2010-cu ildə şərhlərin yarısı ilk 6 saat ərzində daxil olub.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Şərhlərin uzanması mənim üçün sürpriz oldu: şərhdəki simvolların orta sayı Habrın ömrü boyu demək olar ki, iki dəfə artdı!

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Şərhlərdən daha asan rəy səs verməkdir. Bir çox digər mənbələrdən fərqli olaraq, Habré-də yalnız müsbətləri deyil, həm də mənfi cəhətləri qoya bilərsiniz. Bununla belə, oxucular son fürsətdən o qədər də tez-tez istifadə etmirlər: hazırda bəyənməmələrin payı verilən bütün səslərin təxminən 15%-ni təşkil edir. Əvvəllər daha çox olurdu, amma zaman keçdikcə oxucular daha mehriban olurlar.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Mətnlərin özləri zamanla dəyişib. Məsələn, mətnin tipik uzunluğu, böhranlara baxmayaraq, saytın ilk açılışından davamlı olaraq böyüməsini dayandırmır. On il ərzində mətnlər demək olar ki, on dəfə uzun oldu!

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Mətnlərin üslubu da (ilk təxmini olaraq) dəyişdi. Məsələn, Habrın mövcudluğunun ilk illərində mətnlərdə kod və rəqəmlərin payı artdı:

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Saytın ümumi dinamikasını başa düşdükdən sonra müxtəlif mövzuların populyarlığının necə dəyişdiyini ölçmək qərarına gəldim. Mövzular mətnlərdən avtomatik seçilə bilər, lakin yeni başlayanlar üçün çarxı yenidən kəşf edə bilməzsiniz, ancaq hər məqalənin müəllifləri tərəfindən yapışdırılmış hazır etiketlərdən istifadə edin. Qrafikdə dörd tipik tendensiya çəkmişəm. "Google" mövzusu əvvəlcə üstünlük təşkil edirdi (bəlkə də əsasən SEO ilə əlaqədardır), lakin illər ərzində çəki itirir. Javascript populyar mövzu olub və yavaş-yavaş böyüməyə davam edir, lakin maşın öyrənməsi yalnız son illərdə sürətlə populyarlıq qazanmağa başlayıb. Digər tərəfdən, Linux on il ərzində eyni dərəcədə aktual olaraq qaldı.

Habrı necə təhlil etdim, 1-ci hissə: tendensiyalar

Təbii ki, hansı mövzuların oxucu fəallığını daha çox cəlb etməsi ilə maraqlandım. Hər mövzuda baxışların, səslərin və şərhlərin median sayını hesabladım. Budur, baş verənlər:

  • Ən çox baxılan mövzular: arduino, veb dizayn, veb tərtibat, həzm, linklər, css, html, html5, nginx, alqoritmlər.
  • Ən çox "bəyənən" mövzular: vkontakte, yumor, jquery, opera, c, html, web developer, html5, css, web dizayn.
  • Ən çox müzakirə olunan mövzular: opera, skype, freelance, vkontakte, ubuntu, work, nokia, nginx, arduino, firefox.

Yeri gəlmişkən, mövzuları müqayisə etdiyim üçün siz onları tezliyə görə sıralaya bilərsiniz (və nəticələri 2013-cü ilin oxşar məqaləsi).

  • Habrın mövcud olduğu bütün illər ərzində ən populyar teqlər (azalan qaydada) google, android, javascript, microsoft, linux, php, apple, java, python, proqramlaşdırma, startaplar, inkişaf, ios, startap, sosial şəbəkələrdir.
  • 2017-ci ildə ən populyar olanlar javascript, python, java, android, developer, linux, c++, proqramlaşdırma, php, c#, ios, machine learning, information security, microsoft, react idi.

Bu reytinqləri müqayisə edərkən, məsələn, Python-un qalibiyyət yürüşünə və php-nin yox olmasına, yaxud startap mövzularının “qürubuna” və maşın öyrənməsinin yüksəlişinə diqqət yetirmək olar.

Habré-dəki bütün etiketlərdə belə açıq bir tematik rəng yoxdur. Məsələn, burada yalnız bir dəfə görüşən, lakin mənə gülməli görünən onlarla etiket var. Beləliklə: "ideya tərəqqinin hərəkətverici qüvvəsidir", "disbit təsvirdən çəkmə", "Ayova ştatı", "drama", "superaleş", "buxar maşını", "şənbə günü ediləcək işlər", "mənim var ətçəkəndə tülkü", "hər zaman olduğu kimi çıxdı", "gülməli etiketlər tapa bilmədik". Bu cür məqalələrin mövzusunu müəyyən etmək üçün etiketlər kifayət deyil - məqalələrin mətnləri üzərində tematik modelləşdirmə aparmalı olacaqsınız.

Məqalələrin məzmununun daha ətraflı təhlili növbəti yazıda olacaq. Birincisi, mən məqalənin məzmununa əsasən onun səhifə baxışlarının sayını proqnozlaşdıran bir model quracağam. İkincisi, mən neyron şəbəkəyə Habr müəllifləri ilə eyni üslubda mətnlər yaratmağı öyrətmək istəyirəm. Elə isə abunə olun 🙂

PS Və burada səs siqnalı verilir verilənlər toplusu.

Mənbə: www.habr.com

Добавить комментарий