记录展示次数数据 - Amazon Personalize

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

记录展示次数数据

如果您使用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()); } }