Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan PutEvents operasi
Setelah Anda membuat kumpulan data interaksi Item dan pelacak peristiwa untuk grup kumpulan data Anda, Anda siap merekam peristiwa interaksi item. Untuk merekam peristiwa interaksi item, Anda menggunakan operasi PutEvents API. Bagian berikut menunjukkan cara merekam satu peristiwa, cara merekam beberapa peristiwa dengan data nilai peristiwa, dan cara menyertakan data tayangan dengan suatu peristiwa.
Untuk informasi tentang cara merekam peristiwa untuk pengguna anonim, lihatMerekam acara untuk pengguna anonim.
Merekam peristiwa interaksi item tunggal
Contoh berikut menunjukkan PutEvents
operasi yang melewati satu peristiwa interaksi item. Skema yang sesuai ditampilkan, bersama dengan baris contoh dari kumpulan data interaksi Item.
Aplikasi Anda menghasilkan unik sessionId
ketika pengguna pertama kali mengunjungi situs web Anda atau menggunakan aplikasi Anda. Anda harus menggunakan hal yang sama sessionId
di semua acara sepanjang sesi. Amazon Personalize menggunakan sessionId
untuk mengaitkan peristiwa dengan pengguna sebelum mereka masuk (bersifat anonim). Untuk informasi selengkapnya, lihat Merekam acara untuk pengguna anonim.
Daftar acara adalah array Event objek. An eventType
diperlukan untuk setiap acara. Jika Anda tidak memiliki data tipe acara, Anda dapat memberikan nilai placeholder untuk memenuhi persyaratan.
Itu trackingId
berasal dari pelacak acara yang Anda buat. Membuat pelacak peristiwa interaksi item sentAt
ParameteruserId
,itemId
, dan dipetakan ke bidang USER_ID, ITEM_ID, dan TIMESTAMP dari kumpulan data historis yang sesuai. Interactions
Untuk informasi selengkapnya, lihat Skema.
Kolom dataset yang sesuai
Dataset columns: USER_ID, ITEM_ID, TIMESTAMP, EVENT_TYPE
Example data: user123, item-xyz, 1543631760, click
Contoh kode
- 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());
}
}
Merekam beberapa peristiwa interaksi item dengan data nilai acara
Contoh berikut menunjukkan cara merekam beberapa peristiwa interaksi item dengan jenis acara yang berbeda dan nilai acara yang berbeda.
Saat Anda mengonfigurasi solusi, jika kumpulan data interaksi Item menyertakan bidang EVENT_TYPE dan EVENT_VALUE, Anda dapat menetapkan nilai tertentu sebagai ambang batas untuk mengecualikan catatan dari pelatihan. Untuk informasi selengkapnya, lihat Memilih data interaksi item yang digunakan untuk pelatihan.
Contoh ini juga menunjukkan rekaman properti tambahan,numRatings
, yang digunakan sebagai metadata oleh resep tertentu.
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());
}
}
Kunci properti menggunakan nama kasus unta yang cocok dengan bidang dalam skema Interaksi. Misalnya, jika bidang 'NUM_RATINGS' didefinisikan dalam skema Interaksi, kunci properti harus. numRatings
Merekam data tayangan
Jika Anda menggunakan Personalisasi Pengguna resep atau menambahkan bidang IMPRESSION ke skema untuk kumpulan data dalam grup kumpulan data Domain, Anda dapat merekam data tayangan dalam operasi Anda. PutEvents Tayangan adalah daftar item yang terlihat oleh pengguna saat berinteraksi dengan (misalnya, diklik atau ditonton) item tertentu. Amazon Personalize menggunakan data tayangan untuk memandu eksplorasi, di mana rekomendasi menyertakan item dengan data interaksi atau relevansi yang lebih sedikit. Untuk informasi tentang tayangan implisit dan eksplisit yang dapat dimodelkan Amazon Personalize, lihat. Data tayangan
Jika Anda memberikan data tayangan implisit dan eksplisit yang bertentangan dalam PutEvents
permintaan, Amazon Personalize menggunakan tayangan eksplisit secara default.
Untuk merekam rekomendasi Amazon Personalize yang Anda tunjukkan kepada pengguna sebagai data tayangan, sertakan recommendationId
dalam PutEvents permintaan Anda dan Amazon Personalize memperoleh tayangan implisit berdasarkan data rekomendasi Anda.
Untuk merekam data tayangan secara manual untuk suatu peristiwa, cantumkan tayangan dalam parameter impression
input PutEvents perintah. Contoh kode berikut menunjukkan cara menyertakan recommendationId
dan impression
dalam PutEvents operasi dengan SDK for Python (Boto3) atau SDK for Java 2.x. Jika Anda menyertakan keduanya, Amazon Personalize menggunakan tayangan eksplisit secara default.
- 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
-
Gunakan putEvents
metode berikut untuk merekam peristiwa dengan data tayangan dan RecommendationId. Untuk parameter tayangan, berikan daftar ItemIds sebagai file. 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());
}
}