本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立資料集和結構描述
完成之後步驟 1:建立資料集群組,您就可以建立資料集了。資料集是用於資料的 Amazon Personalize 容器。建立資料集時,您也會建立資料集的結構描述。結構描述會告訴 Amazon Personalize 您的資料結構,並允許 Amazon Personalize 解析資料。
您可以使用 Amazon Personalize 主控台 AWS Command Line Interface (AWS CLI) 或 AWS 開發套件建立資料集。您無法在網域資料集群組中建立下一個最佳動作資源,包括「動作」和「動作互動」資料集。如需不同資料集類型以及資料集和結構描述需求的相關資訊,請參閱資料集和架構。
建立資料集和結構描述 (主控台)
如果這是資料集群組中的第一個資料集,您的第一個資料集類型將是 Item 互動資料集。若要在主控台中建立項目互動資料集,請指定資料集名稱,然後以 Avro 格式指定 JSON 結構定義。如果這不是您在此資料集群組中的第一個資料集,請選擇資料集類型,然後指定名稱和結構描述。
如需 Amazon Personalize 資料集和結構描述需求的資訊,請參閱資料集和架構。
若要建立資料集和結構描述
-
在 https://console.aws.amazon.com/personalize/home 打開 Amazon Personalize 化控制台並登錄到您的帳戶。
-
在 [資料集群組] 頁面上,選擇您在其中建立的資料集群組步驟 1:建立資料集群組。
-
在 [設定資料集] 中選擇 [建立資料集],然後選擇要建立的資料集類型。
-
選擇將資料直接匯入 Amazon Personalize 資料集,然後選擇下一步。
-
在資料集詳細資料中,對於資料集名稱,指定資料集的名稱。
-
在 [結構描述詳細資料] 中,對於 [結構描述] 選取項目,選擇現有的綱要或選擇 [建立
-
如果您要建立新結構定義,請在結構定義中貼上符合您資料的結構定義 JSON。使用中的範例結構描述做為指南。建立結構描述之後,就無法變更結構描述。
-
對於 New schema name (新建結構描述名稱),為新的結構描述指定名稱。
-
對於「標籤」,選擇性地新增任何標籤 如需標記 Amazon Personalize 資源的詳細資訊,請參閱標記 Amazon Personalize 化資。
-
選擇 [下一步],然後依照中準備和匯入大量資料的指示匯入資料。
建立資料集和結構描述 (AWS CLI)
若要使用建立資料集和結構描述 AWS CLI,您必須先定義 Avro 格式的結構描述,然後使用該CreateSchema作業將其新增至 Amazon Personalize。然後使用CreateDataset作業建立資料集。如需 Amazon Personalize 資料集和結構描述需求的資訊,請參閱資料集和架構。
若要建立結構描述和資料集
-
以 Avro 格式建立結構定義檔案,並將其儲存為 JSON 檔案。此檔案應根據您所建立的資料集類型 (例如互動)。
結構描述必須與資料中的欄相符,且結構描述name
必須與 Amazon Personalize 辨識的其中一種資料集類型相符。以下是最小項目互動資料集結構描述的範例。如需更多範例,請參閱結構描述。
{
"type": "record",
"name": "Interactions",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "USER_ID",
"type": "string"
},
{
"name": "ITEM_ID",
"type": "string"
},
{
"name": "TIMESTAMP",
"type": "long"
}
],
"version": "1.0"
}
-
透過執行下列命令在 Amazon Personalize 中建立結構描述。建立結構描述之後,就無法變更結構描述。以結構定義的名稱取代schemaName
,並取代file://SchemaName.json
為您在上一個步驟中建立的 JSON 檔案的位置。此範例會顯示屬於目前資料夾的檔案。
如果要為 Domain 資料集群組中的資料集建立結構描述,請新增domain
參數並將其設定為ECOMMERCE
或VIDEO_ON_DEMAND
。如需 API (匯入 API) 的詳細資訊,請參閱「CreateSchema」。
aws personalize create-schema \
--name SchemaName
\
--schema file://SchemaName.json
此時會顯示模式 Amazon 資源名稱 (ARN),如下列範例所示:
{
"schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/SchemaName"
}
-
執行以下命令來建立空的資料集。從上一個步驟提供資料集群組 Amazon 資源名稱 (ARN) 建立資料集群組 (AWS CLI) 和架構 ARN。資料集類型值可以是Interactions
Users
Items
、Actions
、、或Action_Interactions
。如需 API (匯入 API) 的詳細資訊,請參閱「CreateDataset」。
aws personalize create-dataset \
--name Dataset Name
\
--dataset-group-arn Dataset Group ARN
\
--dataset-type Dataset Type
\
--schema-arn Schema Arn
隨即顯示資料集 ARN,如下列範例所示。
{
"datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/DatasetName/INTERACTIONS"
}
-
記錄資料集 ARN 以供日後使用。建立資料集之後,您就可以匯入訓練資料了。請參閱準備和匯入大量資料。
建立資料集和結構描述 (AWS SDK)
若要使用 AWS SDK 建立資料集和結構描述,請先以 Avro 格式定義結構描述,然後使用該CreateSchema操作將其新增至 Amazon Personalize。建立結構描述之後,就無法變更結構描述。然後使用CreateDataset作業建立資料集。如需 Amazon Personalize 資料集和結構描述需求的資訊,請參閱資料集和架構。
若要建立結構描述和資料集
-
以 Avro 格式建立結構定義檔案,並將其儲存為工作目錄中的 JSON 檔案。
結構描述必須與資料中的欄相符,且結構描述name
必須與 Amazon Personalize 辨識的一種資料集類型相符。以下是最小項目互動資料集結構描述的範例。如需更多範例,請參閱結構描述。
{
"type": "record",
"name": "Interactions",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "USER_ID",
"type": "string"
},
{
"name": "ITEM_ID",
"type": "string"
},
{
"name": "TIMESTAMP",
"type": "long"
}
],
"version": "1.0"
}
-
使用下面的代碼創建一個模式。指定結構定義的名稱和結構定義 JSON 檔案的檔案路徑。
如果要為 Domain 資料集群組中的資料集建立結構描述,請新增domain
參數並將其設定為ECOMMERCE
或VIDEO_ON_DEMAND
。如需 API (匯入 API) 的詳細資訊,請參閱「CreateSchema」。
- SDK for Python (Boto3)
-
import boto3
personalize = boto3.client('personalize')
with open('schemaFile.json
') as f:
createSchemaResponse = personalize.create_schema(
name = 'schema name
',
schema = f.read()
)
schema_arn = createSchemaResponse['schemaArn']
print('Schema ARN:' + schema_arn )
- SDK for Java 2.x
-
public static String createSchema(PersonalizeClient personalizeClient, String schemaName, String filePath) {
String schema = null;
try {
schema = new String(Files.readAllBytes(Paths.get(filePath)));
} catch (IOException e) {
System.out.println(e.getMessage());
}
try {
CreateSchemaRequest createSchemaRequest = CreateSchemaRequest.builder()
.name(schemaName)
.schema(schema)
.build();
String schemaArn = personalizeClient.createSchema(createSchemaRequest).schemaArn();
System.out.println("Schema arn: " + schemaArn);
return schemaArn;
} catch(PersonalizeException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
return "";
}
- SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax.
import { CreateSchemaCommand } from
"@aws-sdk/client-personalize";
import { personalizeClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeClient = new PersonalizeClient({ region: "REGION"});
import fs from 'fs';
let schemaFilePath = "SCHEMA_PATH";
let mySchema = "";
try {
mySchema = fs.readFileSync(schemaFilePath).toString();
} catch (err) {
mySchema = 'TEST' // For unit tests.
}
// Set the schema parameters.
export const createSchemaParam = {
name: 'NAME', /* required */
schema: mySchema /* required */
};
export const run = async () => {
try {
const response = await personalizeClient.send(new CreateSchemaCommand(createSchemaParam));
console.log("Success", response);
return response; // For unit tests.
} catch (err) {
console.log("Error", err);
}
};
run();
Amazon Personalize 化返回新模式的 ARN。記錄它,因為您在下一步中將需要它。
-
使用作業建立資CreateDataset料集。下列程式碼會示範如何建立資料集。指定資料集群組的 Amazon 資源名稱 (ARN)、上一個步驟的結構描述 ARN,並指定資料集類型。資料集類型值可以是Interactions
Users
Items
、Actions
、、或Action_Interactions
。如需不同資料集類型的詳細資訊,請參閱資料集和架構。
- SDK for Python (Boto3)
-
import boto3
personalize = boto3.client('personalize')
response = personalize.create_dataset(
name = 'dataset_name
',
schemaArn = 'schema_arn
',
datasetGroupArn = 'dataset_group_arn
',
datasetType = 'dataset_type
'
)
print ('Dataset Arn: ' + response['datasetArn'])
- SDK for Java 2.x
-
public static String createDataset(PersonalizeClient personalizeClient,
String datasetName,
String datasetGroupArn,
String datasetType,
String schemaArn) {
try {
CreateDatasetRequest request = CreateDatasetRequest.builder()
.name(datasetName)
.datasetGroupArn(datasetGroupArn)
.datasetType(datasetType)
.schemaArn(schemaArn).build();
String datasetArn = personalizeClient.createDataset(request).datasetArn();
System.out.println("Dataset " + datasetName + " created. Dataset ARN: " + datasetArn);
return datasetArn;
} catch(PersonalizeException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
return "";
}
- SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax.
import { CreateDatasetCommand } from
"@aws-sdk/client-personalize";
import { personalizeClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeClient = new PersonalizeClient({ region: "REGION"});
// Set the dataset's parameters.
export const createDatasetParam = {
datasetGroupArn: 'DATASET_GROUP_ARN', /* required */
datasetType: 'DATASET_TYPE', /* required */
name: 'NAME', /* required */
schemaArn: 'SCHEMA_ARN' /* required */
}
export const run = async () => {
try {
const response = await personalizeClient.send(new CreateDatasetCommand(createDatasetParam));
console.log("Success", response);
return response; // For unit tests.
} catch (err) {
console.log("Error", err);
}
};
run();
建立資料集之後,您就可以匯入訓練資料了。請參閱準備和匯入大量資料。