Habr を解析した方法、パヌト 1: 傟向

新幎のオリノィ゚が終わったずき、私は䜕もするこずがなかったので、ハブラハブ (および関連プラットフォヌム) からすべおの蚘事をコンピュヌタヌにダりンロヌドしお探玢するこずにしたした。

興味深い話がいく぀かありたした。 12 ぀目は、サむトの XNUMX 幎間にわたる蚘事の圢匏ずトピックの開発です。 たずえば、いく぀かのトピックのダむナミクスは非垞に瀺唆的です。 続き - カットの䞋。

Habr を解析した方法、パヌト 1: 傟向

解析プロセス

ハブルがどのように発展したかを理解するには、圌のすべおの蚘事に目を通し、そこからメタ情報 (日付など) を抜出する必芁がありたした。 すべおの蚘事ぞのリンクは「habrahabr.ru/post/337722/」のように芋え、番号は厳密に順序付けされおいるため、バむパスは簡単でした。 最埌の投皿の番号が 350 よりわずかに小さいこずがわかったので、考えられるすべおのドキュメント ID をルヌプで調べたした (Python コヌド)。

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、および 338586 のドキュメントは、りむルス察策プログラムによっお即座に削陀されたした。 これらはそれぞれ、悪意のある PDF をダりンロヌドする JavaScript チェヌン、ブラりザ プラグむンのセットの圢匏の SMS ランサムりェア、iPhone を再起動させる CrashSafari.com サむトに関する蚘事です。 その埌、アンチりむルスはシステム スキャン䞭に別の蚘事を発芋したした。投皿 XNUMX は、ナヌザヌのプロセッサを䜿甚しお暗号通貚を採掘するペット ストアの Web サむト䞊のスクリプトに関するものです。 したがっお、りむルス察策の機胜は十分であるず考えられたす。

「ラむブ」蚘事は、朜圚的な最倧数である 166307 件の半分にすぎないこずが刀明したした。 残りに぀いお、Habr 氏は「ペヌゞが叀い、削陀された、たたはたったく存圚しなかった」ずいう遞択肢を䞎えおいたす。 たあ、䜕でも起こりたす。

蚘事のアップロヌドに続いお技術的な䜜業が行われたした。たずえば、出版日を「21 幎 2006 月 10 日午前 47 時 XNUMX 分」ずいう圢匏から暙準圢匏に倉換する必芁がありたした。 datetime、および「12,8k」ビュヌ - 12800。この段階で、さらにいく぀かのむンシデントが明らかになりたした。 最も面癜いのは、投祚数ずデヌタ型に関係するものです。叀い投皿には int オヌバヌフロヌがあり、それぞれ 65535 祚を受け取りたした。

Habr を解析した方法、パヌト 1: 傟向

その結果、蚘事のテキスト (画像なし) で 1.5 メガバむト、メタ情報を含むコメントでさらに 3 メガバむト、蚘事に関するメタ情報で玄 XNUMX メガバむトが必芁になりたした。 これは完党に RAM に保存できるので、私にずっおは嬉しい驚きでした。

私は蚘事の分析をテキストそのものからではなく、日付、タグ、ハブ、閲芧数、いいねなどのメタ情報から始めたした。 圌女は倚くのこずを話すこずができるこずがわかりたした。

ハブラハブルの開発動向

このサむトの蚘事は 2006 幎から公開されおいたす。 最も集䞭的に行われたのは 2008 幎から 2016 幎です。

Habr を解析した方法、パヌト 1: 傟向

これらの蚘事がさたざたな時期にどれだけ掻発に読たれたかを評䟡するのはそれほど簡単ではありたせん。 2012 幎以前のテキストにはより倚くのコメントず評䟡が含たれおいたすが、新しいテキストほど閲芧数ずブックマヌク数が倚くなりたす。 これらの指暙が同じように動䜜 (半枛) したのは、2015 幎の XNUMX 回だけです。 おそらく、経枈的、政治的危機の状況で、読者の関心は IT ブログから、より痛みを䌎う問題ぞず移っおいるのでしょう。

Habr を解析した方法、パヌト 1: 傟向

蚘事自䜓に加えお、さらに倚くのコメントをダりンロヌドしたした。 コメントは6䞇件あったが、そのうち240䞇件が犁止された「UFOが飛来しお、この碑文をここに公開した」。 コメントの䟿利な特性は、コメントにタむムスタンプがあるこずです。 コメントの時間を調査するこずで、蚘事がい぀読たれるかを倧たかに把握できたす。

ほずんどの蚘事は、午前 10 時から午埌 20 時たでの間、぀たり、執筆ずコメントの䞡方が行われおいるこずが刀明したした。 モスクワの兞型的な勀務日。 これは、ハブルが専門的な目的で読たれおいるこず、そしおこれが仕事を先延ばしにする良い方法であるこずを意味しおいる可胜性がありたす。 ちなみに、この時刻分垃はハブル創蚭圓初から珟圚に至るたで安定しおいたす。

Habr を解析した方法、パヌト 1: 傟向

ただし、コメントのタむムスタンプの䞻な利点は、時刻ではなく、蚘事の「有効期間」の期間です。 蚘事の公開からコメントたでの時間配分を蚈算しおみたした。 珟圚、コメントの䞭倮倀 (緑の線) は玄 20 時間以内に到着するこずがわかりたした。 公開埌の初日には、平均しお、蚘事に察する党コメントの半分匷が残されたす。 そしお 75 日間で、党コメントの 2010% が残されたす。 同時に、以前の蚘事はさらに速く読たれたした。たずえば、6 幎には、コメントの半分が最初の XNUMX 時間以内に届きたした。

Habr を解析した方法、パヌト 1: 傟向

コメントが長くなったのには驚きたした。コメントの平均文字数は、ハブルの生涯でほが XNUMX 倍になりたした。

Habr を解析した方法、パヌト 1: 傟向

コメントよりも簡単なフィヌドバックは投祚です。 他の倚くのリ゜ヌスずは異なり、Habré ではプラスだけでなくマむナスも入力できたす。 しかし、読者は最埌の機䌚をあたり利甚したせん。珟圚の嫌いの割合は党投祚数の玄 15% です。 以前はもっずありたしたが、時間が経぀に぀れお、読者はより芪切になりたした。

Habr を解析した方法、パヌト 1: 傟向

テキスト自䜓は時代ずずもに倉化しおきたした。 たずえば、兞型的なテキストの長さは、危機にもかかわらず、サむトの立ち䞊げ圓初から着実に増加を止めたせん。 XNUMX 幎間で、テキストはほが XNUMX 倍の長さになりたした。

Habr を解析した方法、パヌト 1: 傟向

テキストのスタむルも (䞀次近䌌的には) 倉曎されたした。 たずえば、ハブルが存圚しおから最初の数幎間は、テキスト内のコヌドず数字の割合が増加したした。

Habr を解析した方法、パヌト 1: 傟向

サむト党䜓のダむナミクスを理解した埌、さたざたなトピックの人気がどのように倉化したかを枬定するこずにしたした。 トピックはテキストから自動的に遞択できたすが、たず最初に、車茪の再発明はできず、各蚘事の著者によっお付けられた既成のタグを䜿甚したす。 代衚的なXNUMX぀のトレンドをチャヌトに描いおみたした。 「Google」テヌマは圓初おそらく䞻に SEO による優勢でしたが、長幎にわたっおその比重を倱い぀぀ありたす。 Javascript は人気のトピックであり、ゆっくりず成長を続けおいたすが、機械孊習が急速に普及し始めたのはここ数幎のこずです。 䞀方、Linux は XNUMX 幎間を通じお同様に関連性を保ち続けおいたす。

Habr を解析した方法、パヌト 1: 傟向

もちろん、どのようなトピックがより倚くの読者の掻動を惹き぀けるのかに興味を持ちたした。 各トピックの閲芧数、投祚数、コメント数の䞭倮倀を蚈算したした。 䜕が起こったかは次のずおりです。

  • 最も閲芧されおいるトピック: Arduino、Web デザむン、Web 開発、ダむゞェスト、リンク、CSS、HTML、HTML5、nginx、アルゎリズム。
  • 最も「いいね」されたトピック: vkontakte、ナヌモア、jquery、opera、c、html、web 開発、html5、css、web デザむン。
  • 最も議論されおいるトピック: オペラ、スカむプ、フリヌランス、vkontakte、ubuntu、仕事、nokia、nginx、arduino、firefox。

ちなみに、トピックを比范しおいるので、頻床でランク付けするこずもできたす (結果を次のように比范するこずもできたす) 2013幎の同様の蚘事).

  • Habr が存圚しお以来、最も人気のあるタグ (降順) は、google、android、javascript、microsoft、linux、php、apple、java、python、プログラミング、スタヌトアップ、開発、ios、スタヌトアップ、゜ヌシャル ネットワヌクです。
  • 2017 幎に最も人気があったのは、JavaScript、Python、Java、Android、開発、Linux、C++、プログラミング、PHP、C#、iOS、機械孊習、情報セキュリティ、Microsoft、React でした。

これらの評䟡を比范するずき、たずえば、Python の勝利ず PHP の消滅、たたはスタヌトアップ関連のトピックの「沈没」ず機械孊習の隆盛に泚目するこずができたす。

Habré のすべおのタグに、これほど明癜なテヌマカラヌが蚭定されおいるわけではありたせん。 たずえば、ここには䞀床だけ出䌚ったが、私には面癜いず思われた十数個のタグがありたす。 ぀たり、「アむデアは進歩の原動力である」、「フロッピヌ ディスク むメヌゞから起動する」、「アむオワ州」、「ドラマ」、「スヌパヌアリヌシュ」、「蒞気機関」、「土曜日にやるべきこず」、「私は持っおいる」肉挜き噚に入ったキツネ」、「い぀も通りの結果になった」、「面癜いタグが思い぀かなかった」。 このような蚘事の䞻題を決定するには、タグだけでは十分ではありたせん。蚘事のテキストに察しおテヌマのモデリングを実行する必芁がありたす。

蚘事内容の詳しい分析は次回の投皿で。 たず、蚘事の内容に基づいお蚘事のペヌゞビュヌ数を予枬するモデルを構築したす。 次に、Habr の䜜者ず同じスタむルでテキストを生成するようにニュヌラル ネットワヌクを教えたいず考えおいたす。 だから賌読しおください 🙂

PS そしお、これがビヌプ音です デヌタセット.

出所 habr.com

コメントを远加したす