事前トレーニング済みモデルをクライアント イベントデータで改善する(v3)

Cloud Talent Solution は、求人検索体験に機械学習を導入するサービスであり、一般的なキーワード ベース方式の制約をはるかに超えた高品質の結果を求職者に返します。CTS は、関連性モデルと求人 / スキルのオントロジーを、求人情報に自動的に適用します。求職者の活動に基づいてクライアント イベントを記録することで、求職者に返される結果を改善できます。

この機能を利用する方法は 2 つあります。どちらもこのガイドで概説しています。createClientEventRequest API メソッドの使用をおすすめします。この API メソッドは、Cloud Pub/Sub を使用して Cloud Talent Solution にメッセージを送信する際の認証に関する課題を回避し、クリーンな API のセットで分析フレームワークを実装できます。

求職者が特定のアクションを行ったときに、API を使用してそのアクションを記録できます。たとえば、求職者やその他のエンティティは、サービスを操作しているときに、検索結果のリストを圧縮したりクリップしたりするなど、求人(または求人リスト)を自分のビューでレンダリングすることがあります。この場合、Cloud Talent Solution に IMPRESSION イベントを送信して、検索結果のコンテキストおよび求職者に表示される内容を提供できます。また、求職者が求人結果をクリックして詳しい職務内容を表示したときに、VIEW イベントを送信してこの求職者の関心をこの職位に登録できます。

用途

次の例は、この API を使用して、Cloud Talent Solution にメッセージを送信する方法を示しています。求職者や他のエンティティは、サービスを操作しているときに、検索結果のリストを圧縮またはクリップするなど、求人情報(または求人リスト)を自分のビューにレンダリングすることがあります。このイベントは、一般に求職者による 1 ページでの求人リストの表示に関連付けられます。

Java

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


public static void createClientEvent(String eventId, String requestId,
    List<String> relatedJobNames)
    throws IOException {
  DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
  String date = dateFormat.format(new Date());

  ClientEvent clientEventToBeCreated = new ClientEvent()
      .setCreateTime(date)
      .setEventId(eventId)
      .setParentEventId("NULL")
      .setJobEvent(
          new JobEvent().setJobs(relatedJobNames)
              .setType("VIEW"))
      .setRequestId(requestId);
  CreateClientEventRequest createClientEventRequest = new CreateClientEventRequest()
      .setClientEvent(clientEventToBeCreated);

  ClientEvent returnedEvent = talentSolutionClient.projects().clientEvents()
      .create(DEFAULT_PROJECT_ID, createClientEventRequest).execute();
  System.out.println(returnedEvent);
}

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 リクエストについては以下で説明します。

さまざまなシナリオとワークフロー

以下の 2 つの例では、求職者が求人を検索して表示し、求人に応募する際のさまざまなシナリオを紹介します。

プロジェクト 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 ページ目の結果に進みます。

    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 メッセージを送信します。 注: 新しい requestIde2d2b916-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 に概要が示されているように、1 回のクリックで求人に応募します。

    次の結果セットで 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: エポックからのミリ秒単位で測定されたイベントのタイムスタンプ。このタイムスタンプは、メッセージが送信された時点ではなくイベントが実際に発生した時点を反映します。

メッセージを送信

イベント メッセージは特定のプロジェクト ID とトピック ID を使用して Cloud Pub/Sub サービスに送信する必要があります。手順については、クイックスタート: Cloud Talent Solution クライアント イベントによる調整をご覧ください。