记录展示次数数据 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

记录展示次数数据

如果您使用 User-Personalization 配方或将 Impressions 字段添加到域数据集组中数据集的架构中,则您可以在 PutEvents 操作中记录展示次数数据。展示是用户与特定物品交互(例如,单击或观看)时可见的物品列表。Amazon Personalize 使用展示次数数据来指导浏览,其中建议包括交互数据较少或相关性较低的物品。有关 Amazon Personalize 可以建模的隐式显式 展示的信息,请参阅展示数据

重要

如果您在 PutEvents 请求中提供了相互矛盾的隐式和显式展示数据,则 Amazon Personalize 将默认使用显式展示数据。

要记录 Amazon Personalize 建议,您需要将用户显示为展示次数数据,在 PutEvents 请求中添加 recommendationId,Amazon Personalize 会根据您的建议数据得出隐式展示次数。

要手动记录事件的展示次数数据,请在 PutEvents 命令的 impression 输入参数中列出展示。以下代码示例演示了如何使用 SDK for Python (Boto3) 或 SDK for Java 2.x 在 PutEvents 操作中添加 recommendationIdimpression。如果您同时包含这两者,则 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 的事件。对于展示参数,将 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()); } }