

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# インプレッションデータを使用したアイテムインタラクションイベントの記録
<a name="putevents-including-impressions-data"></a>

[User-Personalization](native-recipe-new-item-USER_PERSONALIZATION.md) レシピを使用するか、ドメインデータセットグループのデータセットのスキーマに IMPRESSIONS フィールドを追加すると、PutEvents 操作でインプレッションデータを記録できます。インプレッションは、ユーザーが特定のアイテムを操作した (例えば、クリックや視聴した) ときに表示されたアイテムのリストです。Amazon Personalize は、インプレッションデータを使用して探索をガイドします。レコメンデーションには、インタラクションデータや関連性が少ないアイテムが含まれます。Amazon Personalize がモデル化できる*暗黙的*および*明示的*なインプレッションについては、「[インプレッションデータ](interactions-datasets.md#interactions-impressions-data)」を参照してください。

**重要**  
`PutEvents` リクエストで競合する暗黙的および明示的なインプレッションデータを提供する場合、Amazon Personalize は、デフォルトで明示的なインプレッションを使用します。

ユーザーに表示する Amazon Personalize のレコメンデーションをインプレッションデータとして記録するには、[PutEvents](API_UBS_PutEvents.md) リクエストに `recommendationId` を含めます。Amazon Personalize は、レコメンデーションデータに基づいて暗黙的なインプレッションを派生させます。

イベントのインプレッションデータを手動で記録するには、[PutEvents](API_UBS_PutEvents.md) コマンドの `impression` 入力パラメータにインプレッションをリストします。次のコードサンプルは、SDK for Python (Boto3) または the SDK for Java 2.x のいずれかを使用して 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 を使用してイベントを記録します。インプレッションのパラメータについては、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());
    }
}
```

------