本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
记录包含展示数据的物品交互事件
如果您使用User-Personalization配方或将IMPRESSIONS字段添加到架构中域数据集组中的数据集,则可以在 PutEvents操作中记录展示次数数据。展示是用户与特定物品交互(例如,单击或观看)时可见的物品列表。Amazon Personalize 使用展示次数数据来指导浏览,其中建议包括交互数据较少或相关性较低的物品。有关 Amazon Personalize 可以建模的隐式 和显式 展示的信息,请参阅展示数据。
如果您在 PutEvents 请求中提供了相互矛盾的隐式和显式展示数据,则 Amazon Personalize 将默认使用显式展示数据。
要记录 Amazon Personalize 建议,您需要将用户显示为展示次数数据,在 PutEvents 请求中添加 recommendationId,Amazon Personalize 会根据您的建议数据得出隐式展示次数。
要手动记录事件的展示次数数据,请在 PutEvents 命令的 impression 输入参数中列出展示。以下代码示例演示了如何使用适用于 Python 的 SDK (Boto3) 或适用于 Java 的 SDK 2.x impression 在 PutEvents 操作中包含recommendationId和。如果您同时包含这两者,则 Amazon Personalize 将默认使用显式展示。
        - 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
 - 
            
使用以下 putEvents 方法记录包含展示次数数据和 recommendationId 的事件。对于 impressions 参数,将 itemID 列表作为。 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());
    }
}