

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为用户细分准备输入数据
<a name="prepare-input-data-user-segment"></a>

批量细分作业使用解决方案版本，根据您在输入 JSON 文件中提供的数据进行用户细分。在获取用户细分之前，您必须准备好 JSON 文件并将其上传到 Amazon S3 存储桶。我们建议您在 Amazon S3 存储桶中创建输出文件夹，或者使用单独的输出 Amazon S3 存储桶。然后，您可以使用相同的输入数据位置运行多个批量推理作业。

 如果您使用带有占位符参数的筛选器（如 `$GENRE`），则必须在输入 JSON 的 `filterValues` 对象中提供参数的值。有关更多信息，请参阅 [在您的输入 JSON 中提供筛选器值](filter-batch.md#providing-filter-values)。

**准备和导入数据**

1. 根据您的解决方案使用的食谱，设置批量输入数据的格式。用新行分隔输入数据元素。您的输入数据是 itemIds 列表 (Item-Affinity) 或物品属性列表 (Item-Attribute-Affinity)。
   + 对于物品属性，输入数据可以包括带有 `AND` 运算符的逻辑表达式，用于为每个查询获取多个物品或属性的用户。有关更多信息，请参阅 [为 Item-Attribute-Affinity 配方指定物品属性](#specifying-item-attributes)。
   +  对于物品属性，使用 `\` 字符对输入数据中的任何特殊字符以及单引号或双引号进行转义。
   + 有关这两个配方的输入数据示例，请参阅[批量细分作业输入和输出 JSON 示例](#batch-segment-job-json-examples)。

1.  将您的输入 JSON 上传到 Amazon S3 存储桶中的输入文件夹。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[使用拖放功能上传文件和文件夹](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/upload-objects.html)。

1.  为输出数据创建一个单独的位置，可以是文件夹，也可以是其他 Amazon S3 存储桶。通过为输出 JSON 创建单独的位置，您可以使用相同的输入数据位置运行多个批量细分作业。

 准备好输入数据并将其上传到 Amazon S3 存储桶后，即可使用批量细分作业生成用户细分。有关更多信息，请参阅 [使用批量细分作业来获取用户细分](creating-batch-seg-job.md)。

**Topics**
+ [为 Item-Attribute-Affinity 配方指定物品属性](#specifying-item-attributes)
+ [批量细分作业输入和输出 JSON 示例](#batch-segment-job-json-examples)

## 为 Item-Attribute-Affinity 配方指定物品属性
<a name="specifying-item-attributes"></a>

如果您使用 Item-Attribute-Affinity 配方，则您的输入数据是物品属性列表。您可以混用不同列的元数据。例如，一行可能是数字列，下一行可能是类别列。不能使用非结构化文本物品元数据作为物品属性。

您的输入物品元数据可以包含带有 `AND` 运算符的逻辑表达式，用于获取多个属性的用户细分。例如，一行输入数据可能是 `{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\""}` 或 `{"itemAttributes": "ITEMS.genres = "\Comedy\" AND ITEMS.audience = "\teen\""}`。

当您将两个属性与 `AND` 运算符组合在一起时，您会根据用户交互历史记录创建用户细分，其中包含更有可能与同时具有这两个属性的物品进行交互的用户。与筛选器表达式（使用 `IN` 运算符表示字符串相等）不同，批量细分输入表达式仅支持字符串匹配的相等 `=` 符号。

## 批量细分作业输入和输出 JSON 示例
<a name="batch-segment-job-json-examples"></a>

对于批量细分作业，您的输入数据必须是 itemIds 列表（Item-Affinity 食谱）或物品属性列表 (Item-Attribute-Affinity)。每行输入数据都是一个单独的推理查询。根据每个用户与您库存物品交互的概率，按降序对每个用户细分进行排序。

 如果您使用带有占位符参数的筛选器（如 `$GENRE`），则必须在输入 JSON 的 `filterValues` 对象中提供参数的值。有关更多信息，请参阅 [在您的输入 JSON 中提供筛选器值](filter-batch.md#providing-filter-values)。

以下是按食谱组织的批量细分作业格式正确的 JSON 输入和输出示例。

**Item-Affinity**

------
#### [ Input ]

您的输入数据最多可有 500 个物品。用新行分隔每个 `itemId`，如下所示。

```
{"itemId": "105"}
{"itemId": "106"}
{"itemId": "441"}
...
```

------
#### [ Output ]

```
{"input": {"itemId": "105"}, "output": {"recommendedUsers": ["106", "107", "49"]}}
{"input": {"itemId": "106"}, "output": {"recommendedUsers": ["105", "107", "49"]}}
{"input": {"itemId": "441"}, "output": {"recommendedUsers": ["2", "442", "435"]}}
...
```

------

**Item-Attribute-Affinity**

------
#### [ Input ]

您的输入数据最多可以有 10 个查询，其中每个查询都是一个或多个非文本物品属性。用新行分隔每个属性或属性表达式，如下所示。

```
{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\""}
{"itemAttributes": "ITEMS.genres = \"Comedy\""}
{"itemAttributes": "ITEMS.genres = \"Horror\" AND ITEMS.genres = \"Action\""}
...
```

------
#### [ Output ]

```
{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\"", "output": {"recommendedUsers": ["25", "78", "108"]}}
{"itemAttributes": "ITEMS.genres = \"Adventure\"", "output": {"recommendedUsers": ["87", "31", "129"]}}
{"itemAttributes": "ITEMS.genres = \"Horror\" AND ITEMS.genres = \"Action\"", "output": {"recommendedUsers": ["8", "442", "435"]}}
...
```

------