Améliorer le modèle pré-entraîné à l'aide des données d'événements client (v3)

Cloud Talent Solution (CTS) est un service qui intègre le machine learning au contexte de la recherche d'emploi. Il renvoie aux demandeurs des résultats de haute qualité qui dépassent largement les limites des méthodes classiques basées sur des mots clés. Prêt à l'emploi, CTS applique directement des modèles de pertinence et des ontologies poste/compétences aux détails de votre offre d'emploi. Vous pouvez enregistrer les événements client en fonction de l'activité des demandeurs afin d'améliorer les résultats qui leur sont renvoyés.

Le présent guide décrit les deux méthodes permettant de tirer parti de cette fonctionnalité. Nous vous recommandons d'utiliser la méthode createClientEventRequest de l'API, qui contourne les problèmes d'authentification lors de la transmission de messages à Cloud Talent Solution à l'aide de Cloud Pub/Sub et fournit un ensemble opérationnel d'API permettant de mettre en œuvre le framework d'analyse.

Lorsqu'un demandeur d'emploi effectue une action spécifique, l'API permet d'enregistrer cette action. Par exemple, un demandeur ou une autre entité interagissant avec le service reçoit une offre d'emploi (ou une liste d'offres) visible sur son écran, s'apparentant à une liste de résultats de recherche dans un format compressé ou tronqué. Dans ce cas, vous pouvez envoyer un événement IMPRESSION à Cloud Talent Solution, afin de fournir le contexte des résultats de la recherche et de spécifier le contenu visible par le demandeur d'emploi. En outre, lorsque celui-ci clique sur une offre pour afficher la description complète du poste, vous pouvez envoyer un événement VIEW qui enregistre l'intérêt de ce demandeur d'emploi pour ce poste.

Utilisation

L'exemple suivant montre comment envoyer un message à Cloud Talent Solution à l'aide de l'API. Le demandeur d'emploi ou une autre entité utilisant le service a reçu une offre d'emploi apparaissant sur son écran, par exemple dans une liste de résultats de recherche au format condensé ou sous forme d'extraits. Cet événement est généralement associé à la consultation d'une liste d'offres d'emploi sur une seule page, par le demandeur d'emploi.

Java

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes 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

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes 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)

Consultez la section Types d'événements pour obtenir la liste complète des types d'événements disponibles.

Enregistrer des événements client à l'aide de Cloud Pub/Sub

Pour mettre à profit cette méthode, envoyez à Cloud Talent Solution des messages structurés qui traduisent les réactions des demandeurs d'emploi aux résultats renvoyés par leurs requêtes. Ces messages sont envoyés à Cloud Talent Solution via Cloud Pub/Sub. CTS analyse alors les messages du site client et les transmet au modèle de machine learning.

Le format de message et les requêtes Pub/Sub sont décrits ci-dessous.

Scénarios et workflows divers

Vous trouverez ci-dessous deux exemples illustrant différents scénarios de recherche, d'affichage et de candidature à un poste du point de vue d'un demandeur d'emploi.

Notez que vous devez UNIQUEMENT publier dans le projet p-jobs et la rubrique cloud-jobs-events.

Workflow 1

  1. Le demandeur d'emploi effectue une recherche. Par exemple : Chef de produit San Francisco.

    Les résultats de la recherche sont renvoyés au demandeur d'emploi.

    L'objet de réponse à la recherche d'emploi renvoyé au serveur du client contient un requestId unique (par exemple : 8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==). Utilisez ce requestId pour tous les futurs messages liés à cet appel d'API SearchJobsRequest particulier.

    Envoyez un message IMPRESSION à Cloud Talent Solution.

    Exemple de message d'événement :

    {
      "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. Le demandeur d'emploi sélectionne un résultat (une offre d'emploi) pour afficher tous les détails du poste.

    Envoyez un message VIEW à Cloud Talent Solution.

    {
      "eventId": "ID2",
      "eventType": "VIEW",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  3. Le demandeur d'emploi postule à l'offre consultée.

    a. Si le demandeur d'emploi est redirigé vers une page du même domaine (une page de candidature interne), envoyez un message APPLICATION_START à Cloud Talent Solution.

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

    b. Si le demandeur d'emploi est redirigé vers une page de candidature externe, envoyez un message APPLICATION_REDIRECT à Cloud Talent Solution.

       {
         "eventId": "ID3",
         "eventType": "APPLICATION_REDIRECT",
         "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
         "relatedJobNames": ["jobs/4000000000"]
         "eventTimestampMillis": 1494379614310
       }
    
  4. Lorsque le demandeur d'emploi termine une candidature interne, envoyez un message APPLICATION_FINISH à Cloud Talent Solution.

    {
      "eventId": "ID4",
      "eventType": "APPLICATION_FINISH",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  5. Le demandeur d'emploi revient aux résultats de recherche (ou, s'il n'a encore cliqué sur aucune offre, poursuit sa consultation) et passe à la deuxième page des résultats.

    Envoyez à Cloud Talent Solution un message IMPRESSION indiquant le jeu de résultats affiché sur la deuxième page. Remarque : Un nouveau requestId est généré dans la réponse de l'appel d'API SearchJobsRequest générant la deuxième page de résultats. Par exemple, 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. Le demandeur d'emploi passe à la troisième page des résultats de recherche.

    Envoyez un message IMPRESSION à Cloud Talent Solution avec le jeu de résultats suivant. REMARQUE : Un nouveau requestId est généré (par exemple,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
    }
    

Workflow 2

  1. Le demandeur d'emploi effectue une recherche. Par exemple : Chef de produit San Francisco.

    Les résultats de la recherche sont renvoyés au demandeur d'emploi.

    L'objet de réponse à la recherche d'emploi contient un requestId unique (par exemple, a2179a9b-cf73-413e-8076-98af08b991ad). Utilisez ce requestId pour tous les futurs messages liés à cet appel d'API SearchJobsRequest.

    Envoyez un message IMPRESSION à Cloud Talent Solution.

    {
      "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. Le demandeur d'emploi sélectionne un résultat (une offre d'emploi) pour afficher tous les détails du poste.

    Envoyez un message VIEW à Cloud Talent Solution.

    {
      "eventId": "ID2",
      "eventType": "VIEW",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  3. Le demandeur d'emploi postule à une offre en un seul clic, comme décrit dans APPLICATION_QUICK_SUBMISSION.

    Envoyez un message APPLICATION_QUICK_SUBMISSION à Cloud Talent Solution avec le jeu de résultats suivant.

    {
      "eventId": "ID3",
      "eventType": "APPLICATION_QUICK_SUBMISSION",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614500
    }
    
  4. Le demandeur d'emploi effectue les actions suivantes :

    a. Le demandeur d'emploi retourne aux résultats de la recherche et candidate à un poste directement depuis cette page. Le processus de candidature est plus long que celui défini dans APPLICATION_QUICK_SUBMISSION (il s'agit d'un processus de candidature en plusieurs étapes).

    Envoyez un message APPLICATION_START_FROM_SERP à Cloud Talent Solution.

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

    b. Le demandeur d'emploi termine sa candidature au poste. Envoyez un message APPLICATION_FINISH à Cloud Talent Solution.

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

    }

  5. Le demandeur d'emploi revient aux résultats de la recherche et candidate à un poste directement depuis cette page. Le processus de candidature redirige le demandeur d'emploi vers un autre domaine situé en dehors du site client (candidature externe), à partir duquel il est impossible de suivre la progression de la candidature.

    Envoyez un message APPLICATION_REDIRECT_FROM_SERP à Cloud Talent Solution.

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

    Cette méthode est différente de APPLICATION_REDIRECT, où un demandeur d'emploi reste sur la page de description du poste lors de la redirection.

Message d'événement

Champs obligatoires :

  • eventId (défini par le client) : chaque message envoyé à Cloud Talent Solution doit contenir un champ eventId unique. Il est recommandé d'inclure l'horodatage lors de la définition de ce champ pour éviter toute duplication. La longueur maximale de ce champ est de 255 caractères.

  • requestId : valeur de requestId renvoyée par l'objet de réponse à la recherche d'emploi. Cette valeur est unique pour chaque appel d'API SearchJobsRequest. On l'utilise pour tous les messages ultérieurs issus de l'événement de recherche IMPRESSION. La valeur de requestId change à chaque nouvel appel d'API SearchJobsRequest (par exemple, lorsque le demandeur d'emploi accède à la page suivante des résultats).

    Les messages pubsub sans requestId sont supprimés.

  • eventType : type d'événement, tel que VIEW ou IMPRESSION. (consultez la documentation de référence sur EventType pour une liste complète des valeurs). Les champs obligatoires requis a minima pour activer les améliorations de modèle sont IMPRESSION, VIEW et APPLICATION_START (et/ou APPLICATION_REDIRECT).

  • relatedJobNames : valeurs d'intitulé de poste correspondant à tous les postes présentés au demandeur d'emploi au moment de l'événement. Pour un événement IMPRESSION, il s'agit d'une liste de tous les postes de la page. Pour un événement VIEW, il s'agit de l'intitulé du poste consulté. Les valeurs de ces intitulés sont au format projects/project-id/jobs/12343213, etc. (consultez la section Champs de la ressource Job pour afficher les définitions).

  • eventTimestampMillis L'horodatage de l'événement, mesuré en millisecondes écoulées depuis l'époque. Cet horodatage doit indiquer le moment exact où l'événement s'est produit et non pas la date d'envoi du message.

Envoyer un message

Le message d'événement doit être envoyé au service Cloud Pub/Sub avec des ID de projet et de rubrique spécifiques. Pour obtenir des instructions, consultez la page Démarrage rapide : Ajuster les résultats à l'aide des événements client Cloud Talent Solution.