このリポジトリには、ストーリー「Googleのトップ検索結果?サプライズ!Googleです」Google The Giantのストーリーで紹介されている調査結果を再現するコードが含まれています。
私たちの方法論は、「Googleの検索結果を分析する方法」で説明されています。
分析の図と表は、 dataフォルダーにあります。
完全なデータセットは大きすぎてGitHubに配置できないため、 data-subsampleフォルダーにサブセットを提供します。
完全なデータセットを使用するには、ダウンロードデータを参照してください。
私たちの新しい空間Web解析ツールはutils/web_assay.pyにあります。
データの前処理と分析に使用されるjupyterノートブックは、 notebooksフォルダーでは攻撃性があります。
各ノートブックの説明は、以下のノートブックセクションで概説しています。
Python 3.6+がインストールされていることを確認してください。Minicondaを使用してPython 3.8仮想環境を作成します。
次に、Pythonパッケージをインストールします。
pip install -r requirements.txt
一部のパッケージには、以下のセクションに記載されている追加の依存関係( geckodriver 、 xvfb 、 GLFW )があります。
Seleniumは、データ収集および前処理手順中にブラウザの自動化を実行するために使用されます。 Python要件(上記)をインストールするときにSeleniumをダウンロードしますが、Geckodriverが必要なFirefoxもダウンロードする必要があります。詳細なインストール手順は、Seleniumの文書にあります。
ヘッドレスブラウジングにはpyvirtualdisplayを使用します。これはPython要件ファイルでカバーされていますが、 xvfbなどの依存関係がインストールされていることを再確認してください。 PyvirtualDisplayのドキュメントには、詳細な指示があります。ヘッドレスブラウジングを行う必要がない場合、これは要件ではありません。
Debianの場合:
sudo apt-get install xvfb xserver-xephyr vnc4server xfonts-base
グラフライブラリP5.jsのネイティブPythonポートを使用して、プログラムで形状を描画します。 P5は、OpenGLグラフィックスの特定の操作にGLFWを使用します。要件はオペレーティングシステムに基づいて少し異なります。P5ドキュメントを確認して、必要な必要条件があることを確認してください。
Mac OSの場合:
brew install glfw
Debianの場合:
sudo apt-get install libglfw3-dev libglfw3
このレポは、 data_subsample/ directoryの最終データセット(n = 15k)のサブセット(n = 400)を備えています。サブセットは私たちの方法論を十分に示し、完全なデータセットに匹敵する数字を提供します。
ただし、完全なデータセットを使用する場合は、こちらから見つけることができます。
# To reproduce the data preprocessing in its entirety start with the HTML files here:
https://markup-public-data.s3.amazonaws.com/google-search-audit/input_files.tar.xz
# To reproduce the analysis you just need the spatial metadata jsonl files parsed from the HTML files:
https://markup-public-data.s3.amazonaws.com/google-search-audit/intermediary_files.tar.xz
または、私たちを信頼している場合は、次のスクリプトを実行できます。
sh data/download-full-dataset.sh
スクリプトは、2つのtar.xzファイルをダウンロードし、 data/フォルダーに解凍します。
これを行う前に、 data_subsample/ beforeで見つかったサブセットデータを使用してドライランをお勧めします!
完全なデータセットを取得したら、 notebooks/でJupyterノートブックの開始でこのスイッチをひっくり返すことができます。
use_full_dataset = True
Seleniumをダウンロードした後、それが機能していることを確認してください!これらのドライバーが機能し、モバイルデバイスをエミュレートできることを確認するためのテストを作成しました。これは、要素の位置と寸法を取得するために、データの前処理ステップで必要です。
これらのテストを行う方法は次のとおりです。
ディレクトリをテストフォルダーに変更します。
cd tests
次に、2つのテストがあります。1つはパーサーのファクション性をテストします
python test_parsers.py
また、 data/testsフォルダーのいくつかの例を使用して、完全なWebアッセイフローをテストするもの。
python test_assay.py
結果を再整理したい場合は、ノートブックを連続的に実行する必要があります。
ただし、方法論の概要をすばやく概要したい場合は、Asterix(*)を使用したノートブックに関心があるだけです。
検索結果のWebアッセイ機能の実用的なデモ。これは、MethodLogyで説明している基礎となるコードを進めます。
これにより、収集したHTMLページの入力データセット全体でWebアッセイフローが実行されます。
データの前処理。パーサーによって返された標準化カテゴリ、Webページの長さの正規化、50のカリナイルの領域の計算が含まれます。
調査結果セクションにある数字と表を再現するメイン分析ノートブック。
各カテゴリに含まれているものの異なる解釈を考慮した場合、GoogleとNongoogleの不動産の計算がどのように変化するかを示す思考実験。これは私たちの制限セクションにあります。
不動産の計算が、検索のさまざまなクラスター間でどのように異なるかを示しています。検索は、一意の「エンティティ」またはGoogleトレンドの検索トピックに基づいてグループ化されます。これは私たちの制限セクションにあります。
700個の染色検索をスポットチェックした後、分類の精度と不動産境界の精度のエラー率を計算することができました。私たちは、私たちが誤って分類したピクセルを占めることにより、技術的な欠点の影響をさらに測定します。これは私たちの付録にあります。
このフォルダーには、空間Web解析ツールであるWebアッセイのヘルパー機能とコードが含まれています。
utils/
├── config.py
├── draw_img.py
├── parsers.py
├── prodigy
│ ├── config
│ │ ├── prodigy.json
│ │ └── serp-help.html
│ └── search_audit.py
├── timeout.py
└── web_assay.py
基本クラスとGoogle検索Webアッセイはutils/web_assay.pyにあります。
Google検索ページの要素を分類するために使用する68のWebパーサーはutils/parsers.pyにあります。
Method -Logy Paperの付録でそれらがどのように機能するかについて、より多くのコンテキストを見つけることができます。
P5.jsの周りのラッパーはutils/draw_img.pyにあります。
注釈ツールの生産の指示はutils/prodigyです。エラーチェックされたステンドスクリーンショットをチェックするための注釈ガイドはutils/prodigy/config/serp-help.htmlです。
このディレクトリは、完全なデータセットからの仲介者と出力が保存される場所です。
data/
├── assets
│ ├── stained-screenshot-examples
│ └── assay-flow.png
├── error_analysis
│ ├── adrianne-annotations.csv.gz
│ ├── adrianne-pixel-errors.csv
│ ├── leon-annotations.csv.gz
│ └── leon-pixel-errors.csv
├── output
│ ├── figures
│ └── tables
└── test
├── input_local_searches
├── intermediate_local_searches
└── parser_output
data/assets/stained-screenshot-examples Webアッセイを使用して染色されたスクリーンショットの例が含まれています。 data/error_analysisには、2つのアノテーターからのスポットチェックデータが含まれています。
data/output私たちのショーで使用されているテーブルと数字が含まれています。
data/testには、いくつかのサンプル検索結果のテスト用のHTMLとデモノートブックnotebooks/0-demo-web-assay.ipynb含まれています。
完全なデータセットをダウンロードする場合、コンテンツはdata_subsample/の組織をミラーリングするdata/に抽出する必要があります。
data_subsample/には、15Kサンプルの400の検索結果のランダムなサブセットのRAW HTML( data_subsample/input/ )および仲介者が含まれます。
data_subsample/
├── input
│ └── google_search
└── intermediary
├── element_metadata.jsonl.gz
└── google_search
この小さなデータセットには、完全なデータセットよりもタイムリーでリソースの少ない方法で方法論を実証するためにリポジトリが付属しています。
element_metadata.json1.gz 、Webアッセイから返された前処理された空間要素メタデータです。分析の大部分は、サブセットからのものであろうと完全なデータセットであろうと、このデータセットを使用します。
Copyright 2020、The Markup News Inc.
変更とバイナリ形式での再配布と使用は、変更を伴うまたは伴わない場合、次の条件が満たされている場合が許可されています。
ソースコードの再配布は、上記の著作権通知、この条件リスト、および次の免責事項を保持する必要があります。
バイナリ形式の再配布は、上記の著作権通知、この条件のリスト、および分布に提供されたドキュメントおよび/またはその他の資料の次の免責事項を再現する必要があります。
著作権所有者の名前もその貢献者の名前も、事前の書面による許可なしにこのソフトウェアから派生した製品を支持または宣伝するために使用することはできません。
このソフトウェアは、著作権所有者と貢献者によって「現状のまま」、および商品性と特定の目的に対する適合性の暗黙の保証を含むがこれらに限定されない明示的または黙示的な保証が否認されます。いかなる場合でも、著作権所有者または貢献者は、直接的、間接的、偶発的、特別な、例示的、または結果的な損害賠償(代替品またはサービスの調達を含むがこれらに限定されない)に対して責任を負いません。そのような損害の可能性の。