Menggunakan PutEvents operasi - Amazon Personalize

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 sentAtParameteruserId,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()); } }
catatan

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

penting

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()); } }