

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

# フィルタ式
<a name="filter-expressions"></a>

フィルターを設定するには、適切にフォーマットされた*フィルター式*を使用する必要があります。フィルター式は、論理演算子、キーワード、および値とともに、`dataset`.`field` フォーマットのデータセットとフィールド識別子で構成されます。値については、固定値を指定するか、プレースホルダーパラメータを追加して、レコメンデーションを取得する際にフィルター基準を設定できます。

フィルター式を使用して、以下のデータセットのデータに基づいて、レコメンデーションからアイテム、ユーザー、またはアクションをフィルタリングできます。
+  **アイテムインタラクション**: フィルター式を使用して、インタラクションデータに基づいてアイテムまたはユーザーを含めたり除外したりできます。例えば、ユーザーが既にクリックしたアイテムを除外したり (アイテムレコメンデーションの場合)、アイテムが評価されたユーザーのみを含めることができます (Item-Affinity レシピの場合)。すべてのレシピタイプで、イベントタイプに基づいてのみフィルタリングできます。コンテキストメタデータなど、他のインタラクションメタデータに基づいてフィルタリングすることはできません。アイテムインタラクションフィルターは、[Item-Attribute-Affinity レシピ](item-attribute-affinity-recipe.md) と併用することはできません。

  Amazon Personalize は、イベントタイプごとに、ユーザー 1 人あたり最大 100 件の最新のインタラクションを考慮します。これは調整可能なクォータです。[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/)を使用してクォータの増加をリクエストできます。ユーザーのアイテムインタラクションを 3 か月間インポートしない場合、フィルターはユーザーの履歴データを考慮しなくなります。このデータを考慮するには、ユーザーのイベント履歴全体を再度インポートする必要があります。
+  **アクションインタラクション**: フィルター式を使用して、ユーザーがイベントタイプに基づいて操作したアクションを含めたり除外したりします。例えば、ユーザーが既に実行したアクションを除外できます。他のアクションインタラクションメタデータに基づいてフィルタリングすることはできません。

  Amazon Personalize は、イベントタイプごとに、ユーザー 1 人あたり最大 300 件の最新のアクションインタラクションを考慮します。これは調整可能なクォータです。[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/)を使用してクォータの増加をリクエストできます。
+  **Items**: フィルター式を使用して、特定のアイテム条件に基づいてアイテムを含めたり除外したりします。フィルターを使用して、商品の説明などの構造化されていないテキストのアイテムメタデータに基づいてアイテムを含めたり、除外したりすることはできません。Similar-Items レシピや *More Like X* ドメインユースケースなど、ドメインのユースケースやカスタムレシピが関連アイテムのレコメンデーションを生成する場合、レコメンデーションリクエストで指定したアイテムのプロパティに基づいて、フィルター式を使用してアイテムを含めたり除外したりできます。
+  **Users**: *アイテム*および*アクション*レコメンデーションの場合、Users データセットがあれば、`CurrentUser` に基づいてアイテムやアクションを除外したり含めたりできます。パーソナライズされたレコメンデーション、人気アイテム、およびアクションレコメンデーションの場合、これは、レコメンデーションを受けるユーザーです。関連アイテムの場合、これはレコメンデーションリクエストで指定できるオプションのユーザーです。

  *ユーザーセグメント*については、フィルター式を使用して、`Users.MEMBERSHIP_STATUS` などの属性に基づいてユーザーをユーザーセグメントに含めたり、ユーザーセグメントから除外したりできます。
+  **Actions**: フィルター式を使用して、特定のアクション条件に基づいて、アクションを含めたり除外したりします。Amazon Personalize は、`Action expiration timestamp` および `Repeat frequency` データに基づくアクションを自動的に除外します。このデータに基づいてフィルタリングする追加のカスタムフィルターを作成することはできません。

フィルター式の要素の詳細なリストについては、「[フィルター式の要素](creating-filter-expressions.md#filter-expression-elements)」を参照してください。フィルター式の例については、「[フィルター式の例](filter-expression-examples.md)」を参照してください。

**Topics**
+ [

# ガイドラインと要件
](filter-expression-guidelines-requirements.md)
+ [

# フィルター式の構造と要素
](creating-filter-expressions.md)
+ [

# フィルター式の例
](filter-expression-examples.md)

# ガイドラインと要件
<a name="filter-expression-guidelines-requirements"></a>

 フィルター式を作成するときは、以下のガイドラインと要件に注意してください。
+ フィルターを使用して、商品の説明などの構造化されていないテキストのアイテムメタデータに基づいてアイテムを含めたり、除外したりすることはできません。
+ アイテムまたはアクションインタラクションデータに基づいてフィルタリングする場合は、イベントタイプに基づいてのみフィルタリングできます。コンテキストメタデータなど、他のインタラクションメタデータに基づいてフィルタリングすることはできません。
+ Amazon Personalize は、イベントタイプが一致する場合にのみ大文字と小文字の区別を無視します。
+ アイテムインタラクションおよびアイテムデータセットを 1 つの式で使用することはできません。Interactions データセット、次に Items データセット (またはその逆) でフィルタリングするフィルターを作成するには、2 つ以上の式を連鎖する必要があります。詳細については、「[複数の式の組み合わせ](multiple-expression-example.md)」を参照してください。
+ アイテムインタラクションおよび Action データセットを 1 つの式で使用することはできません。アイテムインタラクションデータセットによってフィルタリングし、次に Action データセットでフィルタリングする (またはその逆の) フィルターを作成するには、2 つ以上の式を連鎖する必要があります。詳細については、「[複数の式の組み合わせ](multiple-expression-example.md)」を参照してください。
+ アイテムインタラクションフィルターは、[Item-Attribute-Affinity レシピ](item-attribute-affinity-recipe.md) と併用することはできません。
+  スキーマでブール型の値を使用してフィルタリングするフィルター式を作成することはできません。ブール値に基づいてフィルタリングするには、*String* 型のフィールドを持つスキーマを使用し、データの `"True"` および `"False"` の値を使用します。または、*int* もしくは *long* 型と `0` と `1` の値を使用できます。
+  1 つの条件式でも、複数の式を連結した場合でも、1 つのフィルターで使用できる個別のデータセットフィールドの最大数は **10** です。データセットグループ内のすべてのフィルターで使用できる個別のデータセットフィールドの最大数は **20** です。
+  CurrentItem 要素を使用してフィルターを適用できるのは、Similar-Items レシピや *More Like X* ドメインユースケースなど、ドメインのユースケースまたはカスタムレシピが関連アイテムのレコメンデーションを生成する場合に限られます。
+ NOT\$1IN 演算子を使用するフィルター式では、プレースホルダーパラメーターは使用できません。代わりに IN 演算子を使用し、その逆の Action を使用してください。例えば、Exclude の代わりに Include を使用してください (またはその逆)。
+ `Action expiration timestamp` および `Repeat frequency` データに基づいてフィルタリングするフィルターを作成することはできません。Amazon Personalize は、このデータに基づくアクションレコメンデーションを自動的にフィルタリングします。

# フィルター式の構造と要素
<a name="creating-filter-expressions"></a>

このセクションには、フィルター式の構造と要素に関する情報が含まれています。

**Topics**
+ [

## フィルター式の構造
](#filter-expression-structure)
+ [

## フィルター式の要素
](#filter-expression-elements)

## フィルター式の構造
<a name="filter-expression-structure"></a>

フィルター式の一般的な構造は次のとおりです。

```
EXCLUDE/INCLUDE ItemID/ActionID/UserID WHERE dataset type.field IN/NOT IN (value/parameter)
```

手動でフィルター式を作成するか、コンソールの[[Expression builder]](filter-real-time.md#using-filter-expression-builder) (式ビルダー) を使用して式の構文と構造に関するサポートを利用できます。

## フィルター式の要素
<a name="filter-expression-elements"></a>

次の要素を使用して、フィルター式を作成します。

**INCLUDE または EXCLUDE**  
フィルター基準を満たすアイテムのみにレコメンデーションを制限するために `INCLUDE` を使用するか、*または*フィルター基準を満たす、すべてのアイテムを削除するために `EXCLUDE` を使用します。

**ItemID/ActionID/UserID**  
これらの要素のいずれかを `INCLUDE` または `EXCLUDE` 要素の後で使用します。使用する要素は、アイテム (アイテムレコメンデーション)、アクション (アクションレコメンデーション)、またはユーザー (ユーザーセグメント) のどれをフィルタリングするかによって異なります。

**WHERE**  
アイテム、アクション、またはユーザーの条件を確認するには、`WHERE` を使用します。`WHERE` 要素は、`ItemID`、`ActionID`、または `UserID` の後で使用する必要があります。

**AND/OR**  
同じフィルター式内で複数の条件を連鎖させるには、`AND` または `OR` を使用します。`AND` または `OR` を使用して組み合わせられた条件は、最初の条件で使用されたデータセットのフィールドにのみ影響を及ぼすことができます。

**Dataset.field**  
`dataset`.`field` 形式でレコメンデーションをフィルタリングするデータセットとメタデータフィールドを指定します。例えば、Items データセットの genres フィールドに基づいてアイテムレコメンデーションをフィルタリングするには、フィルター式で Items.genres を使用します。

**IF 条件**  
`IF` 条件は、式の最後で 1 回**だけ、`CurrentUser` の条件をチェックするためにのみ**使用してください。ただし、`AND` を使用して `IF` 条件を拡張できます。

**CurrentUser.attribute**  
 レコメンデーションを取得しようとしているユーザーに基づいてアイテムのレコメンデーションをフィルタリングするには、IF 条件で**のみ、`CurrentUser` を使用してユーザーフィールドを指定します。例えば、`CurrentUser.AGE`。

**CurrentItem.attribute**  
 関連アイテムのレシピとユースケースにのみには、`CurrentItem`.`attribute` を使用して、関連商品のレコメンデーションのリクエストで指定した商品の属性に基づいて商品を絞り込むことができます。例えば、`CurrentItem.GENRE`、`CurrentItem.PRICE` です。  
 CurrentItem 要素を使用してフィルターを適用できるのは、Similar-Items レシピや *More Like X* ドメインユースケースなど、ドメインのユースケースまたはカスタムレシピが関連アイテムのレコメンデーションを生成する場合に限られます。`CurrentItem` 要素を含むフィルターを初めて作成する場合、フィルタの作成には数分かかることがあります。暗号化 AWS KMS に を使用する場合、フィルターの作成には最大 15 分かかることがあります。

**IN/NOT IN**  
`IN` または `NOT IN` を比較演算子として使用して、1 つ以上の文字列値の一致 (または不一致) に基づいてフィルタリングします。Amazon Personalize は、正確な文字列に対してのみフィルターを適用します。

**比較演算子**  
=、<、<=、>、>=、\$1= の各演算子を使用して、プレースホルダーパラメータで渡されたデータを含む数値データが等しいかどうかをテストします。

**アスタリスク (\$1) 文字**  
すべてのタイプのインタラクションを含めたり、除外したりするために `*` を使用します。`Interactions` データセットの `EVENT_TYPE` フィールドを使用するフィルター式に*のみ* `*` を使用します。

**パイプ区切り文字**  
パイプ区切り文字 (`|`) を使用して、複数の式を連鎖します。詳細については、「[複数の式の組み合わせ](multiple-expression-example.md)」を参照してください。

**パラメータ**  
比較演算子または `IN` 演算子を使用する式の場合、ドル記号 (\$1) とパラメータ名を使用して、プレースホルダーパラメータを値として追加します。例えば、`$GENRES`。この例では、レコメンデーションを取得する際に、フィルタリングする 1 つまたは複数のジャンルを指定します。  
パラメータ名は、式に追加するときに定義します。パラメータ名はフィールド名と一致する必要はありません。フィールド名に類似し、かつ、覚えやすいパラメータ名を使用することをお勧めします。レコメンデーションリクエストにフィルターを適用するときに、パラメータ名 (大文字と小文字が区別されます) を使用します。 AWS SDKS の使用時にプレースホルダーパラメータを含むフィルターを適用する方法を示す例については、「」を参照してください[フィルターの適用 (AWS SDKs)](filter-real-time.md#applying-filter-sdk)。

# フィルター式の例
<a name="filter-expression-examples"></a>

 次のセクションのフィルター式を使用して、独自のフィルター式を作成する方法について説明します。

**Topics**
+ [

# アイテムレコメンデーションのフィルター式の例
](item-recommendation-filter-examples.md)
+ [

# ユーザーセグメントのフィルター式
](user-segment-filter-examples.md)
+ [

# アクションレコメンデーションのフィルター式の例
](action-recommendation-filter-examples.md)
+ [

# 複数の式の組み合わせ
](multiple-expression-example.md)

# アイテムレコメンデーションのフィルター式の例
<a name="item-recommendation-filter-examples"></a>

以下のフィルター式は、アイテムインタラクション、アイテムメタデータ、およびユーザーメタデータに基づいてアイテムレコメンデーションをフィルタリングする方法を示しています。それらはデータ型別に編成されています。

**Topics**
+ [

## アイテムインタラクションデータ
](#item-interaction-filter-examples)
+ [

## アイテムデータ
](#item-filter-examples)
+ [

## ユーザーデータ
](#user-filter-examples)

## アイテムインタラクションデータ
<a name="item-interaction-filter-examples"></a>

次の式は、`$EVENT_TYPE` パラメータを使用してレコメンデーションを取得するときに指定する 1 つのイベントタイプ (クリックなど) または複数のイベントタイプに基づいてアイテムを除外します。

```
EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ($EVENT_TYPE)
```

 次の式は、ユーザーがクリックまたはストリーミングしたアイテムを除外します。

```
EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("click", "stream")
```

次の式は、ユーザーがクリックしたアイテムのみを含みます。

```
INCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("click")
```

## アイテムデータ
<a name="item-filter-examples"></a>

次の式は、`$CATEGORY` パラメータを使用してレコメンデーションを取得するときに指定する 1 つまたは複数のカテゴリに基づいてアイテムを除外します。

```
EXCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY)
```

次の条件式には、現在の商品 (関連商品レコメンドのリクエストで指定した商品) よりも安価で、現在の商品と同じスタジオで作成された商品のみが含まれます。CurrentItem 要素でフィルターを適用できるのは、ドメインのユースケースまたはカスタムレシピが関連商品のレコメンデーションを生成する場合だけです。

```
INCLUDE ItemID WHERE Items.PRICE < CurrentItem.PRICE AND Items.GENRE IN CurrentItem.GENRE
```

 次の式は、カテゴリ別フィールドの複数レベルに基づいてアイテムを除外します。CATEGORY\$1L1 の値が `shoe` のアイテムでも、CATEGORY\$1L2 の値が`boot` *ではない*アイテムは除外されます 

```
EXCLUDE ItemID WHERE Items.CATEGORY_L1 IN ("shoe") AND Items.CATEGORY_L2 NOT IN ("boot")
```

以下の式は、`$PRICE` パラメータを使用してレコメンデーションを取得する際に指定した価格以下の価格を持つアイテムのみを含めます。

```
INCLUDE ItemID WHERE Items.PRICE <= $PRICE
```

次の式には、レコメンデーションを取得するときに指定する (UNIX エポック時間) より前に作成されたアイテムのみが含まれます。

```
INCLUDE ItemID WHERE Items.CREATION_TIMESTAMP < $DATE
```

次の式は、`$GENRE` パラメータを使用してレコメンデーションを取得するときに指定した 1 つまたは複数のジャンルのアイテムのみを含みます。

```
INCLUDE ItemID WHERE Items.GENRE IN ($GENRE)
```

次の式には、現在のアイテムよりも高価*で*、指定したタイムスタンプ (UNIX エポック時間) よりも後に作成されたアイテムのみが含まれます。このフィルターは、関連商品のレコメンデーションを取得していて、価格やさまざまな作成日に基づいて特定のビジネスルールを適用したい場合に使用できます。

```
INCLUDE ItemID WHERE Items.PRICE < CurrentItem.PRICE AND Items.CREATION_TIMESTAMP > $DATE
```

## ユーザーデータ
<a name="user-filter-examples"></a>

次の式は、`$GENRE` パラメータを使用してレコメンデーションを取得するときに指定する 1 つまたは複数のジャンルのアイテムを除外しますが、現在のユーザーの年齢が、`$AGE` パラメータを使用してレコメンデーションを取得するときに指定する値と等しい場合に限ります。

```
EXCLUDE ItemID WHERE Items.GENRE IN ($GENRE) IF CurrentUser.AGE = $AGE
```

次の式は、現在のユーザーの年齢が `18` を超えている場合、CATEGORY\$1L1 向けの `watch`と CATEGORY\$1L2 向けの `luxury`を持つアイテムのみを含みます。

```
INCLUDE ItemID WHERE Items.CATEGORY_L1 IN ("watch") AND Items.CATEGORY_L2 IN ("luxury") IF CurrentUser.AGE > 18
```

# ユーザーセグメントのフィルター式
<a name="user-segment-filter-examples"></a>

以下のフィルター式は、アイテムインタラクションデータとユーザーメタデータに基づいてユーザーセグメントをフィルタリングする方法を示しています。それらはデータ型別に編成されています。

 **ユーザーデータ** 

次のフィルター式は、ユーザーセグメントを取得するときに指定した値と等しいメンバーシップステータスを持つユーザーのみを含みます。

```
INCLUDE UserID WHERE Users.MEMBERSHIP_STATUS IN ($MEMBERSHIP)
```

次のフィルター式は、ユーザーセグメントを取得するときに指定した値未満の `AGE` のユーザーを除外します。

```
EXCLUDE UserID WHERE Users.AGE < $AGE
```

 **アイテムインタラクションデータ** 

次のフィルター式は、アイテムをクリックまたは評価したユーザーのみを含みます。

```
INCLUDE UserID WHERE Interactions.EVENT_TYPE IN ("click", "rating")
```

以下のフィルター式は、ユーザーセグメントを取得するときに指定したイベントタイプとアイテムインタラクションしたユーザーセグメントからユーザーを除外します。

```
EXCLUDE UserID WHERE Interactions.EVENT_TYPE IN ($EVENT_TYPE)
```

# アクションレコメンデーションのフィルター式の例
<a name="action-recommendation-filter-examples"></a>

以下のフィルター式の例は、アクションインタラクションデータ、アクションデータ、およびユーザーデータに基づいてアクションをフィルタリングする方法を示しています。それらはデータ型別に編成されています。

**Topics**
+ [

## アクションインタラクションデータ
](#action-interaction-filter-examples)
+ [

## アクションデータ
](#action-filter-examples)
+ [

## ユーザーデータ
](#user-action-filter-examples)

## アクションインタラクションデータ
<a name="action-interaction-filter-examples"></a>

次のフィルター式は、レコメンデーションを取得するときに指定したイベントタイプを持ち、ユーザーがインタラクションしたアクションのみをレコメンデーションに含めます。

```
INCLUDE ActionID WHERE Action_Interactions.EVENT_TYPE IN ($EVENT_TYPE)
```

次のフィルター式は、ユーザーが実行していないアクションをイベントタイプに基づいて除外します。

```
EXCLUDE ActionID WHERE Action_Interactions.EVENT_TYPE IN ("NOT_TAKEN")
```

## アクションデータ
<a name="action-filter-examples"></a>

次の式は、`$CATEGORY` パラメータを使用してレコメンデーションを取得するときに指定する 1 つまたは複数のカテゴリに基づいてアクションを除外します。

```
EXCLUDE ActionID WHERE Actions.CATEGORY IN ($CATEGORY)
```

次の式は、レコメンデーションを取得するときに指定した値より大きい値を持つアクションのみを含めます。

```
INCLUDE ActionID WHERE Actions.VALUE > ($VALUE)
```

## ユーザーデータ
<a name="user-action-filter-examples"></a>

次の式は、現在のユーザーがプレミアムメンバーシップを持っている場合、プレミアムメンバー向けのアクションのみを含めます。

```
INCLUDE ActionID WHERE Action.MEMBERSHIP_LEVEL IN ("Premium") IF CurrentUser.MEMBERSHIP = $PREMIUM
```

次の式は、現在のユーザーがプレミアムメンバーの場合、レコメンデーションを取得するときに指定した値より小さい `VALUE` を持つアクションを除外します。

```
EXCLUDE ActionID WHERE Actions.VALUE < ($VALUE) IF CurrentUser.MEMBERSHIP = $PREMIUM
```

# 複数の式の組み合わせ
<a name="multiple-expression-example"></a>

パイプ区切り文字 (`|`) を使用して、複数の式を組み合わせます。1 つのフィルターを使用して、アイテムデータセットとアイテムインタラクションデータセット、またはアクションデータセットとアクションインタラクションデータセットをフィルタリングするときには、複数の式を組み合わせて使用します。各式は最初に独立して評価され、結果は 2 つの結果の和集合または共通部分のいずれかになります。以下の例は、Items データセットとアイテムインタラクションデータセット用の式を作成する方法を示していますが、Actions と Action interactions を扱う場合も同じルールが適用されます。

**マッチング式の例**

 両方の式が `EXCLUDE` を使用するか、両方の式が `INCLUDE` を使用する場合、結果は次のように 2 つの結果の和集合になります (A と B は異なる式です)。
+ `Exclude A | Exclude B` は `Exclude result from A or result from B` に等しい
+ `Include A | Include B` は `Include result from A or result from B` に等しい

次の例は、`INCLUDE` を使用する 2 つの式を組み合わせる方法を示しています。最初の式には、`$CATEGORY` パラメータを使用してレコメンデーションを取得するときに指定する 1 つまたは複数のカテゴリを持つアイテムのみが含まれます。2 番目の式は、ユーザーが `favorite` としてマークしたアイテムを含みます。レコメンデーションには、ユーザーがお気に入りとしてマークしたアイテムとともに、指定したカテゴリのアイテムのみが含まれます。

```
INCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY) | INCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("favorite")
```

**INCLUDE と EXCLUDE の例**

 1 つ以上の式が `INCLUDE` を使用し、もう 1 つの式が `EXCLUDE` を使用する場合、結果は次のように `INCLUDE` 式の結果から `EXCLUDE` 式の結果を減じたものとなります (A、B、C、および D は異なる式です)。
+ `Include A | Exclude B` は `Include result from A - result from B` に等しい
+  `Include A | Include B | Exclude C | Exclude D` は `Include (A or B) - (C or D)` に等しい 

式の順序は関係ありません。EXCLUDE 式が INCLUDE 式の前にあっても、結果は同じです。

次の例は、`INCLUDE` 式と `EXCLUDE` 式を組み合わせる方法を示しています。最初の式には、`$GENRE` パラメータを使用してレコメンデーションを取得するときに指定する 1 つまたは複数のジャンルを持つアイテムのみが含まれます。2 番目の式は、ユーザーがクリックまたはストリーミングしたアイテムを除外します。レコメンデーションには、これまでにクリックまたはストリーミングされていない、指定したジャンルのアイテムのみが含まれます。

```
INCLUDE ItemID WHERE Items.GENRE IN ($GENRE) | EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("click", "stream")
```