该存储库包含代码,以重现我们的故事中的“ Google的最佳搜索结果?惊喜!是Google”中的发现中的代码,我们系列的Google The Giant。
我们的方法论在“我们如何分析Google的搜索结果”中描述。
我们分析中的数字和表可以在data文件夹中找到。
由于我们的完整数据集太大而无法放置在GitHub中,因此我们在data-subsample文件夹中提供了一个子集。
要使用完整的数据集,请参阅下载数据。
我们的新型空间网络解析工具可以在utils/web_assay.py中找到。
用于数据预处理和分析的jupyter笔记本在notebooks文件夹中是避免使用的。
下面的“笔记本”部分概述了每个笔记本的说明。
确保您安装了Python 3.6+,我们使用Minconda创建了Python 3.8虚拟环境。
然后安装Python软件包:
pip install -r requirements.txt
某些软件包在以下各节中指出了其他依赖关系( geckodriver , xvfb , GLFW )。
硒用于在数据收集和预处理步骤中执行浏览器自动化。尽管我们在安装Python要求(上)时下载Selenium,但您必须确保还下载需要Geckodriver的Firefox。详细的安装说明在Selenium的文档中。
我们使用PyvirtualDisplay进行无头浏览。尽管Python需求文件中介绍了这一点,但请双检查您的依赖项,例如已安装的xvfb 。 PyvirtualDisplay的文档中有详细的说明。如果您不需要进行无头浏览,那么这不是必需的。
对于Debian:
sudo apt-get install xvfb xserver-xephyr vnc4server xfonts-base
我们使用图形库P5.js的本机Python端口来编程绘制形状。 P5使用GLFW用于OpenGL图形上的某些操作,根据操作系统的要求有所不同,请检查P5文档以确保您有必要的必要条件。
对于Mac OS:
brew install glfw
对于Debian:
sudo apt-get install libglfw3-dev libglfw3
此存储库中的最终数据集(n = 15k)的子集(n = 400)在data_subsample/ Directory中。该子集充分说明了我们的方法,并为完整数据集提供了可比的数字。
但是,如果要使用完整的数据集,则可以在这里找到它:
# 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/然后再进行此操作!
拥有完整的数据集后,您可以在notebooks/中的Jupyter笔记本电脑的开头翻转此开关。
use_full_dataset = True
下载硒后,请确保它可以正常工作!我们创建了测试,以确保这些驱动程序可以工作,并且您可以模仿移动设备。这在数据预处理步骤中必须进行,以获取元素的位置和尺寸。
这是进行这些测试的方法。
将目录更改为测试文件夹:
cd tests
然后有两种测试 - 一个测试解析器的效果
python test_parsers.py
一个使用data/tests文件夹中的几个示例测试完整的Web分析流。
python test_assay.py
如果您想重新编码我们的结果,则应依次运行笔记本。
但是,如果您想快速概述该方法,则只需要使用Asterix(*)的笔记本电脑。
Web分析的实用演示是搜索结果的功能。这将介绍我们方法文学中解释的基础代码。
这将在我们收集的HTML页面的全部输入数据集上运行Web测定流。
数据预处理。包括由解析器返回的标准化类别,使网页的长度正常化,并在50个分位数中计算区域。
重现我们发现部分中发现的数字和表的主要分析笔记本。
一个思想实验表明,如果我们考虑了对每个类别中包含的内容的不同解释,我们对Google和非Google房地产的计算将如何改变。这是我们的限制部分。
显示了不同搜索群中房地产的计算如何不同。根据唯一的“实体”或Google趋势中的搜索主题将搜索分组在一起。这是我们的限制部分。
在进行了700个染色的搜索之后,我们能够计算出分类准确性和房地产边界精确度的错误率。我们通过考虑我们错误或分类的像素来进一步衡量技术缺陷的影响。这在我们的附录中。
该文件夹包含用于我们的空间Web解析工具Web Assay的辅助功能和代码。
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中。
您会发现有关它们在我们方法文学论文附录中的工作方式的更多背景。
我们围绕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分析染色的屏幕截图的示例 - 我们的新型Web解析工具。 data/error_analysis包含来自两个注释者的点检查数据。
data/output包含我们的表演文章中使用的表和数字。
data/test包含一些示例搜索结果的HTML,用于测试和演示笔记本notebooks/0-demo-web-assay.ipynb 。
如果您下载完整的数据集,则应将内容提取到data/中,以反映data_subsample/的组织。
data_subsample/包含RAW HTML( data_subsample/input/ )和中介机构,用于从15K样本中随机的400个搜索结果。
data_subsample/
├── input
│ └── google_search
└── intermediary
├── element_metadata.jsonl.gz
└── google_search
与整个数据集相比,这个较小的数据集使用存储库及时及时证明我们的方法论。
element_metadata.json1.gz是从Web测定中返回的预处理空间元素元数据。我们的大部分分析都使用此数据集,无论是从子集还是完整数据集中。
版权所有2020年,Markup News Inc.
如果满足以下条件:
源代码的再分配必须保留上述版权通知,此条件列表和以下免责声明。
二进制形式的重新分配必须复制上述版权通知,此条件列表以及文档和/或分发提供的其他材料中的以下免责声明。
未经具体的事先书面许可,版权持有人的名称和贡献者的名称都不能用于认可或推广从该软件中获得的产品。
该软件由版权所有者和贡献者“按原样”提供,任何明示或暗示的保证,包括但不限于对适销性和特定目的适合性的隐含保证。在任何情况下,版权持有人或贡献者均不得对任何直接,间接,偶然,特殊,特殊,示例性或结果损害均承担任何责任(包括但不限于替代商品或服务的采购,损失,数据或利润损失,数据或利润;还是造成的,无论是在合同中造成的,或者在任何责任中造成的责任,或者是否有任何责任,或者在任何责任中,是否有任何责任,或者是否有任何责任,或者是否有责任,是否有责任,是否有责任。告知可能造成这种损害的可能性。