이 저장소에는 우리의 스토리 "Google의 최고 검색 결과? 놀라움! Google"인 Google The Giant에서 소개 된 결과를 재현하기위한 코드가 포함되어 있습니다.
우리의 방법론은 "Google의 검색 결과를 분석하는 방법"에 설명되어 있습니다.
분석의 그림과 테이블은 data 폴더에서 찾을 수 있습니다.
전체 데이터 세트가 github에 배치하기에는 너무 커서 data-subsample 폴더에 서브 세트를 제공합니다.
전체 데이터 세트를 사용하려면 다운로드 데이터를 참조하십시오.
우리의 새로운 공간 웹 파싱 도구는 utils/web_assay.py 에서 찾을 수 있습니다.
데이터 전처리 및 분석에 사용되는 Jupyter 노트북은 notebooks 폴더의 조화에 적용됩니다.
각 노트북에 대한 설명은 아래 노트북 섹션에 요약되어 있습니다.
Python 3.6+가 설치되어 있는지 확인하십시오. Miniconda를 사용하여 Python 3.8 가상 환경을 만듭니다.
그런 다음 파이썬 패키지를 설치하십시오.
pip install -r requirements.txt
일부 패키지에는 아래 섹션에 언급 된 추가 종속성 ( geckodriver , xvfb , GLFW )이 있습니다.
셀레늄은 데이터 수집 및 전처리 단계에서 브라우저 자동화를 수행하는 데 사용됩니다. 파이썬 요구 사항 (위)을 설치할 때 셀레늄을 다운로드하지만 Geckodriver가 필요한 Firefox를 다운로드해야합니다. 자세한 설치 지침은 Selenium의 문서에 있습니다.
우리는 헤드리스 브라우징에 pyvirtualdisplay를 사용합니다. 이것은 Python 요구 사항 파일에 포함되지만 xvfb 와 같은 종속성이 설치되어 있습니다. PyvirtualDisplay의 문서에는 자세한 지침이 있습니다. 헤드리스 브라우징을 할 필요가 없다면 이것은 요구 사항이 아닙니다.
데비안을 위해 :
sudo apt-get install xvfb xserver-xephyr vnc4server xfonts-base
그래프 라이브러리 P5.JS의 기본 Python 포트를 사용하여 모양을 프로그래밍하게 그립니다. P5는 OpenGL 그래픽에서 특정 작업에 GLFW를 사용합니다. 요구 사항은 운영 체제를 기반으로 약간 다릅니다. P5 문서를 확인하여 필요한 요건이 있는지 확인하십시오.
Mac OS :
brew install glfw
데비안을 위해 :
sudo apt-get install libglfw3-dev libglfw3
이 repo에는 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
스크립트는 두 개의 tar.xz 파일을 다운로드하여 data/ 폴더에서 포장을 풀어줍니다.
data_subsample/ 에있는 서브 세트 데이터와 함께 드라이 런을 제안합니다.
전체 데이터 세트가 있으면 Jupyter Notebooks의 시작시이 스위치를 notebooks/ 로 뒤집을 수 있습니다.
use_full_dataset = True
셀레늄을 다운로드 한 후 작동하는지 확인하십시오! 우리는 이러한 드라이버가 작동하고 모바일 장치를 모방 할 수 있도록 테스트를 만들었습니다. 이는 요소의 위치 및 치수를 얻기 위해 데이터 전처리 단계에서 필요합니다.
다음은 이러한 테스트를 수행하는 방법입니다.
디렉토리 변경 테스트 폴더 :
cd tests
그런 다음 두 가지 테스트가 있습니다. 하나는 파서의 경작을 테스트합니다.
python test_parsers.py
data/tests 폴더의 여러 예를 사용하여 전체 웹 분석 흐름을 테스트하는 것.
python test_assay.py
결과를 다시 소개하려면 노트북을 순차적으로 실행해야합니다.
그러나 방법론에 대한 빠른 개요를 원한다면 Asterix (*)를 사용하여 노트북에 대해서만 걱정하면됩니다.
검색 결과에서 웹 분석 기능의 실질적인 데모. 이것은 우리의 방법에서 설명하는 기본 코드를 살펴 봅니다.
이것은 우리가 수집 한 HTML 페이지의 입력 데이터 세트 전체에서 웹 분석 흐름을 실행합니다.
데이터 전처리. 파서가 반환 한 표준화 카테고리, 웹 페이지의 길이 정규화 및 50 Quantiles의 계산 영역을 포함합니다.
연구 결과 섹션에서 발견 된 그림과 표를 재현하는 주요 분석 노트.
Google 및 Google이 아닌 부동산에 대한 계산이 어떻게 변경 될지를 보여주는 사고 실험은 각 범주에 포함 된 내용에 대한 다른 해석을 고려했다면. 이것은 우리의 한계 섹션에 있습니다.
검색 클러스터마다 부동산 계산이 어떻게 다른지 보여줍니다. 검색은 고유 한 "엔티티"또는 Google 트렌드의 검색 주제를 기반으로 함께 그룹화됩니다. 이것은 우리의 한계 섹션에 있습니다.
700 점으로 염색 된 검색을 스팟 체크 한 후 분류의 정확도와 부동산 경계의 정밀도에 대한 오류율을 계산할 수있었습니다. 우리는 우리가 잘못 분류 된 픽셀을 설명함으로써 기술적 결점의 영향을 더 측정합니다. 이것은 우리의 부록에 있습니다.
이 폴더에는 공간 웹 구문 분석 도구 인 웹 분석에 대한 도우미 기능과 코드가 포함되어 있습니다.
utils/
├── config.py
├── draw_img.py
├── parsers.py
├── prodigy
│ ├── config
│ │ ├── prodigy.json
│ │ └── serp-help.html
│ └── search_audit.py
├── timeout.py
└── web_assay.py
기본 클래스 및 Google 검색 웹 분석은 utils/web_assay.py 에 있습니다.
Google 검색 페이지의 요소를 분류하는 데 사용하는 68 개의 웹 파서는 utils/parsers.py 에 있습니다.
우리의 방법 논문의 부록에서 그들이 어떻게 작동하는지에 대한 더 많은 맥락을 찾을 수 있습니다.
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 웹 분석법을 사용하여 스크린 샷의 예제가 포함되어 있습니다. data/error_analysis 에는 두 개의 주석기의 스팟 점검 데이터가 포함되어 있습니다.
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 는 웹 분석에서 반환 된 전처리 공간 요소 메타 데이터입니다. 대부분의 분석은이 데이터 세트를 서브 세트 또는 전체 데이터 세트에서 사용하든이 데이터 세트를 사용합니다.
Copyright 2020, The Markup News Inc.
수정 유무에 관계없이 소스 및 이진 형태의 재분배 및 사용은 다음과 같은 조건이 충족되면 허용됩니다.
소스 코드의 재분배는 위의 저작권 통지,이 조건 목록 및 다음 면책 조항을 유지해야합니다.
이진 형식의 재분배는 위의 저작권 통지,이 조건 목록 및 문서의 다음 면책 조항 및 배포와 함께 제공되는 기타 자료를 재현해야합니다.
저작권 보유자의 이름이나 기고자의 이름은 사전 서면 허가 없이이 소프트웨어에서 파생 된 제품을 보증하거나 홍보하는 데 사용될 수 없습니다.
이 소프트웨어는 저작권 보유자 및 기고자 "와"그대로 "및 상업성에 대한 묵시적 보증 및 특정 목적에 대한 적합성을 포함하되 이에 국한되지 않는 명시 적 또는 묵시적 보증에 의해 제공됩니다. 어떠한 경우에도 저작권 보유자 또는 기고자는 직접, 간접적, 부수적, 특수, 모범적 또는 결과적 손해 (대체 상품 또는 서비스 조달, 사용 손실, 데이터 또는 이익; 또는 사업 중단)에 대해 책임을지지 않으면 서, 부정적인 책임 또는 불법 행위에 관계없이 어떤 책임이든, 불법 행위를 포함하는지에 대한 책임은 어떠한 경우에도 책임을지지 않습니다. 그러한 손상의 가능성에 대해 조언한다면.