Com vaig analitzar Habr, part 1: tendències

Quan va acabar l'Olivier de Cap d'Any, no tenia res a fer, i vaig decidir descarregar tots els articles d'Habrahabr (i plataformes relacionades) al meu ordinador i investigar.

Van resultar ser diverses històries interessants. El primer d'ells és el desenvolupament del format i els temes dels articles al llarg dels 12 anys d'existència del lloc. Per exemple, la dinàmica d'alguns temes és força indicativa. Continua sota el tall.

Com vaig analitzar Habr, part 1: tendències

Procés d'anàlisi

Per entendre com s'ha desenvolupat Habr, calia revisar tots els seus articles i extreure'n metainformació (per exemple, dates). El bypass va ser fàcil, perquè els enllaços a tots els articles semblen "habrahabr.ru/post/337722/", i els números s'especifiquen estrictament en ordre. Sabent que l'última publicació té un nombre lleugerament inferior a 350 mil, simplement vaig revisar tots els identificadors de documents possibles en un bucle (codi Python):

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

Funció download_document intenta carregar la pàgina amb l'identificador corresponent i intenta extreure informació significativa de l'estructura 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)

Durant el procés d'anàlisi he descobert diverses coses noves.

En primer lloc, diuen que crear més processos que nuclis al processador és inútil. Però en el meu cas, va resultar que el recurs limitant no és el processador, sinó la xarxa, i 100 processos funcionen més ràpid que 4 o, per exemple, 20.

En segon lloc, en algunes publicacions hi havia combinacions de caràcters especials, per exemple, eufemismes com "%&#@". Va resultar que html.parser, que vaig utilitzar primer, reacciona a la combinació &# dolorós, considerant-ho l'inici de l'entitat html. Estava a punt de fer màgia negra, però el fòrum em va suggerir que simplement podia canviar l'analitzador.

En tercer lloc, vaig poder descarregar totes les publicacions menys tres. Els documents numerats 65927, 162075 i 275987 van ser esborrats instantàniament pel meu antivirus. Es tracta d'articles respectivament sobre una cadena de javascripts que descarrega un pdf maliciós, un ransomware d'SMS en forma de conjunt de connectors per a navegadors i el lloc CrashSafari.com, que envia iPhones a reiniciar-se. L'antivirus va descobrir un altre article més tard, durant una exploració del sistema: publica 338586 sobre scripts al lloc web d'una botiga de mascotes que utilitzen el processador de l'usuari per extraure criptomoneda. Així que podem considerar que el treball de l'antivirus és bastant adequat.

Només hi havia la meitat del màxim potencial d'articles "en directe": 166307 peces. Sobre la resta, Habr ofereix les opcions "la pàgina està obsoleta, s'ha suprimit o no existia en absolut". Bé, pot passar qualsevol cosa.

La pujada dels articles va anar seguida d'un treball tècnic: per exemple, les dates de publicació s'havien de convertir del format "'21 de desembre de 2006 a les 10:47" a l'estàndard. datetime, i visualitzacions de "12,8 k" - a les 12800. En aquesta etapa, van sorgir diversos incidents més. El més divertit està relacionat amb el recompte de vots i els tipus de dades: algunes publicacions antigues tenien un desbordament int i van rebre 65535 vots.

Com vaig analitzar Habr, part 1: tendències

Com a resultat, els textos dels articles (sense imatges) em van portar 1.5 gigabytes, els comentaris amb metainformació -uns altres 3, i uns cent megabytes- metainformació sobre els articles. Això es pot mantenir completament a la memòria RAM, la qual cosa va ser una sorpresa agradable per a mi.

Vaig començar a analitzar articles no amb els textos en si, sinó amb metainformació: dates, etiquetes, hubs, vistes i "m'agrada". Va resultar que ella també podia dir moltes coses.

Tendències de desenvolupament de Habrahabr

Els articles del lloc es publiquen des del 2006; amb més intensitat el 2008-2016.

Com vaig analitzar Habr, part 1: tendències

La lectura activa d'aquests articles en diferents moments no és tan fàcil d'avaluar. Els textos del 2012 i els més joves van rebre comentaris i puntuacions més actius, però els textos més nous tenen més visualitzacions i adreces d'interès. Aquestes mètriques es van comportar de la mateixa manera (es van reduir a la meitat) només una vegada, el 2015. Potser, en una situació de crisi econòmica i política, l'atenció dels lectors s'ha desplaçat dels blocs informàtics a temes més dolorosos.

Com vaig analitzar Habr, part 1: tendències

A més dels propis articles, també els he baixat comentaris. Hi va haver 6 milions de comentaris, però, 240 mil d'ells van ser prohibits ("un OVNI va entrar i va publicar aquesta inscripció aquí"). Una característica útil dels comentaris és que tenen una marca de temps. Si estudieu el moment dels comentaris, podeu entendre aproximadament quan es llegeixen els articles.

Va resultar que la majoria d'articles estan escrits i comentats entre les 10 i les 20 hores, és a dir. en un dia laboral típic de Moscou. Això pot significar que Habr es llegeix amb finalitats professionals, i que és una bona manera de procrastinar a la feina. Per cert, aquesta distribució de l'hora del dia ha estat estable des de la mateixa fundació d'Habr fins a l'actualitat.

Com vaig analitzar Habr, part 1: tendències

Tanmateix, el principal avantatge d'una marca de temps de comentari no és l'hora del dia, sinó la "vida activa" de l'article. Vaig calcular com es distribuïa el temps des de la publicació d'un article fins al seu comentari. Va resultar que ara el comentari mitjà (línia verda) arriba en unes 20 hores, és a dir. El primer dia després de la publicació, de mitjana, es deixen una mica més de la meitat de tots els comentaris d'un article. I en dos dies, es deixa el 75% de tots els comentaris. A més, els articles anteriors es van llegir encara més ràpidament; per exemple, el 2010, la meitat dels comentaris van arribar en les primeres 6 hores.

Com vaig analitzar Habr, part 1: tendències

Em va sorprendre que els comentaris s'hagin fet més llargs: el nombre mitjà de caràcters d'un comentari gairebé s'ha duplicat durant l'existència d'Habr!

Com vaig analitzar Habr, part 1: tendències

Els comentaris que són més senzills que els comentaris són vots. A diferència de molts altres recursos, a Habré pots posar no només pros, sinó també contres. No obstant això, els lectors no utilitzen tan sovint aquesta darrera oportunitat: la proporció actual de disgustos és d'aproximadament el 15% de tots els vots emesos. Abans n'hi havia més, però amb el temps els lectors es van anar fent més amables.

Com vaig analitzar Habr, part 1: tendències

Els mateixos textos van canviar amb el temps. Per exemple, la longitud típica del text no ha parat de créixer de manera constant des del llançament del lloc, malgrat les crisis. Al llarg d'una dècada, els textos s'han fet gairebé deu vegades més llargs!

Com vaig analitzar Habr, part 1: tendències

L'estil dels textos (en una primera aproximació) també va canviar. Durant els primers anys d'existència d'Habr, per exemple, la proporció de codi i números en els textos va augmentar:

Com vaig analitzar Habr, part 1: tendències

Després d'haver entès la dinàmica general del lloc, vaig decidir mesurar com va canviar la popularitat de diversos temes. Els temes es poden identificar automàticament a partir dels textos, però per començar, no es pot reinventar la roda, sinó utilitzar etiquetes ja fetes afegides pels autors de cada article. He mostrat quatre tendències típiques al gràfic. El tema "Google" va dominar inicialment (potser principalment per l'optimització de SEO), però va perdre pes cada any. Javascript ha estat un tema popular i ho continua sent, però l'aprenentatge automàtic només ha començat a guanyar popularitat ràpidament en els últims anys. Linux segueix sent igualment rellevant al llarg de la dècada.

Com vaig analitzar Habr, part 1: tendències

Per descomptat, em vaig interessar per quins temes atreuen més activitat lectora. He calculat el nombre mitjà de visualitzacions, vots i comentaris per a cada tema. Això és el que va passar:

  • Temes més vistos: arduino, disseny web, desenvolupament web, resum, enllaços, css, html, html5, nginx, algorismes.
  • Els temes més "agradats": VKontakte, humor, jquery, òpera, c, html, desenvolupament web, html5, css, disseny web.
  • Els temes més comentats: òpera, skype, autònom, VKontakte, ubuntu, treball, nokia, nginx, arduino, firefox.

Per cert, com que estic comparant temes, puc classificar-los per freqüència (i comparar els resultats amb article similar del 2013).

  • Al llarg dels anys d'existència d'Habr, les etiquetes més populars (en ordre descendent) han estat google, android, javascript, microsoft, linux, php, apple, java, python, programació, startups, desenvolupament, ios, startup, xarxes socials
  • El 2017, els més populars van ser javascript, python, java, android, desenvolupament, linux, c++, programació, php, c#, ios, aprenentatge automàtic, seguretat de la informació, microsoft, react

En comparar aquestes valoracions, podeu parar atenció, per exemple, a la marxa victoriosa de Python i l'extinció de php, o al "declivi" del tema d'inici i l'auge de l'aprenentatge automàtic.

No totes les etiquetes de Habré tenen un color temàtic tan evident. Aquí, per exemple, hi ha una dotzena d'etiquetes que només van aparèixer una vegada, però que em van semblar gracioses. Així: "la idea és el motor del progrés", "arrencada des d'una imatge de disquet", "l'estat d'Iowa", "drama", "superalesha", "màquina de vapor", "què fer dissabte", "jo tenir una guineu al molinet", "i va resultar com sempre", "no hem pogut crear etiquetes divertides". Per determinar el tema d'aquests articles, no n'hi ha prou amb les etiquetes: haureu de realitzar un model de tema sobre els textos dels articles.

Una anàlisi més detallada del contingut dels articles es farà a la propera entrada. En primer lloc, construiré un model que prediu el nombre de visualitzacions que rebrà un article en funció del seu contingut. En segon lloc, m'agradaria ensenyar a la xarxa neuronal a generar textos del mateix estil que els autors d'Habr. Així que subscriu-te :)

PS I aquí està, gravat conjunt de dades.

Font: www.habr.com

Afegeix comentari