Çi dikare bi Zanistiya Daneyê re xelet bibe? Komkirina daneyan

Çi dikare bi Zanistiya Daneyê re xelet bibe? Komkirina daneyan
Îro 100500 qursên Zanistiya Danezaniyê hene û ji mêj ve tê zanîn ku di Zanistiya Daneyê de herî zêde drav dikare bi qursên Zanistiya Daneyê were qezenç kirin (çima dema ku hûn dikarin kepçeyan bifroşin dikolin?). Kêmasiya sereke ya van qursan ev e ku têkiliya wan bi xebata rastîn re tune: kes dê daneyên paqij, pêvajoyî di forma hewce de nede we. Û gava ku hûn qursê bihêlin û dest bi çareserkirina pirsgirêkek rastîn bikin, gelek nuwaze derdikevin holê.

Ji ber vê yekê, em li ser bingeha bûyerên rastîn ên ku hatine serê min, rêheval û hevalên min, dest bi rêze notên "Çi dikare bi Zanistiya Daneyê re xelet bibe." Em ê peywirên Zanistiya Daneyên tîpîk bi karanîna mînakên rastîn analîz bikin: ev bi rastî çawa dibe. Ka em îro bi karê berhevkirina daneyan dest pê bikin.

Û gava ku mirov dest bi xebata bi daneyên rastîn dikin, yekem tiştê ku mirov pê dihejîne, bi rastî berhevkirina van daneyên ku ji me re herî têkildar e. Peyama sereke ya vê gotarê:

Em bi rêkûpêk dem, çavkanî û hewildana ku ji bo berhevkirin, paqijkirin û amadekirina daneyan hewce ne kêm dinirxînin.

Û ya herî girîng, em ê nîqaş bikin ka ji bo pêşîgirtina vê yekê çi bikin.

Li gorî texmînên cihêreng, paqijkirin, veguherîn, hilberandina daneyan, endezyariya taybetmendiyê, hwd. 80-90% ji demê digire, û analîz 10-20%, di heman demê de hema hema hemî materyalên perwerdehiyê bi taybetî li ser analîzê disekine.

Werin em di sê versiyonan de pirsgirêkek analîtîk a hêsan wekî mînakek tîpîk binihêrin û bibînin ka "şertên giran" çi ne.

Û wek nimûne, dîsa, em ê guhertoyên wekhev ên karê berhevkirina daneyan û berhevdana civakan ji bo:

  1. Du Reddit subreddits
  2. Du beşên Habrê
  3. Du komên Odnoklassniki

Nêzîkatiya şertî di teoriyê de

Malperê vekin û mînakan bixwînin, heke zelal be, çend demjimêran ji bo xwendinê, çend demjimêran ji bo kodê bi karanîna mînakan û xeletkirinê veqetînin. Ji bo berhevkirinê çend demjimêran zêde bikin. Di rezervan de çend demjimêran bavêjin (duyan zêde bikin û N saetan lê zêde bikin).

Xala sereke: Texmînên demê li ser bingeha texmînan û texmînan li ser wê çendê dirêj dibe.

Pêdivî ye ku meriv analîza demê bi texmînkirina pîvanên jêrîn ji bo pirsgirêka şertê ku li jor hatî destnîşan kirin dest pê bike:

  • Mezinahiya daneyê çi ye û çiqas jê pêdivî ye ku bi fîzîkî were berhev kirin (* li jêr binêre *).
  • Dema berhevkirinê ji bo yek tomar çend e û hûn çiqas li bendê ne ku hûn bikarin ya duyemîn berhev bikin?
  • Kodê binivîsin ku dewletê xilas dike û gava ku (ne heke) her tişt têk diçe, ji nû ve dest pê dike.
  • Fêm bikin ka em hewceyê destûrnameyê ne û dema gihîştina bi API-yê ve destnîşan bikin.
  • Hejmara xeletiyan wekî fonksiyonek tevliheviya daneyê bicîh bikin - ji bo peywirek taybetî binirxînin: avahî, çend veguhertin, çi û çawa derxistin.
  • Çewtiyên torê û pirsgirêkên bi tevgera projeya ne-standard rast bikin.
  • Binirxînin ka fonksiyonên pêwîst di belgeyê de ne û heke na, wê hingê ji bo çareseriyek çawa û çiqas hewce ne.

Ya herî girîng ev e ku ji bo texmînkirina demê - bi rastî hûn hewce ne ku dem û hewldana xwe li ser "vedîtina bi hêz" derbas bikin - tenê wê hingê dê plansaziya we têr be. Ji ber vê yekê, her çi qas ji we tê xwestin ku hûn bibêjin "çiqas dem digire berhevkirina daneyan" - ji xwe re ji bo analîzek pêşîn demek bikirin û li gorî pîvanên rastîn ên pirsgirêkê çiqas dem dê diguhere nîqaş bikin.

Û naha em ê mînakên taybetî destnîşan bikin ku dê pîvanên weha biguhezînin.

Xala sereke: Texmîn li ser vekolînek faktorên sereke yên ku bandorê li çarçove û tevliheviya xebatê dikin bingeh e.

Texmîna-based texmîn nêzîkatiyek baş e dema ku hêmanên fonksiyonel têra xwe piçûk in û ne gelek faktor hene ku dikarin bi girîngî bandorê li sêwirana pirsgirêkê bikin. Lê di rewşa çend pirsgirêkên Daneyên Zanistî de, faktorên weha pir zêde dibin û nêzîkatiyek wusa ne têr dibe.

Berhevdana civakên Reddit

Ka em bi doza herî hêsan dest pê bikin (wek ku paşê xuya dike). Bi gelemperî, ji bo ku em bi tevahî rastdar bin, me rewşek hema hema îdeal heye, bila em navnîşa kontrolkirina tevliheviya xwe kontrol bikin:

  • API-ya paqij, zelal û belgekirî heye.
  • Ew zehf hêsan e û ya herî girîng jî, nîşanek bixweber tê wergirtin.
  • Ð • n, Nûh * de pêça python - bi gelek mînakan.
  • Civakek ku daneyan li ser reddit analîz dike û berhev dike (tevî vîdyoyên YouTube-ê ku rave dike ka meriv çawa pêça python bikar tîne) Bo nimûne.
  • Rêbazên ku em hewce ne bi îhtîmalek mezin di API-yê de hene. Wekî din, kod tevlihev û paqij xuya dike, li jêr mînakek fonksiyonek heye ku şîroveyan li ser postê berhev dike.

def get_comments(submission_id):
    reddit = Reddit(check_for_updates=False, user_agent=AGENT)
    submission = reddit.submission(id=submission_id)
    more_comments = submission.comments.replace_more()
    if more_comments:
        skipped_comments = sum(x.count for x in more_comments)
        logger.debug('Skipped %d MoreComments (%d comments)',
                     len(more_comments), skipped_comments)
    return submission.comments.list()

Ji hatî girtin ev hilbijarkek karûbarên hêsan ên ji bo pêçanê.

Tevî vê rastiyê ku ev rewş çêtirîn e, dîsa jî hêja ye ku çend faktorên girîng ên ji jiyana rast bihesibînin:

  • Sînorên API - em neçar in ku daneyan bi koman bigirin (xew di navbera daxwazan de, hwd.).
  • Dema berhevkirinê - ji bo analîz û berhevdanek bêkêmasî, hûn neçar in ku demek girîng veqetînin tenê ji bo ku spider di nav subreddit de bimeşe.
  • Pêdivî ye ku bot li ser serverek bixebite - hûn nekarin wê tenê li ser laptopa xwe bimeşînin, wê têxin nav çenteya xwe û biçin karsaziya xwe. Ji ber vê yekê min her tişt li ser VPS-ê xebitand. Bi karanîna koda danasînê habrahabr10 hûn dikarin 10% ji lêçûnek din hilînin.
  • Negihîştina fizîkî ya hin daneyan (ew ji rêveberan re xuya dibin an berhevkirina wan pir dijwar e) - divê ev di prensîbê de were hesibandin, ne ku hemî dane di wextê têr de bêne berhev kirin.
  • Çewtiyên torê: Tevnebûn êşek e.
  • Ev daneyên rastîn ên zindî ye - ew qet ne paqij e.

Bê guman, pêdivî ye ku meriv van nuwazeyan di pêşveçûnê de bihewîne. Demjimêr / rojên taybetî bi ezmûna pêşkeftinê an ezmûna ku li ser karên wekhev dixebitin ve girêdayî ye, lêbelê, em dibînin ku li vir peywir bi tenê endezyariyek e û ji bo çareserkirina tevgerên laş hewce nake - her tişt dikare pir baş were nirxandin, bername û kirin.

Berawirdkirina beşên Habrê

Werin em herin ser bûyerek balkêştir û ne hindiktir a berhevdana têl û/an beşên Habrê.

Ka em navnîşa kontrolê ya tevliheviya xwe kontrol bikin - li vir, ji bo ku hûn her xalê fam bikin, hûn ê neçar bin ku piçek li peywirê bixwe û ceribandinê bikin.

  • Di destpêkê de hûn difikirin ku API heye, lê tune. Erê, erê, Habr xwedan API ye, lê ew tenê ji bikarhêneran re negihîje (an jî dibe ku ew bi tevahî nexebite).
  • Dûv re hûn tenê dest bi parkirina html - "daxwazên import" dikin, çi dibe ku xelet bibe?
  • Di heman demê de meriv çawa parsek dike? Nêzîkatiya herî hêsan û pir caran tê bikar anîn dubarekirina li ser nasnameyan e, bala xwe bidin ku ew ne ya herî bikêr e û dê neçar bimîne ku dozên cihêreng bi rê ve bibe - li vir mînakek zencîra nasnameyên rastîn di nav hemî yên heyî de ye.

    Çi dikare bi Zanistiya Daneyê re xelet bibe? Komkirina daneyan
    Ji hatî girtin ev gotar.

  • Daneyên xav ên ku di nav HTML-ê de li ser torê pêçandî ye êşek e. Mînakî, hûn dixwazin nirxa gotarek berhev bikin û hilînin: we puan ji html-ê qut kir û biryar da ku hûn wê wekî hejmarek ji bo pêvajoyek din hilînin: 

    1) int(score) xeletiyek derdixe: ji ber ku li ser Habré minusek heye, wek nimûne, di rêza "–5" de - ev en dash e, ne nîşanek minus e (ji nedîtî ve, rast?), lewra li di hin xalan de min neçar ma ku parserê bi çareseriyek wusa xedar vekim.

    try:
          score_txt = post.find(class_="score").text.replace(u"–","-").replace(u"+","+")
          score = int(score_txt)
          if check_date(date):
            post_score += score
    

    Dibe ku qet tarîx, pluss û kêmasiyan tune be (wek ku em li jor di fonksiyona check_date de dibînin, ev çêbû).

    2) Karakterên taybetî yên nehêle - ew ê werin, hûn hewce ne ku amade bibin.

    3) Struktura li gorî celebê postê diguhere.

    4) Dibe ku postên kevn xwediyê **avahiyek xerîb ** bin.

  • Di bingeh de, hilgirtina xeletiyê û ya ku dibe an na dibe ku were hilanîn û hûn nikanin teqez pêşbînî bikin ka dê çi xelet biçe û wekî din dibe ku avahî çawa be û dê li ku derê têkeve - hûn ê tenê hewl bidin û hesab bikin. xeletiyên ku parser diavêje.
  • Dûv re hûn fêhm dikin ku hûn hewce ne ku hûn di çend mijaran de parsek bikin, wekî din parsek di yek de dê 30+ demjimêran bidomîne (ev bi tenê dema darvekirinê ya parserek yek-têlankirî ya ku berê dixebitî ye, ku radizê û nakeve bin tu qedexeyan). LI ev gotar, ev yek di hin xalan de rê li ber plansaziyek weha girt:

Çi dikare bi Zanistiya Daneyê re xelet bibe? Komkirina daneyan

Lîsteya kontrolê ya tevahî li gorî tevliheviyê:

  • Bi torgilok û parskirina html re bi dubarekirin û lêgerîna bi ID-ê re dixebitin.
  • Belgeyên avahiya heterojen.
  • Gelek cih hene ku kod dikare bi hêsanî bikeve.
  • Pêdivî ye ku binivîsin || navê dizî.
  • Belgekirinên pêwîst, nimûneyên kodê, û/an civat winda ne.

Dema texmînkirî ya ji bo vê peywirê dê 3-5 carî ji berhevkirina daneyan ji Reddit zêdetir be.

Berhevdana komên Odnoklassniki

Ka em biçin ser doza herî balkêş a teknîkî ya ku hatî vegotin. Ji bo min, ew bi rastî balkêş bû ji ber ku di nihêrîna pêşîn de, ew pir piçûk xuya dike, lê ew bi tevahî wusa xuya nake - gava ku hûn darek li wê dixin.

Ka em bi navnîşa xweya kontrolê ya dijwariyê dest pê bikin û bala xwe bidin ku pir ji wan dê ji ya ku ew di destpêkê de xuya dikin pir dijwartir derkevin:

  • API heye, lê hema hema bi tevahî fonksiyonên pêwîst tune.
  • Ji bo hin fonksiyonan hûn hewce ne ku hûn bi nameyê bigihîjin daxwazê ​​​​, ango, dayîna gihîştinê ne tavilê ye.
  • Ew bi tirsnakek belgekirî ye (ji destpêkê ve, termên rûsî û îngilîzî li her derê tevlihev dibin, û bi tevahî nakokî - carinan hûn tenê hewce ne ku texmîn bikin ka ew li cîhek ji we çi dixwazin) û, ji bilî vê, sêwirana ji bo bidestxistina daneyan ne maqûl e, mînakî , fonksiyona ku em hewce ne.
  • Di belgeyê de danişînek hewce dike, lê bi rastî wê bikar nayîne - û ji bilî ku meriv li dora xwe bigere û hêvî bike ku tiştek bixebite, rêyek tune ku meriv hemî tevliheviyên modên API-ê fam bike.
  • Nimûne û civak tune ye, di berhevkirina agahiyan de yekane xala piştgiriyê ye pêça di Python de (bêyî gelek mînakên karanînê).
  • Dixuye ku Selenium vebijarka herî bikêr e, ji ber ku gelek daneyên pêwîst girtî ne.
    1) Ango destûrname bi bikarhênerek xeyalî (û qeydkirina bi destan) pêk tê.

    2) Lêbelê, bi Selenium re garantiyek ji bo xebata rast û dubare tune (qet nebe di doza ok.ru de bê guman).

    3) Malpera Ok.ru xeletiyên JavaScript-ê dihewîne û carinan ecêb û nelihev tevdigere.

    4) Pêdivî ye ku hûn pagasyon, hêmanên barkirinê, hwd...

    5) Çewtiyên API-ê yên ku wrapper dide pêdivî ye ku bi rengek bêkêmasî bêne rêve kirin, mînakî, mîna vê (parçeyek kodek ceribandinê):

    def get_comments(args, context, discussions):
        pause = 1
        if args.extract_comments:
            all_comments = set()
    #makes sense to keep track of already processed discussions
            for discussion in tqdm(discussions): 
                try:
                    comments = get_comments_from_discussion_via_api(context, discussion)
                except odnoklassniki.api.OdnoklassnikiError as e:
                    if "NOT_FOUND" in str(e):
                        comments = set()
                    else:
                        print(e)
                        bp()
                        pass
                all_comments |= comments
                time.sleep(pause)
            return all_comments
    

    Şaşiya min a bijare ev bû:

    OdnoklassnikiError("Error(code: 'None', description: 'HTTP error', method: 'discussions.getComments', params: …)”)

    6) Di dawiyê de, Selenium + API wekî vebijarka herî maqûl xuya dike.

  • Pêdivî ye ku dewletê xilas bike û pergalê ji nû ve bide destpêkirin, bi gelek xeletiyan re mijûl bibe, tevî tevgerên nehevgirtî yên malperê - û xeyalkirina van xeletiyan pir dijwar e (heta ku hûn parsek bi profesyonelî nenivîsin, bê guman).

Texmîna dema şertî ya ji bo vê peywirê dê 3-5 carî ji berhevkirina daneyan ji Habrê zêdetir be. Digel vê yekê ku di doza Habr de em bi parkirina HTML-ê ve nêzîkatiyek pêşîn bikar tînin, û di rewşa OK de em dikarin bi API-yê re li cîhên krîtîk bixebitin.

vebiguherin

Her çi qas ji we tê xwestin ku hûn "di cih de" (em îro plan dikin!) Modulek boriyê ya hilberandina daneya mezin texmîn bikin jî, dema darvekirinê hema hema qet ne gengaz e ku meriv bi kalîteyî jî bêyî analîzkirina pîvanên peywirê texmîn bike.

Li ser têgehek hinekî felsefî, stratejiyên texmînkirina guhezbar ji bo karên endezyariyê baş dixebitin, lê pirsgirêkên ku bêtir ceribandin û, bi wateyekê, "afirîner" û keşfê ne, ango hindiktir pêşbînîkirî ne, dijwariyên wan hene, wekî di mînakên mijarên wekhev de. ku me li vir nîqaş kir.

Bê guman, berhevkirina daneyan tenê mînakek bingehîn e - ew bi gelemperî karek pir hêsan û teknîkî ne tevlihev e, û şeytan bi gelemperî di hûrguliyan de ye. Û tam li ser vê peywirê ye ku em dikarin hemî vebijarkên mimkun nîşan bidin ka çi dikare xelet derkeve û tam çiqas kar dikare dirêj bike.

Ger hûn bêyî ceribandinên zêde li taybetmendiyên peywirê binihêrin, wê hingê Reddit û OK dişibin hev: API, pêçekek python heye, lê di eslê xwe de, cûdahî pir mezin e. Li gorî van pîvanan dadbar kirin, parsa Habr ji OK tevlihevtir xuya dike - lê di pratîkê de ew bi tevahî berevajî ye, û ev bi rastî ya ku meriv dikare bi ceribandinên hêsan ve were dîtin ji bo analîzkirina parametreyên pirsgirêkê ye.

Di ezmûna min de, nêzîkatiya herî bibandor ev e ku hûn texmîn bikin dema ku hûn ê ji bo analîza pêşîn bixwe û ceribandinên yekem ên hêsan, xwendina belgeyan hewce bikin - ev ê bihêle ku hûn ji bo tevahiya xebatê texmînek rast bidin. Di warê metodolojiya asayî ya populer de, ez ji we dipirsim ku hûn bilêtek ji bo "texmînkirina pîvanên peywirê" biafirînin, li ser bingeha wê ez dikarim nirxandinek bikim ka çi dikare di hundurê "sprint" de were kirin û ji bo her yekê texmînek rasttir bidim. karî.

Ji ber vê yekê, argûmana herî bi bandor xuya dike ku ew e ku dê pisporek "ne-teknîkî" nîşan bide ka dê çiqas dem û çavkanî li gorî pîvanên ku hêj nehatine nirxandin cûda bibe.

Çi dikare bi Zanistiya Daneyê re xelet bibe? Komkirina daneyan

Source: www.habr.com

Ji bo malperên bi parastina DDoS, serverên VPS VDS mêvandariya pêbawer bikirin 🔥 Hostinga malperê ya pêbawer bi parastina DDoS, serverên VPS VDS bikirin | ProHoster