

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

# バッチレコメンデーションとユーザーセグメントのフィルタリング (カスタムリソース)
<a name="filter-batch"></a>

バッチレコメンデーションとユーザーセグメントのフィルタリングは、リアルタイムレコメンデーションのフィルタリングとほぼ同じように機能します。「[バッチアイテムのレコメンデーションの取得](getting-batch-recommendations.md)」または「[バッチユーザーセグメントの取得](getting-user-segments.md)」で説明したのと同じワークフローに従います。バッチレコメンデーションまたはユーザーセグメントをフィルタリングするには、次の操作を行います。

1.  リアルタイムのレコメンデーションの場合と同じようにフィルターを作成します。詳細については、「[リアルタイムレコメンデーションのフィルタリング](filter-real-time.md)」を参照してください。

1. [バッチレコメンデーション用の入力データを準備します。](batch-data-upload.md)または [ユーザーセグメントの入力データを準備しています。](prepare-input-data-user-segment.md) の説明に従って、入力データを準備して Amazon S3 にアップロードします。フィルタでプレースホルダーパラメータを使用する場合は、`filterValues` オブジェクトを追加する必要があります。詳細については、「[入力 JSON にフィルター値を指定します。](#providing-filter-values)」を参照してください。フィルターがプレースホルダーパラメーターを使用しない場合、入力データは [バッチ推論ジョブの入力および出力 JSON の例](batch-data-upload.md#batch-inference-job-json-examples) [バッチセグメントジョブの入力および出力 JSON の例](prepare-input-data-user-segment.md#batch-segment-job-json-examples) の例のようになります。

1.  フォルダまたは別の Amazon S3 バケットのいずれかで、出力データ用に個別の場所を作成します。

1.  [バッチ推論ジョブ](creating-batch-inference-job.md)または[バッチセグメントジョブ](creating-batch-seg-job.md)を作成します。ジョブの作成時に、フィルターの Amazon リソースネーム (ARN) を指定します。

1.  バッチ推論ジョブまたはバッチセグメントジョブが完了したら、Amazon S3 の出力場所からレコメンデーションまたはユーザーセグメントを取得します。

**Topics**
+ [入力 JSON にフィルター値を指定します。](#providing-filter-values)
+ [バッチワークフローのフィルタリング (コンソール)](#filter-batch-recommendations-console)
+ [バッチワークフロー (AWS SDKsフィルタリング](#filter-batch-recommendations-sdk)

## 入力 JSON にフィルター値を指定します。
<a name="providing-filter-values"></a>

`$GENRE` などのプレースホルダーパラメータを持つフィルターについては、入力 JSON の `filterValues` オブジェクトでパラメータの値を指定します。`filterValues` オブジェクトの場合、各キーはパラメータ名です。各値は、パラメータとして渡す基準です。各値をエスケープ引用符で囲みます: `"filterValues":{"GENRES":"\"drama\""}` 複数の値については、各値をコンマ `"filterValues":{"GENRES":"\"horror\",\"comedy\",\"drama\""}` で区切ります。

**バッチ推論ジョブの入力および出力 JSON の例**

*バッチ推論ジョブ*の JSON 入力ファイルの最初の数行の例を次に示します。この例には、`filterValues` オブジェクトが含まれています。`GENRES` キーは、フィルター式の `$GENRES` プレースホルダーに対応します。この例のジョブは User-Personalization レシピを使用しています。RELATED\$1ITEMS レシピの場合は、userID の代わりに itemId を指定します。PERSONALIZED\$1RANKING レシピの場合は、userID と itemList を指定します。

```
{"userId": "5","filterValues":{"GENRES":"\"horror\",\"comedy\",\"drama\""}}
{"userId": "3","filterValues":{"GENRES":"\"horror\",\"comedy\""}}
{"userId": "34","filterValues":{"GENRES":"\"drama\""}}
```

レシピ別のバッチ推論ジョブ入力データのその他の例については、「[バッチ推論ジョブの入力および出力 JSON の例](batch-data-upload.md#batch-inference-job-json-examples)」を参照してください。これらの例を出発点として使用し、上記の例から `filterValues` オブジェクトを追加できます。

**バッチセグメントジョブの入力および出力 JSON の例**

*バッチセグメントジョブ*のフィルター値を持つ JSON 入力ファイルの最初の数行の例を次に示します。`GENRES` キーは、フィルター式の `$GENRES` プレースホルダーに対応します。

```
{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\"","filterValues":{"COUNTRY":"\"Japan\""}}
{"itemAttributes": "ITEMS.genres = \"Horror\"","filterValues":{"COUNTRY":"\"United States\"\""}}
{"itemAttributes": "ITEMS.genres = \"Action\" AND ITEMS.genres = \"Adventure\"","filterValues":{"COUNTRY":"\"England\""}}
```

レシピ別のバッチ推論ジョブ入力データのその他の例については、「[バッチセグメントジョブの入力および出力 JSON の例](prepare-input-data-user-segment.md#batch-segment-job-json-examples)」を参照してください。これらの例を出発点として使用し、上記の例からの `filterValues` オブジェクトを追加できます。

## バッチワークフローのフィルタリング (コンソール)
<a name="filter-batch-recommendations-console"></a>

Amazon Personalize コンソールでバッチワークフローをフィルタリングするには、フィルターを作成し、次にバッチ推論ジョブまたはバッチセグメントジョブを作成してフィルタを選択します。手順については、「[バッチ推論ジョブの作成 (コンソール)](creating-batch-inference-job.md#batch-console)」および「[バッチセグメントジョブの作成 (コンソール)](creating-batch-seg-job.md#batch-segment-console)」を参照してください。

## バッチワークフロー (AWS SDKsフィルタリング
<a name="filter-batch-recommendations-sdk"></a>

 AWS SDKs でバッチレコメンデーションをフィルタリングするには、フィルターを作成し、 [CreateBatchInferenceJob](API_CreateBatchInferenceJob.md) または [CreateBatchSegmentJob](API_CreateBatchSegmentJob.md)リクエストに `FilterArn`パラメータを含めます。

 次のコードは、 AWS SDK for Python (Boto3)を使用するフィルターを持つバッチ推論ジョブを作成する方法を示しています。出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。すべてのフィールドの詳細な説明については、「[バッチ推論ジョブ (AWS SDKsの作成](creating-batch-inference-job.md#batch-sdk)」を参照してください。

```
import boto3
     
personalize = boto3.client("personalize")
 
personalize_rec.create_batch_inference_job (
    solutionVersionArn = "Solution version ARN",
    jobName = "Batch job name",
    roleArn = "IAM role ARN",
    filterArn = "Filter ARN",
    jobInput = 
        {"s3DataSource": {"path": "S3 input path"}},
    jobOutput =
        {"S3DataDestination": {"path": "S3 output path"}}
)
```