使用客户端事件数据改进预训练模型 (v3)

Cloud Talent Solution 服务将机器学习技术融入招聘信息搜索体验,可为求职者提供高质量的搜索结果,远超基于关键字的典型方法极限。CTS 以开箱即用的方式,将相关性模型和招聘信息/技能本体应用于您的招聘信息细节。您可以根据求职者的活动来记录客户端事件,从而改善返回给求职者的结果。

本指南概述了利用此功能的两种方法。我们建议您使用 createClientEventRequest API 方法,原因是该方法避开了使用 Cloud Pub/Sub 向 Cloud Talent Solution 发送消息的身份验证质询,提供了一组干净的 API 来实现分析框架

当求职者执行特定操作时,您可以使用 API 来记录该操作。例如,与服务交互的求职者或其他实体已在其视图中呈现一则招聘信息(或招聘信息列表),例如在采用压缩或剪辑格式的搜索结果列表中。在这种情况下,您可以向 Cloud Talent Solution 发送一个 IMPRESSION 事件,以提供该搜索结果的上下文,以及可供求职者查看的内容。此外,当求职者点击某条招聘信息结果以查看其完整的描述时,您可以发送一个 VIEW 事件,记载该求职者对于此职位的兴趣。

用法

以下示例展示了如何使用 API 向 Cloud Talent Solution 发送消息。与服务交互的求职者或其他实体已在其视图中呈现一则招聘信息(或招聘信息列表),例如在采用压缩或剪辑格式的搜索结果列表中。此事件通常与求职者在单个页面上查看招聘信息列表相关。

Python

如需详细了解如何安装和创建 Cloud Talent Solution 客户端,请参阅 Cloud Talent Solution 客户端库

def create_client_event(client_service, event_id, request_id, related_job_names):
    now = datetime.datetime.now()
    date = now.strftime('%Y-%m-%dT%H:%M:%SZ')

    client_event_to_be_created = {
        'create_time': date,
        'event_id': event_id,
        'parent_event_id': 'NULL',
        'job_event': {
            'jobs': related_job_names,
            'type': 'VIEW'
        },
        'request_id': request_id
    }
    request = {
        'client_event': client_event_to_be_created
    }
    response = client_service.projects().clientEvents().create(
        parent=parent, body=request).execute()
    print(response)

如需查看可用事件类型的完整列表,请访问事件类型

使用 Cloud Pub/Sub 来记录客户端事件

要利用此方法,请将结构化消息发送到 Cloud Talent Solution,以捕获求职者对于根据其查询所得结果的反应。这些消息使用 Cloud Pub/Sub 发送到 Cloud Talent Solution。 Cloud Talent Solution 会解析来自租户网站的消息,并将其馈送给机器学习模型。

下文介绍消息格式和 Pub/Sub 请求。

各种场景和工作流

下面两个示例展示了求职者搜索、查看和申请职位的各种场景。

请注意,您只应发布到项目 p-jobs 和主题 cloud-jobs-events

工作流 1

  1. 求职者执行搜索。 例如:Product mgr SF

    系统将搜索结果返回给求职者。

    发送回客户服务器的招聘信息搜索响应对象包含唯一的 requestId(例如:8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==)。将此 requestId 用于未来与此特定 SearchJobsRequest API 调用相关的所有消息。

    向 Cloud Talent Solution 发送一条 IMPRESSION 消息。

    事件消息示例:

    {
      "eventId": "ID1",
      "eventType": "IMPRESSION",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000", "jobs/4000000001","jobs/4000000002",
      "jobs/4000000003", "jobs/4000000004"]
      "eventTimestampMillis": 1494379614309
    }
    
  2. 求职者选择一个结果(招聘信息)以查看招聘信息的完整详情。

    向 Cloud Talent Solution 发送一条 VIEW 消息。

    {
      "eventId": "ID2",
      "eventType": "VIEW",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  3. 求职者申请所查看的职位。

    a. 如果系统将求职者重定向到相同域内的一个网页(内部申请页面),则向 Cloud Talent Solution 发送一条 APPLICATION_START 消息。

    {
      "eventId": "ID3",
      "eventType": "APPLICATION_START",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614310
    }
    

    b. 如果求职者被重定向到外部申请页面,则向 Cloud Talent Solution 发送一条 APPLICATION_REDIRECT 消息。

       {
         "eventId": "ID3",
         "eventType": "APPLICATION_REDIRECT",
         "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
         "relatedJobNames": ["jobs/4000000000"]
         "eventTimestampMillis": 1494379614310
       }
    
  4. 在求职者完成内部申请时,向 Cloud Talent Solution 发送一条 APPLICATION_FINISH 消息:

    {
      "eventId": "ID4",
      "eventType": "APPLICATION_FINISH",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  5. 求职者返回到搜索结果,并继续查看第 2 页结果,即使求职者从未点击过招聘信息及不例外。

    向 Cloud Talent Solution 发送一条 IMPRESSION 消息,提供第 2 页中的下一组结果。注意:在 SearchJobsRequest API 调用的响应中生成了一个新的 requestId,该响应会生成结果的第二页。(例如 99e5b99c-f1ba-4f85-b17d-ccf878f451f9:APAb7IRESj+/Hzwa3bBd54P3qPx2yOWm5w==)。

    {
      "eventId": "ID5",
      "eventType": "IMPRESSION",
      "requestId": "99e5b99c-f1ba-4f85-b17d-ccf878f451f9:APAb7IRESj+/Hzwa3bBd54P3qPx2yOWm5w==",
      "relatedJobNames": ["jobs/4000000005", "jobs/4000000006","jobs/4000000007",
      "jobs/4000000008", "jobs/4000000009"]
      "eventTimestampMillis": 1494379614400
    }
    
  6. 求职者继续浏览搜索结果的第 3 页内容。

    向 Cloud Talent Solution 发送一条 IMPRESSION 消息,提供下一组结果。 注意:此时生成了新的 requestId(例如 e2d2b916-78c3-4c65-aecc-d8452bc0afb0:APAb7IRvCsNPiRXYkgF8PN5e8BkbFzKOyg==)。

    {
      "eventId": "ID6",
      "eventType": "IMPRESSION",
      "requestId": "e2d2b916-78c3-4c65-aecc-d8452bc0afb0:APAb7IRvCsNPiRXYkgF8PN5e8BkbFzKOyg==",
      "relatedJobNames": ["jobs/4000000010", "jobs/4000000011","jobs/4000000012",
      "jobs/400000013", "jobs/4000000014"]
      "eventTimestampMillis": 1494379614500
    }
    

工作流 2

  1. 求职者执行搜索。 例如:Product mgr SF

    系统将搜索结果返回给求职者。

    职位搜索响应对象包含唯一的 requestId(例如:a2179a9b-cf73-413e-8076-98af08b991ad)。此 requestId 用于未来与此 SearchJobsRequest API 调用相关的所有的消息。

    向 Cloud Talent Solution 发送一条 IMPRESSION 消息。

    {
      "eventId": "ID1",
      "eventType": "IMPRESSION",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000", "jobs/4000000001","jobs/4000000002",
      "jobs/4000000003", "jobs/4000000004"]
    , "eventTimestampMillis": 1494379614309
    }
    
  2. 求职者选择一个结果(招聘信息)以查看招聘信息的完整详情。

    向 Cloud Talent Solution 发送一条 VIEW 消息。

    {
      "eventId": "ID2",
      "eventType": "VIEW",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  3. 求职者通过点击,申请一个职位,如 APPLICATION_QUICK_SUBMISSION 中所述。

    向 Cloud Talent Solution 发送一条 APPLICATION_QUICK_SUBMISSION 消息,提供下一组结果。

    {
      "eventId": "ID3",
      "eventType": "APPLICATION_QUICK_SUBMISSION",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614500
    }
    
  4. 求职者执行以下操作。

    a.求职者返回搜索结果,直接通过搜索结果页面来申请职位。申请流程比 APPLICATION_QUICK_SUBMISSION 中定义的流程更长(也就是说,此为多步骤申请流程)。

    向 Cloud Talent Solution 发送一条 APPLICATION_START_FROM_SERP 消息。

    {
      "eventId": "ID4",
      "eventType": "APPLICATION_START_FROM_SERP",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000014"]
      "eventTimestampMillis": 1494379927500
    }
    

    b. 求职者完成职位申请。 向 Cloud Talent Solution 发送一条 APPLICATION_FINISH 消息。

    {
      "eventId": "ID5",
      "eventType": "APPLICATION_FINISH",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000014"]
      "eventTimestampMillis": 1494379935500
    

    }

  5. 求职者返回搜索结果,并直接通过搜索结果页面来申请职位。申请流程将求职者重定向到租户站点以外的另外一个域(外部申请),系统无法跟踪申请者在该域中的申请进度。

    向 Cloud Talent Solution 发送一条 APPLICATION_REDIRECT_FROM_SERP 消息。

    {
      "eventId": "ID6",
      "eventType": "APPLICATION_START_FROM_SERP",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000017"]
      "eventTimestampMillis": 149438807500
    }
    

    使用 APPLICATION_REDIRECT 时,求职者重新路由后处于招聘信息描述页面上,而本例不同于这种情况。

事件消息

必填字段:

  • eventId(客户定义):发送到 Cloud Talent Solution 的每条消息都必须具有唯一的 eventId。最佳做法是在定义此字段时合并时间戳,以确保不重复。该字段的最大长度为 255 个字符。

  • requestId 是招聘信息搜索响应对象所返回的 requestId 值。这个值对于特定 SearchJobsRequest API 调用是唯一的。它用于源自原始搜索 IMPRESSION 事件的所有后续消息。在进行新的 SearchJobsRequest API 调用时(例如:求职者转到结果的下一页),requestId 会发生变化。

    不含 requestID 的任何 pubsub 消息都会被丢弃。

  • eventType 是一个事件类型,例如 VIEWIMPRESSION。(若要查看完整的值列表,请参阅 EventType)。要启用模型改进,至少要提供 IMPRESSIONVIEWAPPLICATION_START(和/或 APPLICATION_REDIRECT)这几个字段。

  • relatedJobNames:这些是在事件发生时向求职者显示的所有招聘信息的职位名称值。对于 IMPRESSION 事件,这是页面上所有招聘信息的列表;对于 VIEW 事件,则是已查看招聘信息的名称。名称值的格式是 projects/project-id/jobs/12343213 等(定义请参见招聘信息字段

  • eventTimestampMillis 事件的时间戳,采用自 Epoch 起计的毫秒数形式。此时间戳应体现事件实际发生的时间,而非消息发送的时间。

发送消息

事件消息必须使用特定的项目 ID 和主题 ID 发送到 Cloud Pub/Sub 服务。如需了解相关说明,请参阅快速入门:Cloud Talent Solution 客户端事件微调