确保您的客户获得更多 SEO 流量的一种可靠方法是将以 404 结尾的有价值的 URL 重定向到等效的 URL。
这些 URL 通常仍然可以获得流量,或者有价值的外部链接进入它们,或者两者兼而有之。
映射 404 URL 的一种懒惰且低效的方法是将所有 URL 重定向到主页或动态搜索结果。 ?
例如,Smarthome 302 将一个不存在的页面重定向到它的主页。此类重定向通常在 Google Search Console 中标记为软 404 错误。
正确的方法是将每个页面分别映射到等效页面(如果存在)。
但是,如果您需要手动执行此过程,则可能会非常乏味、耗时且成本高昂。
通常,您需要依赖网站默认的内部搜索引擎,这几乎没有什么好处。
在本专栏中,我们将学习如何使用神经匹配方法来自动化这项有价值的技术。
以下是我们的行动计划:
- 我们将收集两个要映射的 URL 列表:一个包含 404 URL,另一个包含网站的规范 URL。
- 我们会将 URL 转换为短语,为我们的神经匹配过程做准备。
- 我们将使用一种利用神经网络的通用句子编码器方法。
- 我将解释一些使这成为可能的高级概念。
- 我还将分享社区项目和资源以了解更多信息。
下载URL集
获取404 URL的方法有很多种。您可以运行站点抓取、从 Google 或 Bing Search Console 下载 404 等等。
我最喜欢获取 404 URL 的地方之一是 Ahrefs Broken Backlinks Tool,因为它可以过滤带有外部链接的页面的 404。
但是,Google Search Console 可能会映射更多 404。如果您希望映射所有 404,并且下载次数超过一千,您可能需要考虑使用我们没有此类限制的 Cloudflare 应用程序。
会当它连接到 Google Drive 时,您最多可以导出 100,000 个 URL,或者任意数量的 URL。
接下来,您需要一组所有有效的网站 URL,最好是规范的 URL。
获取此类列表的一种简单方法是下载 XML 站点地图 URL。
如果您的客户没有 XML 站点地图,您可以执行传统的 SEO 爬网来获取 URL。
如果你喜欢代码,你可以从我的文章XML站点地图中找到一些可以改编的内容。
将 URL 集合上传到 Google 云端硬盘
有多种方法可以从 Google Colab 上传它们,包括直接从您的硬盘上传它们。这些天我最喜欢的选择是将它们上传到 Google 云端硬盘,然后从 Colab 访问它们。
如果您有来自 Google 云端硬盘的可共享链接,您可以使用以下代码将文件下载到您的 Google Colab 环境中。
如果您的文件需要保密,下面的代码可能是更好的选择。
将 URL 路径转换为短语
我们可以尝试使用其内容来匹配页面,但是 404 页面没有可用于匹配目的的内容。
Patrick Stokes 分享了使用 Wayback Machine 的巧妙方法。事实上,如果这些网站很受欢迎,他的技术对覆盖面广的网站很有效。然而,对于我们合作的许多网站,这种方法并不像我们希望的那样有效。
对我们有用的一个关键想法是,通过利用大多数 URL 中可用的丰富信息,将 404 页面与网站上的相关页面相匹配。
这个方法非常简单,在实践中效果很好。一个值得注意的例外是当网站选择糟糕的 URL 时,说它们只包含数字。
我们遵循两个简单的步骤:
- 仅获取 URL 的路径。
- 将斜杠、下划线和连字符转换为空格以从 URL 中提取文本。
这是代码:
这就是转换的样子。
通用句子编码器
现在,我们开始有趣的部分!我们将利用深度学习开发另一个强大的用例:语义文本相似性 (STS)。我们将使用 STS 通过其中包含的短语来匹配 URL。
请随时参考我之前的深度学习文章来理解这些概念,我们将在这里重新讨论。
对于我们的匹配任务,我们将利用 Google 的通用句子编码器。
根据他们的描述:
“The Universal Sentence Encoder (USE) encodes text into high-dimensional vectors, which can be used for text classification, semantic similarity, clustering和其他自然语言任务。
该模型经过训练和优化以处理比单词更长的文本,例如句子、短语或短段落。它在各种数据源和各种任务上进行训练,目的是动态适应各种自然语言理解任务,输入为变长英文文本,输出为512维向量,我们将该模型应用到STS benchmark进行语义相似度测试,结果见示例笔记本提供。通用句子编码器模型使用深度平均网络 (DAN) 编码器进行训练。”
我们使用这种方法是因为它比朴素的文本匹配功能更有效。使用允许匹配具有相同含义的页面/短语,即使它不是写的完全一样。您甚至可以匹配以不同语言书写的短语。
下面是一个示例代码片段:
基本上,USE 允许我们在虚拟空间中编码完整的句子(还记得我使用的是第一篇深度学习文章吗? ),因此相似的短语很接近,不同的短语相距很远。
您可以使用 USE 来解决各种自然语言问题。对于我们的具体问题,最合适的任务是语义文本相似性。
当当我们使用语义相似性时,我们想要匹配具有完全相同含义但可能不同短语的句子。
让我们开始吧。
转到使用页面并单击以打开示例 Google Colab 笔记本。
使用“文件”菜单在您的 Google 云端硬盘中保存一份副本。将运行时类型更改为 GPU。
然后点击“Runtime”菜单运行所有单元。
当你向下滚动笔记本时,你几乎可以在最后找到这个有趣的可视化。
这个是一个热图矩阵,以红色显示最相似的短语。
您可以看到有关电话、天气、健康和年龄的短语如何聚集在一起。这是一个非常强大的工具!
准备短语语料库
我们现在将向我们的笔记本添加一些自定义代码,以便将此技术与我们从之前上传的 URL 生成的短语一起使用。
这些简单的代码更改帮助我们将我们自己的 URL/短语聚类。这是我们自己的可视化。
网址样本集中的产品非常相似,所以红色方块比黄色方块多很多。
当结果接近时,我们会为每场比赛生成前 5 名名单,并将其传递给我们的一名团队成员,以手动审查并选择最佳比赛。这种方法仍然减少了大量的手动时间。
计算相似性建议
上面的热图虽然漂亮,但并不能帮助我们获得每个 404 URL 的实际建议。我们将为此创建一个自定义函数。
这里我们有一些 TensorFlow 代码,我们将编码的短语传递给 USE 模型并获得最接近的匹配嵌入。它需要一些解释。
此代码将编码的短语传递给 USE 并取回所有匹配的嵌入。
to_find_embeddings = session.run(similarity message encoding, feed_dict={similarity input placeholder: (phrase)})
由于embeddings只是向量,它们可以通过点积来计算找到最近的向量。
result = np.inner(message_embeddings, to_find_embeddings)
点积是可用于测量两个向量之间距离的技术之一。
您可能想查看维基百科文章以了解有关其工作原理的更多信息。
其余代码限制匹配前 5 个。
要了解更多信息的社区项目和资源
在过去的一个月里,我不知所措通过社区共享的项目。
首先,让我大声感谢 Kristin Tynski,感谢她改进了我的意图分类工作,并提出了一种更快、更好、更便宜的技术。
LocalSEOGuide 的 Dan Leibson 分享了使用 BigQuery、Python 和 Posgres 自动构建关键字分类的脚本。
Hülya Çoban 建立了一个惊人的机器学习模型来预测页面速度分数。
图片来源
语义相似度图片:TensorFlow Hub
作者截取的所有屏幕截图,2019 年 12 月