నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

న్యూ ఇయర్ ఒలివియర్ పూర్తయినప్పుడు, నేను ఏమీ చేయలేను, మరియు హబ్రహబ్ర్ (మరియు సంబంధిత ప్లాట్‌ఫారమ్‌లు) నుండి అన్ని కథనాలను నా కంప్యూటర్‌కు డౌన్‌లోడ్ చేసి, అన్వేషించాలని నిర్ణయించుకున్నాను.

అనేక ఆసక్తికరమైన కథనాలు వచ్చాయి. వాటిలో మొదటిది సైట్ యొక్క ఉనికి యొక్క 12 సంవత్సరాలలో కథనాల ఆకృతి మరియు అంశాల అభివృద్ధి. ఉదాహరణకు, కొన్ని అంశాల డైనమిక్స్ చాలా సూచనాత్మకంగా ఉంటాయి. కొనసాగింపు - కట్ కింద.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

పార్సింగ్ ప్రక్రియ

హబ్ర్ ఎలా అభివృద్ధి చెందిందో అర్థం చేసుకోవడానికి, అతని అన్ని కథనాల ద్వారా వెళ్లి వాటి నుండి మెటా-సమాచారాన్ని సేకరించడం అవసరం (ఉదాహరణకు, తేదీలు). బైపాస్ సులభం, ఎందుకంటే అన్ని కథనాలకు లింక్‌లు "habrahabr.ru/post/337722/" లాగా కనిపిస్తాయి మరియు సంఖ్యలు ఖచ్చితంగా క్రమంలో ఇవ్వబడ్డాయి. చివరి పోస్ట్‌లో 350 వేల కంటే కొంచెం తక్కువ సంఖ్య ఉందని తెలిసి, నేను లూప్‌లో (పైథాన్ కోడ్) సాధ్యమయ్యే అన్ని డాక్యుమెంట్ ఐడిని చూసాను:

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

ఫంక్షన్ download_document సంబంధిత idతో పేజీని లోడ్ చేయడానికి ప్రయత్నిస్తుంది మరియు 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. కాబట్టి యాంటీవైరస్ యొక్క పని చాలా సరిపోతుందని మేము పరిగణించవచ్చు.

"లైవ్" కథనాలు సంభావ్య గరిష్టంలో సగం మాత్రమే - 166307 ముక్కలు. మిగిలిన వాటి గురించి, Habr ఎంపికలను ఇస్తుంది "పేజీ పాతది, తొలగించబడింది లేదా ఉనికిలో లేదు." సరే, ఏదైనా జరగవచ్చు.

కథనాల అప్‌లోడ్ తర్వాత సాంకేతిక పని జరిగింది: ఉదాహరణకు, ప్రచురణ తేదీలను "'21 డిసెంబర్ 2006 10:47 am" ఫార్మాట్ నుండి ప్రామాణికంగా మార్చాలి datetime, మరియు "12,8k" వీక్షణలు - 12800లో. ఈ దశలో, మరికొన్ని సంఘటనలు బయటపడ్డాయి. అత్యంత హాస్యాస్పదమైనది ఓట్ల గణనలు మరియు డేటా రకాలతో సంబంధం కలిగి ఉంటుంది: కొన్ని పాత పోస్ట్‌లు పూర్ణాంక ఓవర్‌ఫ్లో ఉన్నాయి మరియు ఒక్కొక్కటి 65535 ఓట్లను పొందాయి.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

ఫలితంగా, వ్యాసాల పాఠాలు (చిత్రాలు లేకుండా) నాకు 1.5 గిగాబైట్‌లు, మెటా-సమాచారంతో వ్యాఖ్యలు - మరో 3, మరియు సుమారు వంద మెగాబైట్లు - కథనాల గురించి మెటా-సమాచారం. ఇది పూర్తిగా RAMలో ఉంచబడుతుంది, ఇది నాకు ఆనందకరమైన ఆశ్చర్యాన్ని కలిగించింది.

నేను వ్యాసాల విశ్లేషణను పాఠాల నుండి కాకుండా మెటా-సమాచారం నుండి ప్రారంభించాను: తేదీలు, ట్యాగ్‌లు, హబ్‌లు, వీక్షణలు మరియు ఇష్టాలు. ఆమె చాలా చెప్పగలదని తేలింది.

హబ్రహబ్ర్ అభివృద్ధి పోకడలు

సైట్‌లోని కథనాలు 2006 నుండి ప్రచురించబడ్డాయి; అత్యంత తీవ్రంగా - 2008-2016లో.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

ఈ కథనాలు వేర్వేరు సమయాల్లో ఎంత చురుకుగా చదివాయో అంచనా వేయడం అంత సులభం కాదు. 2012 మరియు అంతకంటే తక్కువ వయస్సు గల టెక్స్ట్‌లు ఎక్కువ కామెంట్‌లు మరియు రేటింగ్‌లను అందుకున్నాయి, అయితే కొత్త టెక్స్ట్‌లకు ఎక్కువ వీక్షణలు మరియు బుక్‌మార్క్‌లు ఉన్నాయి. ఈ కొలమానాలు 2015లో ఒక్కసారి మాత్రమే అదే విధంగా ప్రవర్తించాయి (సగానికి తగ్గించబడ్డాయి). బహుశా, ఆర్థిక మరియు రాజకీయ సంక్షోభ పరిస్థితిలో, పాఠకుల దృష్టి IT బ్లాగుల నుండి మరింత బాధాకరమైన సమస్యలకు మారింది.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

కథనాలతో పాటు, నేను వారికి మరిన్ని వ్యాఖ్యలను డౌన్‌లోడ్ చేసాను. 6 మిలియన్ వ్యాఖ్యలు ఉన్నాయి, అయినప్పటికీ, వాటిలో 240 వేల నిషేధించబడ్డాయి ("ఒక UFO ఎగిరి ఈ శాసనాన్ని ఇక్కడ ప్రచురించింది"). వ్యాఖ్యల యొక్క ఉపయోగకరమైన లక్షణం ఏమిటంటే వాటికి టైమ్ స్టాంప్ ఉంటుంది. వ్యాఖ్యల సమయాన్ని అధ్యయనం చేయడం ద్వారా, కథనాలను ఎప్పుడు చదవాలో మీరు స్థూలంగా అర్థం చేసుకోవచ్చు.

చాలా వ్యాసాలు ఉదయం 10 నుండి రాత్రి 20 గంటల వరకు ఎక్కడో వ్రాసినవి మరియు వ్యాఖ్యానించబడినవి అని తేలింది, అనగా. ఒక సాధారణ మాస్కో పని రోజున. వృత్తిపరమైన ప్రయోజనాల కోసం హబ్ర్ చదవబడిందని మరియు పనిని వాయిదా వేయడానికి ఇది మంచి మార్గం అని దీని అర్థం. మార్గం ద్వారా, రోజు సమయం యొక్క ఈ పంపిణీ హబ్ర్ యొక్క పునాది నుండి నేటి వరకు స్థిరంగా ఉంది.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

అయితే, వ్యాఖ్య టైమ్‌స్టాంప్ యొక్క ప్రధాన ప్రయోజనం రోజు సమయం కాదు, కానీ వ్యాసం యొక్క "యాక్టివ్ లైఫ్" వ్యవధి. వ్యాసం ప్రచురణ నుండి దాని వ్యాఖ్య వరకు సమయం ఎలా పంపిణీ చేయబడుతుందో నేను లెక్కించాను. ఇప్పుడు మధ్యస్థ వ్యాఖ్య (గ్రీన్ లైన్) సుమారు 20 గంటల్లో వస్తుంది, అనగా. ప్రచురణ తర్వాత మొదటి రోజు, సగటున, వ్యాసంపై అన్ని వ్యాఖ్యలలో సగం కంటే కొంచెం ఎక్కువ మిగిలి ఉన్నాయి. మరియు రెండు రోజుల్లో వారు అన్ని వ్యాఖ్యలలో 75% వదిలివేస్తారు. అదే సమయంలో, మునుపటి కథనాలు మరింత వేగంగా చదవబడ్డాయి - ఉదాహరణకు, 2010లో, మొదటి 6 గంటల్లో సగం వ్యాఖ్యలు వచ్చాయి.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

కామెంట్‌లు పొడిగించడం నాకు ఆశ్చర్యం కలిగించింది: హబ్ర్ జీవితకాలంలో వ్యాఖ్యలోని అక్షరాల సగటు సంఖ్య దాదాపు రెట్టింపు అయింది!

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

వ్యాఖ్యల కంటే సులువైన ఫీడ్‌బ్యాక్ ఓట్లు. అనేక ఇతర వనరుల మాదిరిగా కాకుండా, హబ్రేలో మీరు ప్లస్‌లను మాత్రమే కాకుండా, మైనస్‌లను కూడా ఉంచవచ్చు. అయితే, పాఠకులు చివరి అవకాశాన్ని అంత తరచుగా ఉపయోగించరు: ప్రస్తుత అయిష్టాల వాటా మొత్తం పోలైన ఓట్లలో దాదాపు 15%. ఎక్కువ ఉండేవి, కానీ కాలక్రమేణా, పాఠకులు దయగా మారారు.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

కాలానుగుణంగా గ్రంథాలు మారాయి. ఉదాహరణకు, టెక్స్ట్ యొక్క సాధారణ పొడవు సంక్షోభాలు ఉన్నప్పటికీ, సైట్ ప్రారంభించినప్పటి నుండి స్థిరంగా పెరగడం ఆగదు. ఒక దశాబ్దంలో, గ్రంథాలు దాదాపు పది రెట్లు ఎక్కువయ్యాయి!

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

గ్రంథాల శైలి (మొదటి ఉజ్జాయింపుకు) కూడా మార్చబడింది. హబ్ర్ ఉనికిలో ఉన్న మొదటి సంవత్సరాల్లో, ఉదాహరణకు, టెక్స్ట్‌లలో కోడ్ మరియు సంఖ్యల వాటా పెరిగింది:

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

సైట్ యొక్క మొత్తం డైనమిక్స్‌ను అర్థం చేసుకున్న తర్వాత, వివిధ అంశాల యొక్క ప్రజాదరణ ఎలా మారిందో కొలవాలని నిర్ణయించుకున్నాను. టెక్స్ట్‌ల నుండి టాపిక్‌లు స్వయంచాలకంగా ఎంచుకోబడతాయి, కానీ స్టార్టర్‌ల కోసం, మీరు చక్రాన్ని తిరిగి ఆవిష్కరించలేరు, కానీ ప్రతి కథనం యొక్క రచయితలు అతికించిన రెడీమేడ్ ట్యాగ్‌లను ఉపయోగించండి. నేను చార్ట్‌లో నాలుగు సాధారణ ట్రెండ్‌లను గీసాను. "గూగుల్" థీమ్ ప్రారంభంలో ఆధిపత్యం చెలాయించింది (బహుశా ప్రధానంగా SEO కారణంగా), కానీ సంవత్సరాలుగా బరువు కోల్పోతోంది. జావాస్క్రిప్ట్ ఒక ప్రసిద్ధ అంశం మరియు నెమ్మదిగా అభివృద్ధి చెందుతూనే ఉంది, అయితే ఇటీవలి సంవత్సరాలలో మాత్రమే మెషిన్ లెర్నింగ్ వేగంగా ప్రజాదరణ పొందడం ప్రారంభించింది. మరోవైపు Linux, దశాబ్దం పొడవునా సమానంగా సంబంధితంగా ఉంది.

నేను Habr, పార్ట్ 1: ట్రెండ్‌లను ఎలా అన్వయించాను

వాస్తవానికి, ఏ అంశాలు ఎక్కువ పాఠకుల కార్యకలాపాలను ఆకర్షిస్తాయి అనే దానిపై నాకు ఆసక్తి పెరిగింది. నేను ప్రతి అంశంలో వీక్షణలు, ఓట్లు మరియు వ్యాఖ్యల మధ్యస్థ సంఖ్యను లెక్కించాను. ఏమి జరిగిందో ఇక్కడ ఉంది:

  • ఎక్కువగా వీక్షించిన అంశాలు: arduino, వెబ్ డిజైన్, వెబ్ డెవలప్‌మెంట్, డైజెస్ట్, లింక్‌లు, css, html, html5, nginx, అల్గోరిథంలు.
  • అత్యంత "ఇష్టపడిన" అంశాలు: vkontakte, హాస్యం, j క్వెరీ, ఒపెరా, c, html, వెబ్ అభివృద్ధి, html5, css, వెబ్ డిజైన్.
  • ఎక్కువగా చర్చించబడిన అంశాలు: ఒపెరా, స్కైప్, ఫ్రీలాన్స్, vkontakte, ubuntu, work, nokia, nginx, arduino, firefox.

అలాగే, నేను టాపిక్‌లను పోల్చి చూస్తున్నాను కాబట్టి, మీరు వాటిని ఫ్రీక్వెన్సీ ద్వారా ర్యాంక్ చేయవచ్చు (మరియు ఫలితాలను పోల్చండి 2013 నుండి ఇదే విధమైన కథనం).

  • Habr ఉనికిలో ఉన్న అన్ని సంవత్సరాలలో, Google, Android, javascript, microsoft, linux, php, apple, java, python, ప్రోగ్రామింగ్, స్టార్టప్‌లు, డెవలప్‌మెంట్, ios, స్టార్టప్, సోషల్ నెట్‌వర్క్‌లు అత్యంత ప్రజాదరణ పొందిన ట్యాగ్‌లు (అవరోహణ క్రమంలో)
  • 2017లో, జావాస్క్రిప్ట్, పైథాన్, జావా, ఆండ్రాయిడ్, డెవలప్‌మెంట్, లైనక్స్, సి++, ప్రోగ్రామింగ్, php, c#, ios, మెషిన్ లెర్నింగ్, ఇన్ఫర్మేషన్ సెక్యూరిటీ, మైక్రోసాఫ్ట్, రియాక్ట్ వంటివి అత్యంత ప్రాచుర్యం పొందాయి.

ఈ రేటింగ్‌లను పోల్చినప్పుడు, ఉదాహరణకు, పైథాన్ యొక్క విజయవంతమైన మార్చ్ మరియు php యొక్క విలుప్తత లేదా స్టార్టప్ టాపిక్‌ల "సూర్యాస్తమయం" మరియు మెషిన్ లెర్నింగ్ యొక్క పెరుగుదలపై శ్రద్ధ చూపవచ్చు.

హబ్రేలోని అన్ని ట్యాగ్‌లు అటువంటి స్పష్టమైన నేపథ్య రంగును కలిగి ఉండవు. ఉదాహరణకు, ఒకసారి మాత్రమే కలుసుకున్న డజను ట్యాగ్‌లు ఇక్కడ ఉన్నాయి, కానీ నాకు ఫన్నీగా అనిపించాయి. కాబట్టి: "ఆలోచన పురోగతికి చోదక శక్తి", "ఫ్లాపీ ఇమేజ్ నుండి బూట్", "అయోవా స్టేట్", "డ్రామా", "సూపరలేష్", "స్టీమ్ ఇంజన్", "శనివారం చేయవలసినవి", "నా దగ్గర ఉన్నాయి మాంసం గ్రైండర్‌లో నక్క", "ఇది ఎప్పటిలాగే మారింది", "మేము ఫన్నీ ట్యాగ్‌లతో ముందుకు రాలేకపోయాము". అటువంటి కథనాల విషయాన్ని గుర్తించడానికి, ట్యాగ్‌లు సరిపోవు - మీరు వ్యాసాల పాఠాలపై నేపథ్య మోడలింగ్‌ను నిర్వహించాలి.

వ్యాసాల కంటెంట్ యొక్క మరింత వివరణాత్మక విశ్లేషణ తదుపరి పోస్ట్‌లో ఉంటుంది. ముందుగా, నేను దాని కంటెంట్ ఆధారంగా కథనం కోసం పేజీ వీక్షణల సంఖ్యను అంచనా వేసే మోడల్‌ను రూపొందించబోతున్నాను. రెండవది, హబ్ర్ రచయితల మాదిరిగానే పాఠాలను రూపొందించడానికి నేను న్యూరల్ నెట్‌వర్క్‌కు నేర్పించాలనుకుంటున్నాను. కాబట్టి సభ్యత్వం పొందండి 🙂

PS మరియు ఇక్కడ బీప్ ఉంది డేటాసెట్.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి