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