Usando a PutEvents operação - Amazon Personalize

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando a PutEvents operação

Depois de criar um conjunto de dados de interações com itens e um rastreador de eventos para o grupo de conjuntos de dados, você já pode registrar eventos de interação. Para registrar eventos de interação com itens, use a operação de API PutEvents. As seções a seguir mostram como registrar um único evento, registrar vários eventos com dados de valor do evento e incluir dados de impressões com um evento.

Para obter informações sobre como registrar eventos para usuários anônimos, consulte Como registrar eventos de usuários anônimos.

Registrar um único evento de interação com itens

O exemplo a seguir mostra uma operação PutEvents que transmite um evento de interação com itens. O esquema correspondente é mostrado com uma linha de exemplo do conjunto de dados de interações com itens.

Seu aplicativo gera um sessionId exclusivo quando alguém visita seu site ou usa seu aplicativo pela primeira vez. Você deve usar o mesmo sessionId em todos os eventos durante a sessão. O Amazon Personalize usa o sessionId para associar eventos ao usuário antes que ele faça login (com anonimato). Para ter mais informações, consulte Como registrar eventos de usuários anônimos.

A lista de eventos é uma matriz de objetos Event. eventTypeÉ necessário um para cada evento. Se você não tiver dados do tipo de evento, poderá fornecer um valor de espaço reservado para atender ao requisito.

O trackingId vem do rastreador de eventos que você criou em Criar um rastreador de eventos de interação com itens. Os parâmetros userId, itemId e sentAt são mapeados para os campos USER_ID, ITEM_ID e TIMESTAMP de um conjunto de dados Interactions históricos correspondente. Para ter mais informações, consulte Esquemas.

Colunas correspondentes do conjunto de dados

Dataset columns: USER_ID, ITEM_ID, TIMESTAMP, EVENT_TYPE Example data: user123, item-xyz, 1543631760, click

Exemplo de código

SDK for Python (Boto3)
import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_events( trackingId = 'tracking_id', userId= 'USER_ID', sessionId = 'session_id', eventList = [{ 'sentAt': 1719511760, 'eventType': 'click', 'itemId': 'ITEM_ID' }] )
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { PutEventsCommand } from "@aws-sdk/client-personalize-events"; import { personalizeEventsClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeEventsClient = new PersonalizeEventsClient({ region: "REGION"}); // Convert your UNIX timestamp to a Date. const sentAtDate = new Date(1613443801 * 1000); // 1613443801 is a testing value. Replace it with your sentAt timestamp in UNIX format. // Set put events parameters. var putEventsParam = { eventList: [ /* required */ { eventType: "EVENT_TYPE" /* required */, sentAt: sentAtDate /* required, must be a Date with js */, eventId: "EVENT_ID" /* optional */, itemId: "ITEM_ID" /* optional */, }, ], sessionId: "SESSION_ID" /* required */, trackingId: "TRACKING_ID" /* required */, userId: "USER_ID" /* required */, }; export const run = async () => { try { const response = await personalizeEventsClient.send( new PutEventsCommand(putEventsParam), ); console.log("Success!", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();
AWS CLI
aws personalize-events put-events \ --tracking-id tracking_id \ --user-id USER_ID \ --session-id session_id \ --event-list '[{ "sentAt": 1719511760, "eventType": "click", "itemId": "ITEM_ID" }]'
SDK for Java 2.x
public static void putEvents(PersonalizeEventsClient personalizeEventsClient, String trackingId, String sessionId, String userId, String itemId, String eventType) { try { Event event = Event.builder() .sentAt(Instant.ofEpochMilli(System.currentTimeMillis() + 10 * 60 * 1000)) .itemId(itemId) .eventType(eventType) .build(); PutEventsRequest putEventsRequest = PutEventsRequest.builder() .trackingId(trackingId) .userId(userId) .sessionId(sessionId) .eventList(event) .build(); int responseCode = personalizeEventsClient.putEvents(putEventsRequest) .sdkHttpResponse() .statusCode(); System.out.println("Response code: " + responseCode); } catch (PersonalizeEventsException e) { System.out.println(e.awsErrorDetails().errorMessage()); } }

Registrar vários eventos de interação com itens com dados de valor dos eventos

O exemplo abaixo mostra como registrar vários eventos de interação com itens com diferentes tipos e valores dos eventos.

Na hora de configurar uma solução, se o conjunto de dados de interações com itens incluir os campos EVENT_TYPE e EVENT_VALUE, será possível definir um valor específico como limite para excluir registros do treinamento. Para obter mais informações, consulte Selecionar os dados de interações com itens utilizados para treinamento.

O exemplo também mostra a gravação de uma propriedade extra numRatings, que é usada como metadados por determinadas fórmulas.

Dataset columns: USER_ID, ITEM_ID, TIMESTAMP, EVENT_TYPE, EVENT_VALUE, NUM_RATINGS Item interactions dataset: user123, movie_xyz, 1543531139, rating, 5, 12 user321, choc-ghana, 1543531760, like, 4 user111, choc-fake, 1543557118, like, 3
Python
import boto3 import json personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_events( trackingId = 'tracking_id', userId= 'user555', sessionId = 'session1', eventList = [{ 'eventId': 'event1', 'sentAt': 1553631760, 'eventType': 'like', 'properties': json.dumps({ 'itemId': 'choc-panama', 'eventValue': 4, 'numRatings': 0 }) }, { 'eventId': 'event2', 'sentAt': 1553631782, 'eventType': 'rating', 'properties': json.dumps({ 'itemId': 'movie_ten', 'eventValue': 3, 'numRatings': 13 }) }] )
AWS CLI
aws personalize-events put-events \ --tracking-id tracking_id \ --user-id user555 \ --session-id session1 \ --event-list '[{ "eventId": "event1", "sentAt": 1553631760, "eventType": "like", "properties": "{\"itemId\": \"choc-panama\", \"eventValue\": \"true\"}" }, { "eventId": "event2", "sentAt": 1553631782, "eventType": "rating", "properties": "{\"itemId\": \"movie_ten\", \"eventValue\": \"4\", \"numRatings\": \"13\"}" }]'
SDK for Java 2.x
public static void putMultipleEvents(PersonalizeEventsClient personalizeEventsClient, String trackingId, String sessionId, String userId, String event1Type, Float event1Value, String event1ItemId, int event1NumRatings, String event2Type, Float event2Value, String event2ItemId, int event2NumRatings) { ArrayList<Event> eventList = new ArrayList<Event>(); try { Event event1 = Event.builder() .eventType(event1Type) .sentAt(Instant.ofEpochMilli(System.currentTimeMillis() + 10 * 60 * 1000)) .itemId(event1ItemId) .eventValue(event1Value) .properties("{\"numRatings\": "+ event1NumRatings +"}") .build(); eventList.add(event1); Event event2 = Event.builder() .eventType(event2Type) .sentAt(Instant.ofEpochMilli(System.currentTimeMillis() + 10 * 60 * 1000)) .itemId(event2ItemId) .eventValue(event2Value) .properties("{\"numRatings\": "+ event2NumRatings +"}") .build(); eventList.add(event2); PutEventsRequest putEventsRequest = PutEventsRequest.builder() .trackingId(trackingId) .userId(userId) .sessionId(sessionId) .eventList(eventList) .build(); int responseCode = personalizeEventsClient.putEvents(putEventsRequest) .sdkHttpResponse() .statusCode(); System.out.println("Response code: " + responseCode); } catch (PersonalizeEventsException e) { System.out.println(e.awsErrorDetails().errorMessage()); } }
nota

As chaves de propriedades usam nomes concatenados correspondentes aos campos no esquema de interações. Por exemplo, se o campo 'NUM_RATINGS' estiver definido no esquema de interações, a chave da propriedade deverá ser numRatings.

Como registrar dados de impressões

Se você usar a User-Personalization receita ou adicionar o campo IMPRESSÕES ao seu esquema para um conjunto de dados em um grupo de conjuntos de dados do Domínio, poderá registrar dados de impressões em sua operação. PutEvents Impressões são listas de itens que estavam visíveis para um usuário durante a interação (por exemplo, clicar ou assistir) com determinado item. O Amazon Personalize usa dados de impressões para orientar a exploração, considerando que as recomendações incluem itens com menos dados de interações ou relevância. Para mais informações sobre as impressões implícitas e explícitas que o Amazon Personalize pode modelar, consulte Dados de impressões.

Importante

Se você fornecer dados de impressões implícitas e explícitas conflitantes nas solicitações de PutEvents, o Amazon Personalize usa as impressões explícitas por padrão.

Para registrar as recomendações do Amazon Personalize que você apresenta ao usuário como dados de impressões, inclua o recommendationId na sua solicitação de PutEvents. O Amazon Personalize derivará as impressões implícitas com base nos dados de recomendações.

Para registrar manualmente os dados de impressões de um evento, liste as impressões no parâmetro de entrada de impression do comando PutEvents. O exemplo de código a seguir mostra como incluir a recommendationId e an impression em uma PutEvents operação com o SDK para Python (Boto3) ou o SDK para Java 2.x. Se incluir os dois, o Amazon Personalize usará as impressões explícitas por padrão.

SDK for Python (Boto3)
import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_events( trackingId = 'tracking_id', userId= 'userId', sessionId = 'sessionId', eventList = [{ 'eventId': 'event1', 'eventType': 'rating', 'sentAt': 1553631760, 'itemId': 'item id', 'recommendationId': 'recommendation id', 'impression': ['itemId1', 'itemId2', 'itemId3'] }] )
SDK for Java 2.x

Use o método de putEvents a seguir para registrar um evento com dados de impressões e um recommendationId. Para o parâmetro impressions, passe a lista de itemIDs como um. ArrayList

public static void putEvents(PersonalizeEventsClient personalizeEventsClient, String trackingId, String sessionId, String userId, String eventType, Float eventValue, String itemId, ArrayList<String> impressions, String recommendationId) { try { Event event = Event.builder() .eventType(eventType) .sentAt(Instant.ofEpochMilli(System.currentTimeMillis() + 10 * 60 * 1000)) .itemId(itemId) .eventValue(eventValue) .impression(impressions) .recommendationId(recommendationId) .build(); PutEventsRequest putEventsRequest = PutEventsRequest.builder() .trackingId(trackingId) .userId(userId) .sessionId(sessionId) .eventList(event) .build(); int responseCode = personalizeEventsClient.putEvents(putEventsRequest) .sdkHttpResponse() .statusCode(); System.out.println("Response code: " + responseCode); } catch (PersonalizeEventsException e) { System.out.println(e.awsErrorDetails().errorMessage()); } }