Mejora el modelo previamente entrenado con datos de eventos de clientes (v3)

Cloud Talent Solution es un servicio que lleva el aprendizaje automático a la experiencia de búsqueda de trabajo y muestra resultados de alta calidad a los usuarios, muy por encima de las limitaciones de los métodos típicos basados en palabras clave. Desde el primer momento, CTS aplica modelos de relevancia y ontologías de habilidades o trabajos a los detalles de su trabajo. Puedes mejorar los resultados que ve un usuario que busca empleo si registras los eventos del cliente según la actividad de ese usuario.

Existen dos métodos para aprovechar esta función, que se describen en esta guía. Recomendamos que uses el método de API createClientEventRequest, que omite los desafíos de autenticación de enviar mensajes a Cloud Talent Solution mediante Cloud Pub/Sub y proporciona un conjunto limpio de API para implementar el marco de trabajo de estadísticas.

Puedes usar la API para registrar las acciones específicas que realice un usuario. Por ejemplo, si el usuario o cualquier otra entidad que interactúa con el servicio procesó un trabajo (o una lista de trabajos) en su vista, como una lista de resultados de la búsqueda en un formato comprimido o recortado. En este caso, puedes enviar un evento de IMPRESSION a Cloud Talent Solution para brindar el contexto de los resultados de la búsqueda y lo que puede ver el usuario. También puedes enviar un evento de VIEW a fin de registrar el interés del usuario en algún puesto cuando haga clic en un resultado para ver la descripción completa del trabajo.

Uso

En el siguiente ejemplo, se ilustra cómo enviar un mensaje a Cloud Talent Solution mediante una API. El usuario o cualquier otra entidad que interactúe con el servicio procesó un trabajo (o una lista de trabajos) en su vista, como una lista de resultados de búsqueda en un formato comprimido o recortado. Por lo general, este evento se asocia con los usuarios que ven una lista de trabajos en una sola página.

Java

Consulta Bibliotecas cliente de Cloud Talent Solution para obtener más información sobre cómo instalar y crear un cliente de 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

Consulta Bibliotecas cliente de Cloud Talent Solution para obtener más información sobre cómo instalar y crear un cliente de 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)

Visita Tipos de evento para ver una lista completa de los tipos de eventos disponibles.

Graba eventos de clientes mediante Cloud Pub/Sub

Para aprovechar este método, envía mensajes estructurados a Cloud Talent Solution que capten las reacciones de los usuarios ante los resultados basados en sus consultas. Estos mensajes se envían a Cloud Talent Solution mediante Cloud Pub/Sub. Desde allí, Cloud Talent Solution analiza los mensajes del sitio de la instancia y los proporciona al modelo de aprendizaje automático.

A continuación, se describen las solicitudes de Pub/Sub y el formato de los mensajes:

Varias situaciones y flujos de trabajo

A continuación, presentamos dos ejemplos que muestran diversas situaciones en las que un usuario busca y visualiza un trabajo, y se postula a uno.

Ten en cuenta que debes publicar SOLO en el proyecto p-jobs y el tema cloud-jobs-events.

Flujo de trabajo 1

  1. El usuario realiza una búsqueda. Por ejemplo: Product mgr SF.

    Se muestran los resultados de la búsqueda al usuario.

    El objeto de respuesta de búsqueda de trabajo que se envía de vuelta al servidor del cliente contiene un requestId único (por ejemplo: 8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==). A partir de ahora, usa este requestId para todos los mensajes futuros relacionados con esta llamada específica a la API SearchJobsRequest.

    Envía un mensaje de IMPRESSION a Cloud Talent Solution.

    Ejemplo de mensaje de evento:

    {
      "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. El usuario selecciona un resultado (una publicación de trabajo) para ver la información completa del trabajo.

    Envía un mensaje de VIEW a Cloud Talent Solution.

    {
      "eventId": "ID2",
      "eventType": "VIEW",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  3. El usuario se postula a la publicación de trabajo que visualizó.

    a. Si se redirecciona al usuario a una página dentro del mismo dominio (una página de postulación interna), envía un mensaje de APPLICATION_START a Cloud Talent Solution.

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

    b. Si se redirecciona al usuario a una página de postulación externa, envía un mensaje de APPLICATION_REDIRECT a Cloud Talent Solution.

       {
         "eventId": "ID3",
         "eventType": "APPLICATION_REDIRECT",
         "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
         "relatedJobNames": ["jobs/4000000000"]
         "eventTimestampMillis": 1494379614310
       }
    
  4. Cuando el usuario finalice una postulación interna, envía un mensaje de APPLICATION_FINISH a Cloud Talent Solution, como en este ejemplo:

    {
      "eventId": "ID4",
      "eventType": "APPLICATION_FINISH",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  5. El usuario regresa a los resultados de la búsqueda (o también si nunca hizo clic en una publicación de trabajo) y pasa a la página 2 de los resultados.

    Envía un mensaje de IMPRESSION a Cloud Talent Solution, que contenga el siguiente conjunto de resultados de la página 2. Nota: Hay un nuevo requestId que se genera en la respuesta de la llamada a la API SearchJobsRequest que genera la segunda página de resultados. Por ejemplo, 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. El usuario pasa a la página 3 de los resultados de la búsqueda.

    Envía un mensaje de IMPRESSION a Cloud Talent Solution, que contenga el siguiente conjunto de resultados. NOTA: Hay un nuevo requestId. Por ejemplo, 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
    }
    

Flujo de trabajo 2

  1. El usuario realiza una búsqueda. Por ejemplo: Product mgr SF.

    Se muestran los resultados de la búsqueda al usuario.

    El objeto de respuesta de búsqueda de trabajo contiene un requestId único (por ejemplo: a2179a9b-cf73-413e-8076-98af08b991ad). A partir de ahora, usa este requestId para todos los mensajes futuros relacionados con esta llamada a la API SearchJobsRequest.

    Envía un mensaje de IMPRESSION a 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. El usuario selecciona un resultado (una publicación de trabajo) para ver la información completa del trabajo.

    Envía un mensaje de VIEW a Cloud Talent Solution.

    {
      "eventId": "ID2",
      "eventType": "VIEW",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614311
    }
    
  3. La persona que busca trabajo se postula a un trabajo con un solo clic, como se describe en APPLICATION_QUICK_SUBMISSION.

    Envía un mensaje de APPLICATION_QUICK_SUBMISSION a Cloud Talent Solution, que contenga el siguiente conjunto de resultados:

    {
      "eventId": "ID3",
      "eventType": "APPLICATION_QUICK_SUBMISSION",
      "requestId": "8d2bdd5d-1361-42a5-a0fd-bd2b58b7d8fb:APAb7ISd4Sc5faibw2V5hTU/OoC2WAW5AA==",
      "relatedJobNames": ["jobs/4000000000"]
      "eventTimestampMillis": 1494379614500
    }
    
  4. El usuario realiza las siguientes acciones:

    a. El usuario regresa a la página de resultados de la búsqueda y se postula a un trabajo directamente desde allí. El proceso de postulación es más extenso que el proceso que se define en APPLICATION_QUICK_SUBMISSION (es decir, es un proceso de postulación de varios pasos).

    Envía un mensaje de APPLICATION_START_FROM_SERP a Cloud Talent Solution.

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

    b. El usuario termina de postularse al trabajo. Envía un mensaje de APPLICATION_FINISH a Cloud Talent Solution.

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

    }

  5. El usuario regresa a la página de resultados de la búsqueda y se postula a un trabajo directamente desde allí. El proceso de postulación redirecciona al usuario a otro dominio fuera del sitio de la instancia (postulación externa), en el cual no se puede realizar un seguimiento del progreso del postulante.

    Envía un mensaje de APPLICATION_REDIRECT_FROM_SERP a Cloud Talent Solution.

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

    Este mensaje es distinto al de APPLICATION_REDIRECT, en el que un usuario se encuentra en la página de descripción del trabajo cuando se redirecciona.

Mensaje del evento

Campos obligatorios:

  • eventId (definido por el cliente): Todos los mensajes que se envían a Cloud Talent Solution deben tener un eventId único. Te recomendamos incluir una marca de tiempo cuando definas este campo para garantizar que no existan duplicados. La longitud máxima de este campo es de 255 caracteres.

  • requestId es el valor de requestId que muestra el objeto de respuesta de la búsqueda de empleo. Este valor es exclusivo de una llamada la API SearchJobsRequest determinada. Se usa para todos los mensajes que se generen a partir del evento de IMPRESSION de la búsqueda original. El requestId cambia cuando se realiza una nueva llamada a la API SearchJobsRequest (por ejemplo: el buscador de trabajo pasa a la siguiente página de resultados).

    Se omitirán todos los mensajes Pub/Sub que no incluyan un requestID.

  • eventType es un tipo de evento, como VIEW o IMPRESSION. (Consulta la referencia de EventType para ver una lista completa de valores). Los campos mínimos que se deben completar para habilitar las mejoras del modelo son IMPRESSION, VIEW y APPLICATION_START (o APPLICATION_REDIRECT).

  • relatedJobNames: Estos son los valores de nombre de trabajo para todos los trabajos que se muestran a la persona que busca trabajo en el momento del evento. En el caso de un evento de IMPRESSION, es una lista de todos los trabajos de la página. En el caso de un evento de VIEW, podría ser el nombre del trabajo que se visualizó. Los valores de los nombres tienen el formato projects/project-id/jobs/12343213, etcétera (consulta Campos de los trabajos para ver las definiciones).

  • eventTimestampMillis: La marca de tiempo del evento, medida en milisegundos desde el tiempo UNIX. Debe indicar el momento en que ocurrió el evento y no el momento en que se envió el mensaje.

Enviar mensaje

Debes enviar el mensaje de tu evento al servicio de Cloud Pub/Sub con un ID del proyecto y un ID del tema específicos. Consulta la Guía de inicio rápido: Ajusta los eventos de cliente de Cloud Talent Solution para ver las instrucciones.