Этот репозиторий содержит код, чтобы воспроизвести результаты, представленные в нашей истории, «Главный результат поиска Google? Сюрприз! Это Google» из нашей серии Google The Giant.
Наша методология описана в «Как мы проанализировали результаты поиска Google».
Цифры и таблицы из нашего анализа можно найти в папке data .
Поскольку наш полный набор данных был слишком большим, чтобы поместить в GitHub, мы предоставляем подмножество в папке data-subsample .
Чтобы использовать полный набор данных, обратитесь к данным загрузки.
Наш новый инструмент Spatial Web Sanaing можно найти в utils/web_assay.py .
Ноутбуки Jupyter, используемые для предварительной обработки данных и анализа, являются Avialble в папке notebooks .
Описания для каждой записной книжки изложены в разделе ноутбуков ниже.
Убедитесь, что у вас установлен Python 3.6+, мы использовали Miniconda для создания виртуальной среды Python 3.8.
Затем установите пакеты Python:
pip install -r requirements.txt
Некоторые из пакетов имеют дополнительные зависимости ( geckodriver , xvfb , GLFW ), отмеченные в разделах ниже.
Selenium используется для выполнения автоматизации браузеров во время этапов сбора данных и предварительной обработки. Несмотря на то, что мы загружаем Selenium, когда мы устанавливаем требования Python (выше), вы должны также загрузить Firefox, который требует Geckodriver. Подробные инструкции по установке находятся в документации Selenium.
Мы используем PyvirtualDisplay для просмотра без головы. Несмотря на то, что это рассматривается в файле требований Python, у вас есть зависимости, такие как установленные xvfb . В документации PyvirtualDisplay есть подробные инструкции. Если вам не нужно просмотреть без головы, это не является требованием.
Для Debian:
sudo apt-get install xvfb xserver-xephyr vnc4server xfonts-base
Мы используем нативный порт Python библиотеки графики P5.JS для программного рисования фигур. P5 использует GLFW для определенных операций на графике OpenGL, требования немного различаются в зависимости от вашей операционной системы, пожалуйста, проверьте документацию P5, чтобы убедиться, что у вас есть необходимые реквизиты.
Для Mac OS:
brew install glfw
Для Debian:
sudo apt-get install libglfw3-dev libglfw3
Этот репо имеет подмножество (n = 400) нашего окончательного набора данных (n = 15K) в каталоге data_subsample/ . Подмножество в достаточной степени иллюстрирует нашу методологию и предоставляет сопоставимые числа для полного набора данных.
Однако, если вы хотите использовать полный набор данных, вы можете найти его здесь:
# 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/ .
use_full_dataset = True
После загрузки Selenium убедитесь, что он работает! Мы создали тесты, чтобы убедиться, что эти драйверы работают и что вы можете эмулировать мобильное устройство. Это необходимо на этапе предварительной обработки данных, чтобы получить местоположение и размеры элементов.
Вот как сделать эти тесты.
Изменить каталоги в папку Tests:
cd tests
Тогда есть два теста - один, который проверяет функциональность синхронизации
python test_parsers.py
и один, который проверяет полный поток веб -анализа, используя несколько примеров в папке data/tests .
python test_assay.py
Если вы хотите переоценить наши результаты, записные книжки следует запускать последовательно.
Однако, если вы хотите быстрого обзора методологии, вам нужно только заботиться о ноутбуках с Asterix (*).
Практическая демонстрация функциональности веб -анализов в результате поиска. Это проходит через базовый код, который объясняет нашу методику.
Это запускает поток веб -анализа в целом наборе данных ввода HTML -страниц, которые мы собрали.
Предварительная обработка данных. Включает в себя стандартизированные категории, возвращаемые анализаторами, нормализацию продолжительности веб -страниц и расчетную площадь в 50 квантилях.
Основной анализ ноутбука, которая воспроизводит рисунки и таблицы, найденные в нашем разделе результатов.
Мыслительный эксперимент, который показывает, как изменится наши расчеты для Google и Non-Google Real Estate, если бы мы рассмотрели различные интерпретации того, что включено в каждую категорию. Это в нашем разделе ограничений.
Показывает, как расчеты недвижимости различаются между различными кластерами поиска. Поиски сгруппированы вместе на основе уникальных «сущностей» или темах поиска из Google Trends. Это в нашем разделе ограничений.
После того, как мы обнаружили 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 .
68 веб -анализаторов, которые мы используем для классификации элементов страницы поиска Google, находятся в utils/parsers.py .
Вы найдете больше контекста о том, как они работают в приложении нашей бумаги метода.
Наша обертка вокруг P5.JS находится в utils/draw_img.py .
Инструкции для инструмента аннотации Prodity находится в 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 содержит DOP -проверку данных от двух аннотаторов.
data/output содержит таблицы и цифры, используемые в нашей статье «Показать свою рабочую статью».
data/test содержит некоторые результаты примера поиска HTML для тестов и notebooks/0-demo-web-assay.ipynb .
Если вы загружаете полный набор данных, содержимое должно быть извлечено в data/ , отражая организацию data_subsample/ .
data_subsample/ содержит необработанный HTML ( data_subsample/input/ ) и посредников для случайного подсчета 400 результатов поиска из нашей выборки 15K.
data_subsample/
├── input
│ └── google_search
└── intermediary
├── element_metadata.jsonl.gz
└── google_search
Этот меньший набор данных поставляется с репозиторием, чтобы своевременно продемонстрировать нашу методологию и менее интенсивно, чем полный набор данных.
element_metadata.json1.gz - это предварительно обработанные метаданные пространственных элементов, возвращенные из веб -анализа. Большая часть нашего анализа использует этот набор данных, будь то из подмножества или полного набора данных.
Copyright 2020, Markup News Inc.
Перераспределение и использование в исходных и бинарных формах, с изменением или без них разрешены при условии, что следующие условия выполняются:
Перераспределение исходного кода должно сохранить вышеуказанное уведомление об авторском праве, этот список условий и следующее отказ от ответственности.
Перераспределение в двоичной форме должно воспроизводить вышеуказанное уведомление об авторском праве, этот список условий и следующее отказ от ответственности в документации и/или других материалах, предоставленных при распределении.
Ни имя владельца авторских прав, ни имена его участников не могут использоваться для одобрения или продвижения продуктов, полученных из этого программного обеспечения, без конкретного предварительного письменного разрешения.
Это программное обеспечение предоставляется владельцами авторского права и участниками «как есть», и любые явные или подразумеваемые гарантии, включая, но не ограничиваясь, подразумеваемые гарантии товарной пригодности и пригодности для определенной цели, отказаны. Ни в коем случае владелец авторского права не несет ответственности за любые прямые, косвенные, случайные, особые, примерные или косвенные убытки (включая, но не ограничиваясь, закупку заместительных товаров или услуг; потеря использования, данные или прибыль; или перерыв в бизнесе), однако, вызвано и по какой -либо теории, будь то в контракте, строгое лику Советуют о возможности такого ущерба.