主题分类

了解系统如何推断主题、如何将主题分配给用户的浏览器以及用户如何控制自己的主题列表。

实现状态

什么是主题?

在 Topics API 中,主题是指用户感兴趣的主题,可通过他们访问的网站来证实。

主题是一个信号,可帮助广告技术平台选择相关广告。与第三方 Cookie 不同,在分享此类信息时,系统不会透露有关用户本身或用户浏览活动的更多信息。

借助 Topics API,第三方(例如广告技术平台)可以观察用户感兴趣的主题,然后访问这些主题。例如,API 可能会为访问 knitting.example 网站的用户建议主题“Fiber & Textile Arts”。

Topics API 使用的主题列表是经过人工挑选的公开主题,旨在避免敏感类别。这是当前列表,后面会不断扩展。该列表采用分类的结构。主题可以是宽泛的,也可以是更具体的。例如,Food & Drink 就是一个广义类别,其子类别为 Cooking & Recipes。子类别可进一步分为其他子类别。

这种主题分类需要在实用性和隐私性之间进行权衡。如果主题太过具体,则可用于识别具体用户。如果这些选项过于宽泛,则对选择广告或其他内容没有帮助。

构建主题分类时,请记住两个基本要求:

  • 支持针对用户兴趣投放广告
  • 保障用户安全并保护其隐私

这会带来几个问题。例如:

  • 要让该 API 根据用户的浏览活动推断其感兴趣的主题,同时保护用户隐私,最佳方式是什么?
  • 如何构建分类以使其更实用?
  • 分类应包含哪些具体项?

API 如何推断网站的主题

主题派生自分类器模型,可将网站主机名映射到零个或多个主题。 分析其他信息(例如完整网址或网页内容)可能有助于获得更相关的广告,但也可能会降低隐私保护。

用于将主机名映射到主题的分类器模型已公开提供,正如 explainer 中所述,您可以通过浏览器开发者工具查看网站的主题。该模型预计会随着时间的推移不断发展和改进,并会定期更新;我们仍在考虑这方面的频率。

只有包含调用 Topics API 的代码的网站才会包含在符合主题频率计算条件的浏览记录中,API 调用方只会接收它们观察到的主题。也就是说,如果没有网站或嵌入式服务调用 API,网站就不符合主题频率计算条件。

此外,调用方只能接收其代码“看过”的主题。因此,如果另一个调用方的代码为某个用户的浏览器注册了一个主题(例如 /Autos & Vehicles/Motor Vehicles (By Type)/Hatchbacks),但您的代码并未导致针对该用户的浏览器注册该主题,那么当您从嵌入的代码调用此 API 时,您将无法了解该用户的浏览器的相关主题。请注意,由于 API 现在包含已观察到的祖先实体,因此上述示例 /Autos & Vehicles/Motor Vehicles (By Type)/Hatchbacks 也会导致观察到 Autos & VehiclesMotor Vehicles

系统会根据顶级网站为调用方重新计算为用户返回的主题。例如,如果 adtech.examplenews-a.example 上请求了用户的主题,然后在 news-b.example 上又在 news-c.example 上请求了用户的主题,则系统会在每个网站上重新计算返回给他们的主题。这意味着调用方可能会针对不同顶级网站上的用户获得不同的主题,因为为用户返回的(最多)三个主题是从过去三个周期的前五个主题中随机选择的(获得一个随机主题的概率为 5%)。这使得调用方更难按主题识别用户,因为在不同顶级网站上,主题可能有所不同(即使对于相同的用户、调用方和周期也是如此)。

分类器模型

系统会为 50,000 个顶级网域手动挑选主题,并使用此精选方法来训练分类器。此列表可在 override_list.pb.gz 中找到,后者位于 Classifier 标签页中当前模型的 chrome://topics-internals/ 下。API 会使用列表中的网域与主题之间的关联来代替模型本身的输出。

已选中“分类器”面板的 chrome://topics-internals 页面。
chrome://topics-internals 页面“分类器”面板列出了模型版本、其路径以及与列出的每个主机关联的主题。

如需直接运行模型,请参阅 TensorFlow 的模型运行指南

如需检查 override_list.pb.gz 文件,请先将其解压缩:

gunzip -c override_list.pb.gz > override_list.pb

使用 protoc 将其检查为文本:

protoc --decode_raw < override_list.pb > output.txt

GitHub 上提供了带 ID 的主题的完整分类

针对分类器模型提供反馈或输入

您可以通过多个渠道提供有关 Topics API 的反馈。如需有关分类器模型的反馈,建议您提交 GitHub 问题或回复现有问题。例如:

用户最感兴趣的前五个主题是如何选择的

该 API 会为每个周期返回一个主题,最多返回三个。如果返回了三个,则这包括当前周期和前两个周期的主题。

  1. 在每个周期结束时,浏览器会编译一个符合以下条件的网页列表:
    • 用户在相应周期内访问了该网页。
    • 该网页包含调用 document.browsingTopics() 的代码。
    • 该 API 已启用(例如,未被用户屏蔽或通过响应标头屏蔽)。
  2. 用户设备上的浏览器使用 Topics API 提供的分类器模型将每个网页的主机名映射到主题列表。
  3. 浏览器累积主题列表。
  4. 浏览器按频率生成前五个主题的列表。

然后,document.browsingTopics() 方法会针对每个周期从前五个主题中随机返回一个主题,且有 5% 的可能性会从完整的主题分类中随机选择其中任何主题。在 Chrome 中,用户还可以移除个别主题,或清除其浏览记录,以减少该 API 返回的主题数量。用户也可以选择停用该 API。

您可以通过 chrome://topics-internals 页面查看当前周期内观察到的主题的相关信息。

API 如何确定哪些调用方会看到哪些主题

API 调用方仅接收最近观察到的主题,并且用户的主题会针对每个周期刷新一次。这意味着 API 会提供一个滚动窗口,在该窗口中,给定调用方可以接收某些主题。

下表概述了用户单个周期内假设的浏览记录的示例(尽管很小),显示了与其访问过的网站相关的主题,以及每个网站上存在的 API 调用方(在网站包含的 JavaScript 代码中调用 document.browsingTopics() 的实体)。

网站 主题 网站上的 API 调用方
yoga.example 健身 广告技术平台 1.示例 广告技术 2.example
knitting.example 手工艺品 adtech1.example
远足-假日.example 健身、旅行与交通 adtech2.example
diy-clothing.example 手工艺品、流行与时尚 [无]

在周期结束时(目前为一周),Topics API 会生成浏览器本周的热门主题。

  • adtech1.example 现在有资格接收“健身”和“手工艺”主题,因为它在 yoga.example 和 knitting.example 上观察到了这两个主题。
  • adtech1.example 不符合接收此用户的“旅行与交通”主题的条件,因为该主题未出现在该用户最近访问过的任何与该主题相关的网站上。
  • adtech2.example 已看到“健身”和“旅行与交通”主题,但尚未看到“手工艺品”主题。

用户访问了主题为“时尚与时尚”的 diy-clothing.example,但未在该网站上调用 Topics API。此时,这意味着 API 不会针对任何调用方返回“Fashion & Style”主题。

在第 2 周,该用户访问了另一个网站:

网站 主题 网站上的 API 调用方
sewing.example 手工艺品 adtech2.example

此外,将 adtech2.example 中的代码添加到 diy-clothing.example 中:

网站 主题 网站上的 API 调用方
diy-clothing.example 手工艺品、流行与时尚 adtech2.example

这意味着 adtech2.example 现在能够收到第 1 周的“健身”和“旅行与交通”主题,但直到下一个周期(第 3 周)才能收到“手工艺品”和“时尚与时尚”主题。这可确保第三方无法比使用 Cookie 更详细地了解用户的过往(在本例中,即对时尚感兴趣)。

再过两周后,如果用户未访问任何主题中包含 adtech2.example 中的代码的网站,那么“健身”和“旅行与交通”可能会从 adtech2.example 的符合条件的主题列表中删除。

用户控制、透明度和选择停用

用户应该能够了解 Topics API 的用途,了解他人对自己的描述,知道该 API 何时正在使用中,并收到用于启用或停用该 API 的控件。

该 API 的人类可读分类法可让用户了解和控制浏览器可能会为其建议的主题。用户可以移除他们特别不希望 Topics API 与广告客户或发布商分享的主题,并且可以通过一些控件告知用户此 API 以及如何启用或停用此 API。Chrome 在 chrome://settings/adPrivacy 上提供了 Topics API 的相关信息和设置。此外,在无痕模式下,API 调用方无法使用主题。当浏览记录被清除时,主题也会随之清除。

在以下情况下,返回的主题列表将为空:

  • 用户通过浏览器设置 (chrome://settings/adPrivacy) 选择停用 Topics API。
  • 用户已清除主题(通过 chrome://settings/adPrivacy 上的浏览器设置)或清除了 Cookie。
  • 浏览器处于无痕模式。

解释器详细介绍了隐私目标以及该 API 如何实现这些目标。

网站停用

除了能够选择停用 Topics 外,您还可选择为自己的网站或网站上的网页停用 Topics。开发者指南中介绍了具体操作方法。

在启用了 prebid.js 的网站上使用 Topics API

正如 Prebid 7 的版本中所述,社区积极通过一个新模块开发与 Topics API 的集成。 此模块已于 2022 年 12 月合并。

如需了解详情,请访问以下资源:

  • 阅读 Prebid 的 Topics API 模块文档
  • 如需了解详情,请通过 Prebid.js 提供的标准渠道与其联系。

后续步骤

互动和分享反馈