Wolfram言語(Mathematica)を使用したHabrahabrの詳細な分析







投稿はMathematicaドキュメントとしてダウンロードできます。このドキュメントには、記事で使用されているすべてのコードと追加ファイルが含まれています



ソーシャルネットワークとあらゆる種類のメディアリソースの分析は、今では非常に人気のある方向であり、Habrahabrには、実際には、大量の情報(投稿、キーワード、コメントなど)の分析を含む記事がないことを知るのはさらに驚くべきことでした。かなり長い期間にわたって蓄積されました。



この投稿がHabrahabrの多くの参加者の関心を引くことを願っています。 私は、この投稿の開発のためのさらなる方向性についての提案やアイデア、およびコメントや推奨事項に喜んでいます。



投稿では、 ハブに関連する記事が調査され、 合計で264のハブからの62,000の記事が分析に参加しました。 投稿内の企業の企業ブログ専用に書かれた記事は考慮されず、「興味深い」グループに分類されない投稿も考慮されませんでした。



投稿で構築されたデータベースは、公開前に、つまり2015年4月26日に作成されたため、この日付以降にHabrahabrで公開された投稿(および、おそらく新しいハブ)は、この投稿では考慮されませんでした。



目次



ハブリストのインポート

すべてのHabrahabr記事へのリンクをインポートする

すべてのHabrahabr記事をインポートする

投稿のシンボリックXML表現から特定のデータを抽出するための関数

データセットを使用してHabrahabr投稿のデータベースを作成する

データ処理結果

- ハブの簡単な分析

-Habrahabrのハブ接続グラフ

- 時間に応じた記事の数

- 時間に応じて投稿で使用される画像(ビデオ)

- キーワードHabrahabrと個々のハブの雲

-Habrahabrに関する記事で言及されているサイト

-Habrahabrの記事につながるコード

- 会議の言葉の頻度

- 投稿の評価と表示回数、および特定の値に到達する確率

- 投稿の評価と視聴回数の公開時間への依存

- 投稿の評価がそのボリュームに依存する

おわりに



ハブリストのインポート



ハブのリストをインポートして、組み込みのデータセットデータベース形式の形式で表示し、さらに作業しやすくします。



HabrAnalysisInWolframLanguage_1.png



HabrAnalysisInWolframLanguage_2.png



HabrAnalysisInWolframLanguage_3.png



HabrAnalysisInWolframLanguage_4.png



すべてのHabrahabr記事へのリンクをインポートする



特定のハブのn番目のページからリンクをインポートする機能:



HabrAnalysisInWolframLanguage_5.png



特定のハブにあるすべての記事へのリンクをインポートする機能:



HabrAnalysisInWolframLanguage_6.png



すべてのハブからのすべての投稿へのリンクをインポートする機能(企業ブログを除く):



HabrAnalysisInWolframLanguage_7.png



すべてのハブからのすべての投稿へのリンクをバイナリのWolfram言語ダンプファイルに保存してインポートします(後で使用するため):



HabrAnalysisInWolframLanguage_8.png



すべてのHabrahabr記事をインポートする



投稿へのリンクの合計データベース:



HabrAnalysisInWolframLanguage_9.png



HabrAnalysisInWolframLanguage_10.png



同時に、同じ投稿がしばしば異なるハブを参照しているという事実のために、それらの間には多くのテイクがあります。 以下のコードからわかるように、 合計重複投稿〜30.6%



HabrAnalysisInWolframLanguage_11.png



HabrAnalysisInWolframLanguage_12.png



投稿への一意のリンクで構成されるリストを作成します。



HabrAnalysisInWolframLanguage_13.png



HabrAnalysisInWolframLanguage_14.png



合計で、同じ数の記事に対応する62,000のリンクがあります。



HabrAnalysisInWolframLanguage_15.png



HabrAnalysisInWolframLanguage_16.png



このページへのリンクを使用して、シンボリックXMLオブジェクト( XMLObject )としてWebページ(投稿)のHTMLコードをインポートする関数を作成し、出力にWolfram言語.mxシリアルパッケージを作成します。



HabrAnalysisInWolframLanguage_17.png



すべての投稿のダウンロードを実行します。



HabrAnalysisInWolframLanguage_18.png



ダウンロードが完了すると、ハードドライブに62,000個のファイルが取得されます。



HabrAnalysisInWolframLanguage_19.png



投稿のシンボリックXML表現から特定のデータを抽出するための関数



Habrahabrからすべての投稿をシンボリックXMLオブジェクトの形式で読み込んだ後、それらから興味のある情報を抽出する必要があります。 これを行うために、以下に示すいくつかの関数を作成します。



役職



HabrAnalysisInWolframLanguage_20.png



投稿が公開されているハブのリスト



HabrAnalysisInWolframLanguage_21.png



絶対時間形式での公開後の日付と時刻(今後の作業の便宜上)。



HabrAnalysisInWolframLanguage_22.gif



投稿の評価



HabrAnalysisInWolframLanguage_23.png



投稿ビュー



HabrAnalysisInWolframLanguage_24.png



投稿で提供されるハイパーリンクの統計



HabrAnalysisInWolframLanguage_25.png



投稿で使用される画像の数



HabrAnalysisInWolframLanguage_26.png



投稿へのコメント数



HabrAnalysisInWolframLanguage_27.png



投稿ごとに挿入される動画の数



HabrAnalysisInWolframLanguage_28.png



標準化された形式の投稿のテキスト(段落は削除され、すべての文字は大文字になります)



HabrAnalysisInWolframLanguage_29.gif



投稿で提供されるコードの統計



HabrAnalysisInWolframLanguage_30.png



キーワード



HabrAnalysisInWolframLanguage_31.png



データセットを使用してHabrahabr投稿のデータベースを作成する



場合によっては、さまざまな理由で投稿へのアクセスが閉鎖されます。 さらに、適切なリンクをクリックすると、次のようなページが表示されます。



HabrAnalysisInWolframLanguage_32.png



次のページを除外する関数を作成します。



HabrAnalysisInWolframLanguage_33.gif



次に、投稿が保存されているすべての.mxファイルへのパスをロードします。



HabrAnalysisInWolframLanguage_34.png



HabrAnalysisInWolframLanguage_35.png



そして閉じたものを削除します:



HabrAnalysisInWolframLanguage_36.png



合計で、閉じられた投稿の0.5%が削除されました。



HabrAnalysisInWolframLanguage_37.png



HabrAnalysisInWolframLanguage_38.png



Habrahabrの投稿に関するデータベース行を作成する関数を作成してみましょう。これについては以下で説明します。 これは、以前に作成した関数とAssociation関数を使用して行います。



HabrAnalysisInWolframLanguage_39.png



最後に、 Dataset関数を使用してHabrahabr投稿のデータベースを作成します。



HabrAnalysisInWolframLanguage_40.png



HabrAnalysisInWolframLanguage_41.png



HabrAnalysisInWolframLanguage_42.png



データ処理結果



ハブの簡単な分析



記事が投稿されているハブの数の分布を見つけます。



HabrAnalysisInWolframLanguage_43.png



HabrAnalysisInWolframLanguage_44.png



このDatasetフラグメントをテーブルとして想像してください:



HabrAnalysisInWolframLanguage_45.png



HabrAnalysisInWolframLanguage_46.png



記事の数から最大のハブを見つけます。



HabrAnalysisInWolframLanguage_47.png



HabrAnalysisInWolframLanguage_48.png



一意の記事のみを考慮する場合(1つのハブのみに関連する場合、写真はわずかに変わります):



HabrAnalysisInWolframLanguage_49.png



HabrAnalysisInWolframLanguage_50.png



また、会社の投稿数を確認します(会社がブログ専用に作成した投稿はここでは考慮されません)。



HabrAnalysisInWolframLanguage_51.png



HabrAnalysisInWolframLanguage_52.png



Habrahabrのハブ接続グラフ



Sørensen係数に基づいて 2つのハブで公開されている投稿のリストから2つのハブの類似性の尺度を計算する関数を作成してみましょう。



HabrAnalysisInWolframLanguage_53.gif



考えられるすべてのハブのペアのリストを作成しましょう(会社のハブは考慮しません)。



HabrAnalysisInWolframLanguage_54.png



ハブの各ペアの類似度係数を計算します。



HabrAnalysisInWolframLanguage_55.png



グラフのエッジとその重みを定義するリストを作成します。



HabrAnalysisInWolframLanguage_56.png



色付けのために、得られた類似度係数の値を区間[0;に正規化する関数を作成します。 1]:



HabrAnalysisInWolframLanguage_57.png



類似性係数に応じて、リブの色、厚さ、透明度を設定します。 rib骨の重量が大きいほど、厚く赤くなります。 重量が少ないほど、透明度が高く、薄くなります。



HabrAnalysisInWolframLanguage_58.png



結果のグラフはインタラクティブです。各頂点にマウスを移動すると、その名前が表示されます。





HabrAnalysisInWolframLanguage_59.png



HabrAnalysisInWolframLanguage_60.png



頂点の名前を表示して、このグラフのスタイルを変更することもできます。 このグラフは、 リンクごとにフルサイズで見ることができます(画像、12 MB)。



HabrAnalysisInWolframLanguage_61.png



HabrAnalysisInWolframLanguage_62.png



時間ごとの記事数



Habrahabr全体とハブの両方で公開された記事の数を視覚化する関数を作成してみましょう。



HabrAnalysisInWolframLanguage_63.png



彼女の仕事の結果を見てみましょう。 得られたグラフから、現時点では、明らかに、Habrahabrで毎年発行される投稿の数はプラトーに達し、年間11,000投稿の値に近づいていることがわかります。



HabrAnalysisInWolframLanguage_64.png



HabrAnalysisInWolframLanguage_65.png



2012年以降、ハブ「数学」の出版物が急速に増加しています。



HabrAnalysisInWolframLanguage_66.png



HabrAnalysisInWolframLanguage_67.png



2011年以降、Flashに対する関心は薄れてきました。



HabrAnalysisInWolframLanguage_68.png



HabrAnalysisInWolframLanguage_69.png



同時に、2010年以降、ハブ「ゲーム開発」は飛躍的に成長しています。



HabrAnalysisInWolframLanguage_70.png



HabrAnalysisInWolframLanguage_71.png



興味深いことに、ハブ「Habrahabr」の記事数は少なくなっています。



HabrAnalysisInWolframLanguage_72.png



HabrAnalysisInWolframLanguage_73.png



時間に応じて投稿で使用される画像(ビデオ)の数



Habrahabr全体とハブの両方で、公開された投稿内の画像(またはビデオ)の数を視覚化する関数を作成しましょう。



HabrAnalysisInWolframLanguage_74.png



HabrAnalysisInWolframLanguage_75.png



HabrAnalysisInWolframLanguage_76.png



HabrAnalysisInWolframLanguage_77.png



HabrAnalysisInWolframLanguage_78.png



HabrAnalysisInWolframLanguage_79.png



HabrAnalysisInWolframLanguage_80.png



HabrAnalysisInWolframLanguage_81.png



HabrAnalysisInWolframLanguage_82.png



いくつかのハブを見てみましょう。



HabrAnalysisInWolframLanguage_83.png



HabrAnalysisInWolframLanguage_84.png



HabrAnalysisInWolframLanguage_85.png



HabrAnalysisInWolframLanguage_86.png



HabrAnalysisInWolframLanguage_87.png



HabrAnalysisInWolframLanguage_88.png



キーワードHabrahabrと個々のハブの雲



Habrahabrで分析されたすべての投稿の中で、キーワードの使用量のリストが見つかります。



HabrAnalysisInWolframLanguage_89.png



HabrAnalysisInWolframLanguage_90.png



それらの中で最も一般的な150を選択してください:



HabrAnalysisInWolframLanguage_91.png



HabrAnalysisInWolframLanguage_92.png



それらから、単語(またはフレーズ)のサイズが指示の数に直接比例する単語クラウドを作成しましょう。



HabrAnalysisInWolframLanguage_93.png



HabrAnalysisInWolframLanguage_94.png



また、いくつかの行からマスクを作成することもできます。



HabrAnalysisInWolframLanguage_95.png



HabrAnalysisInWolframLanguage_96.png



そして、それに基づいて、750の最も一般的なキーワード(フレーズ)を含むワードクラウドを作成します。



HabrAnalysisInWolframLanguage_97.png



HabrAnalysisInWolframLanguage_98.png



任意の形式で単語​​雲を作成することもできます。



HabrAnalysisInWolframLanguage_99.png



HabrAnalysisInWolframLanguage_100.png



次に、特定のハブの最も人気のあるキーワードのクラウドを視覚化する関数を作成してみましょう(デフォルトでは100語が使用されます)。



HabrAnalysisInWolframLanguage_101.png



数学ハブの100個のキーワード:



HabrAnalysisInWolframLanguage_102.png



HabrAnalysisInWolframLanguage_103.png



数学ハブの30のキーワード:



HabrAnalysisInWolframLanguage_104.png



HabrAnalysisInWolframLanguage_105.png



ハブ「プログラミング」のキーワード:



HabrAnalysisInWolframLanguage_106.png



HabrAnalysisInWolframLanguage_107.png



ハブ「JAVA」のキーワード:



HabrAnalysisInWolframLanguage_108.png



HabrAnalysisInWolframLanguage_109.png



「オープンソース」ハブの200個のキーワード:



HabrAnalysisInWolframLanguage_110.png



HabrAnalysisInWolframLanguage_111.png



Habrahabrの記事で言及されているサイト



Habrahabr全般と一部のハブの両方で最も頻繁に参照されるサイトを表示する関数を作成してみましょう。



HabrAnalysisInWolframLanguage_112.png



Habrahabrで最も頻繁に参照されるサイトを見つけます。



HabrAnalysisInWolframLanguage_113.png



HabrAnalysisInWolframLanguage_114.png



リンクの主なソースであるHabrahabr自体を削除すると、画像がより鮮明になります。



HabrAnalysisInWolframLanguage_115.png



HabrAnalysisInWolframLanguage_116.png



「数学」ハブで最も頻繁に参照されるサイトを見つけます(この場合、どこでも参照されているため、Habrahabr自体を削除します。



HabrAnalysisInWolframLanguage_117.png



HabrAnalysisInWolframLanguage_118.png



次に、「iOS向けの開発」というハブを見てみましょう。



HabrAnalysisInWolframLanguage_119.png



HabrAnalysisInWolframLanguage_120.png



そして、これが「.NET」ハブです。



HabrAnalysisInWolframLanguage_121.png



HabrAnalysisInWolframLanguage_122.png



Habrahabrの記事につながるコード



コードが挿入されていない記事の割合を見つけます(作成者が特別なタグを使用してコードを常に挿入するわけではないため、ここでは深刻なエラーが発生する可能性があります。



HabrAnalysisInWolframLanguage_123.png



HabrAnalysisInWolframLanguage_124.png



Habrahabr全般とハブの両方で、投稿にコードを挿入するための言語の統計を表示する関数を作成しましょう。 さらに、作成者がコードを指定していない場合、そのようなフラグメントには「SomeCode」という名前が付けられます。 また、ここでは、著者が指定した言語の名前は処理しません。



HabrAnalysisInWolframLanguage_125.png



Habrahabr全体のコード挿入言語の分布を見つけます。



HabrAnalysisInWolframLanguage_126.png



HabrAnalysisInWolframLanguage_127.png



プログラミング言語が指定されていない挿入物を削除すると、図がより鮮明になります。



HabrAnalysisInWolframLanguage_128.png



HabrAnalysisInWolframLanguage_129.png



次に、アルゴリズムハブにコードを挿入するための最も一般的なプログラミング言語を見てみましょう。



HabrAnalysisInWolframLanguage_130.png



HabrAnalysisInWolframLanguage_131.png



波部「プログラミング」:



HabrAnalysisInWolframLanguage_132.png



HabrAnalysisInWolframLanguage_133.png



ハブ「Web開発」:



HabrAnalysisInWolframLanguage_134.png



HabrAnalysisInWolframLanguage_135.png



ハブ「Linuxセットアップ」:



HabrAnalysisInWolframLanguage_136.png



HabrAnalysisInWolframLanguage_137.png



ハブ「検索エンジンとテクノロジー」:



HabrAnalysisInWolframLanguage_138.png



HabrAnalysisInWolframLanguage_139.png



単語の頻度



Yandexの「 Word Selection 」サービスは、たとえば幅広い読者に興味のある記事を書きたい場合に非常に便利です。 このサービスでは、単語検索の頻度を確認できます。 Habrahabrの記事に関するロードされた情報に基づいて、このサービスの特定の類似物を作成し、記事のテキスト内の単語(グループまたは正規表現)の出現頻度を発行できます。 これにより、特定のトピックに対する視聴者の関心を追跡できます。



そのため、このような単語の出現頻度を生成する関数を作成しましょう。



HabrAnalysisInWolframLanguage_140.gif



これで、さまざまなものを見ることができます。たとえば、Habrahabrで最もよく使用されるリソース名「Habrahabr」または「Habrr」を比較できます。



HabrAnalysisInWolframLanguage_141.png



HabrAnalysisInWolframLanguage_142.png



または、Habrahab全体のさまざまなプログラミング言語の名前の使用頻度を比較できます。



HabrAnalysisInWolframLanguage_143.png



HabrAnalysisInWolframLanguage_144.png



数学パッケージへの参照の頻度を比較してみましょう(「string」~~ _(前の例で使用された)の形式の表現)、異なる末尾の文字列のコレクションを指定できます。たとえば、「tungsten」~~ _という表現は、「tungsten」、「tungsten」の文字列のコレクションを定義します。 「タングステン」など):



HabrAnalysisInWolframLanguage_145.png



HabrAnalysisInWolframLanguage_146.png



もちろん、「ロシア」、「アメリカ」、「ヨーロッパ」というグループの単語の出現頻度を調べるなど、さまざまなことに興味を持つことができます。



HabrAnalysisInWolframLanguage_147.png



HabrAnalysisInWolframLanguage_148.png



または、いくつかのテクノロジーで徐々に減少するフェージング(凍結)を観察できます。



HabrAnalysisInWolframLanguage_149.png



HabrAnalysisInWolframLanguage_150.png



または、新しいものの誕生:



HabrAnalysisInWolframLanguage_151.png



HabrAnalysisInWolframLanguage_152.png



個々のハブで単語を使用する頻度も確認できます。 「iOS開発」ハブで「iOS」と「Android」という言葉を使用する頻度を考えてみましょう。



HabrAnalysisInWolframLanguage_153.png



HabrAnalysisInWolframLanguage_154.png



または同じ言葉ですが、ハブ「Android向け開発」にあります。



HabrAnalysisInWolframLanguage_155.png



HabrAnalysisInWolframLanguage_156.png



ハブ「オープンソース」のオペレーティングシステムの名前の使用頻度を比較できます。



HabrAnalysisInWolframLanguage_157.png



HabrAnalysisInWolframLanguage_158.png



Habrahabr全体として:



HabrAnalysisInWolframLanguage_159.png



HabrAnalysisInWolframLanguage_160.png



投稿の評価と表示回数、および特定の値に到達する確率



投稿の評価と投稿の視聴のペアを区別します。



HabrAnalysisInWolframLanguage_161.png



HabrAnalysisInWolframLanguage_162.png



通常の対数スケールで平面上の分布を構築します。



HabrAnalysisInWolframLanguage_163.png



HabrAnalysisInWolframLanguage_164.png



これらのグラフの欠点は、グラフ上のポイントの分布密度を反映しないことです。



検討中のペアの2次元および3次元の分布密度を構築します。



HabrAnalysisInWolframLanguage_165.png



HabrAnalysisInWolframLanguage_166.png



HabrAnalysisInWolframLanguage_167.png



Habrahabrの平均投稿評価は34.5で、平均視聴回数は14237.3です



HabrAnalysisInWolframLanguage_168.png



HabrAnalysisInWolframLanguage_169.png



ただし、これは統計的な特性ではありません。 ペアの分布を構築します(2次元確率変数の分布を作成します):



HabrAnalysisInWolframLanguage_170.png



HabrAnalysisInWolframLanguage_171.png



数学的な期待を見つける:



HabrAnalysisInWolframLanguage_172.png



HabrAnalysisInWolframLanguage_173.png



標準偏差と同様に:



HabrAnalysisInWolframLanguage_174.png



HabrAnalysisInWolframLanguage_175.png



また、たとえば、投稿が特定の評価を獲得する確率を見つけることもできます。



HabrAnalysisInWolframLanguage_176.png



HabrAnalysisInWolframLanguage_177.png



これで、投稿が特定のビュー数を獲得する確率がわかります。



HabrAnalysisInWolframLanguage_178.png



HabrAnalysisInWolframLanguage_179.png



評価と投稿ビュー数の公開時間への依存



以下のコードから、Habréでは常にすべての記事が約210万の合計評価を獲得し、視聴回数の合計は10億に近いことがわかりました。



HabrAnalysisInWolframLanguage_180.png



HabrAnalysisInWolframLanguage_181.png



トリプル投稿公開時間+投稿評価+投稿ビューを区別します。



HabrAnalysisInWolframLanguage_182.png



公開時間に応じて、投稿の評価の動作を調査します。



HabrAnalysisInWolframLanguage_183.png



HabrAnalysisInWolframLanguage_184.png



HabrAnalysisInWolframLanguage_185.png



HabrAnalysisInWolframLanguage_186.png



HabrAnalysisInWolframLanguage_187.png



HabrAnalysisInWolframLanguage_188.png



HabrAnalysisInWolframLanguage_189.png



HabrAnalysisInWolframLanguage_190.png



公開時間に応じて投稿ビューの数を調査します。



HabrAnalysisInWolframLanguage_191.png



HabrAnalysisInWolframLanguage_192.png



HabrAnalysisInWolframLanguage_193.png



HabrAnalysisInWolframLanguage_194.png



HabrAnalysisInWolframLanguage_195.png



HabrAnalysisInWolframLanguage_196.png



HabrAnalysisInWolframLanguage_197.png



HabrAnalysisInWolframLanguage_198.png



投稿の評価のそのボリュームへの依存



タイプの投稿の長さ+投稿の評価のペアを区別します(投稿の長さ-以降、投稿のボリュームと呼びます-投稿の文字の総数として計算されます):



HabrAnalysisInWolframLanguage_199.png



HabrAnalysisInWolframLanguage_200.png



通常の対数スケールで平面上の分布を構築します。



HabrAnalysisInWolframLanguage_201.png



HabrAnalysisInWolframLanguage_202.png



検討中のペアの2次元および3次元の分布密度を構築します。



HabrAnalysisInWolframLanguage_203.png



HabrAnalysisInWolframLanguage_204.png



HabrAnalysisInWolframLanguage_205.png



Habrahabrの平均投稿数は5989文字です。



HabrAnalysisInWolframLanguage_206.png



HabrAnalysisInWolframLanguage_207.png



前と同様に、考慮中のペアの分布を構築します(2次元のランダム変数の分布を作成します)。



HabrAnalysisInWolframLanguage_208.png



HabrAnalysisInWolframLanguage_209.png



特定の文字数を超えない量の投稿が、少なくとも特定の評価を獲得する確率を求めます。



HabrAnalysisInWolframLanguage_210.gif



HabrAnalysisInWolframLanguage_211.png



おわりに



分析があなたの興味を引くこと、そしてあなたにも役立つことを願っています。 もちろん、結果として得られるデータベースに基づいて、このような質問に答えるためにさまざまな研究を行うことができます。この投稿は人気がありますか(人気のレベルを予測しますか)。 コメントの数に影響を与えるものは何ですか? 投稿に最適なテーマを見つける方法は? などなど。 しかし、これらはすでに将来の投稿のトピックです。



4月30日3:21からの更新Powerの注意のおかげで、投稿の評価に関連する計算値が調整されました。 以前に計算された値と比較すると、違いはかなり重要ではないことが判明しました。 ただし、extractData ["Raiting"]関数のバグが解消されたため、アルゴリズムのチェーン全体の整合性が復元されました。



協力のために-Habréまたは私のVKontakteグループに個人的なメッセージを書いてください。

YouTubeチャンネル -ウェビナーとトレーニングビデオ。

新しいコースの登録オンラインコース準備完了。



All Articles